# 懂球帝数据爬虫 专门用于采集懂球帝(dongqiudi.com)足球数据的高级爬虫框架,内置多层反爬绕过机制。 ## 功能特性 - **混合爬取引擎**: API 请求 → TLS 指纹伪装 → Playwright 浏览器自动化,三级降级 - **TLS 指纹伪装**: 基于 `curl_cffi` 模拟 Chrome/Edge 真实 JA3 指纹,绕过 TLS 检测 - **浏览器指纹池**: 50+ 指纹轮换,含 UA、Canvas、WebGL、屏幕分辨率等完整指纹 - **Playwright 隐身模式**: 移除 webdriver 痕迹、模拟人类鼠标/滚动行为 - **代理管理**: 代理池健康检测、自动轮换、按成功率排序 - **智能调度**: 高斯分布随机延迟、频率控制、自动退避重试 - **数据持久化**: MySQL 异步存储,UPSERT 避免重复 ## 数据采集范围 | 数据类型 | API 端点 | 说明 | |---------|---------|------| | 积分榜 | `/soccer/biz/data/standing` | 联赛积分排名 | | 赛程 | `/soccer/biz/data/schedule` | 比赛日程与比分 | | 比赛详情 | `/soccer/biz/data/match_detail` | 事件、阵容、统计 | | 比赛菜单 | `/api/v2/config/match_menu` | 联赛/赛事分类 | | 实时比赛 | `/soccer/biz/data/live` | 进行中的比赛 | | 新闻资讯 | `/api/v2/article/list` | 体育新闻列表 | ## 支持联赛 中超、中甲、亚冠、英超、西甲、德甲、意甲、法甲(可在配置文件中扩展) ## 安装 ```bash # 安装 Python 依赖 pip install -r requirements.txt # 安装 Playwright 浏览器(用于 Playwright 通道) playwright install chromium ``` ## 使用方法 ```bash # 测试连通性 python main.py test # 初始化数据库表 python main.py init-db # 采集所有联赛积分榜 python main.py standings # 采集所有联赛赛程 python main.py schedule # 采集积分榜 + 赛程 python main.py all # 采集比赛类型菜单 python main.py menu # 采集单个联赛 (通过 season_id) python main.py single 26322 # 启动定时调度 python main.py cron ``` ## 项目结构 ``` dongqiudi-crawler/ ├── config/ │ └── settings.yaml # 配置文件 ├── src/ │ ├── core/ # 核心模块 │ │ ├── config.py # 配置加载 │ │ ├── logger.py # 日志 │ │ └── exceptions.py # 异常定义 │ ├── anti_detect/ # 反检测模块 │ │ ├── fingerprint.py # 浏览器指纹生成与管理 │ │ ├── tls_client.py # TLS 指纹伪装 (curl_cffi) │ │ ├── proxy_manager.py # 代理池管理 │ │ └── stealth_browser.py # Playwright 隐身浏览器 │ ├── engine/ # 爬虫引擎 │ │ ├── api_client.py # aiohttp API 客户端 │ │ └── hybrid_engine.py # 混合引擎 (API+TLS+Playwright) │ ├── parser/ # 数据解析 │ │ └── data_parser.py # 懂球帝数据解析器 │ ├── storage/ # 数据存储 │ │ └── database.py # MySQL 异步存储 │ └── scheduler/ # 调度器 │ ├── task_runner.py # 任务运行器 │ └── cron_scheduler.py # 定时调度 ├── main.py # 主入口 ├── requirements.txt # Python 依赖 └── README.md ``` ## 反爬策略说明 ### 1. TLS 指纹伪装 懂球帝可能通过 JA3/JA4 指纹识别爬虫。`curl_cffi` 能完整模拟 Chrome 的 TLS 握手过程。 ### 2. 浏览器指纹轮换 每次请求使用不同的 User-Agent、Sec-Ch-Ua 等头部,避免被指纹追踪。 ### 3. 请求频率控制 高斯分布随机延迟(2-8秒),避免固定间隔被识别为机器人。 ### 4. Playwright 降级 当 API 直接请求被拦截时,自动降级到 Playwright 浏览器渲染,绕过 JS 挑战。 ## 配置说明 编辑 `config/settings.yaml` 可自定义: - 爬取模式: `api_only` / `playwright_only` / `hybrid` / `smart` - 延迟策略、重试次数、并发数 - 代理设置 - 目标联赛列表 - 数据库和 Redis 连接信息