如何使用Selenium获取Opta赛事数据?解决10300错误及Sources访问问题
用Selenium获取Opta事件数据及scoresway.com爬取方案
一、获取api.performfeeds.com数据的核心思路
你在Sources面板看到的api.performfeeds.com数据,本质是浏览器发起网络请求后返回的资源,不需要直接操作Sources面板。用Selenium结合Chrome DevTools协议(CDP)就能捕获这些请求的响应体,绕过直接访问链接时的10300错误——该错误通常是因为请求缺少浏览器自动携带的验证参数,比如Cookie、Token。
具体实现步骤(Python示例)
- 初始化ChromeDriver时启用CDP网络监听
- 注册响应监听事件,过滤目标域名的请求
- 获取并解析响应体数据
from selenium import webdriver from selenium.webdriver.chrome.options import Options import json def capture_opta_data(): chrome_options = Options() # 可选:自动打开开发者工具,方便调试 chrome_options.add_argument("--auto-open-devtools-for-tabs") driver = webdriver.Chrome(options=chrome_options) # 启用网络监控 driver.execute_cdp_cmd("Network.enable", {}) # 监听响应完成事件,过滤目标域名 def on_response(response): response_url = response.get("response", {}).get("url", "") if "api.performfeeds.com" in response_url: request_id = response["requestId"] # 获取响应体内容 res_body = driver.execute_cdp_cmd("Network.getResponseBody", {"requestId": request_id}) try: opta_data = json.loads(res_body["body"]) # 在这里处理数据:保存到文件、分析等 print("成功捕获Opta事件数据") print(opta_data.keys()) except json.JSONDecodeError: print("响应体不是JSON格式") # 添加CDP监听 driver.add_cdp_listener("Network.responseReceived", on_response) # 访问scoresway的目标赛事页面 driver.get("https://www.scoresway.com/your-target-match-url") # 等待数据加载完成(可替换为显式等待,比如等待某个元素出现) input("确认数据加载后按回车退出...") driver.quit() if __name__ == "__main__": capture_opta_data()
二、scoresway.com爬取难点应对
scoresway的反爬机制主要集中在请求验证参数、行为检测和IP限制上,可通过以下方式破解:
- 模拟真实用户行为:用Selenium添加随机滚动、点击、延迟,避免固定访问模式;设置真实的User-Agent,不要用默认的ChromeDriver UA。
- 提取验证参数:通过CDP监听请求,复制请求头中的
Authorization、X-Session-Token等参数,后续可以直接用这些参数发起API请求(减少Selenium的性能开销)。 - 处理动态参数:如果请求中包含timestamp、sign等签名参数,在Sources面板找到生成这些参数的JS文件,逆向其加密逻辑,自己生成合法参数。
- IP轮换:如果出现IP封禁,使用代理池切换IP,避免单一IP频繁访问。
内容的提问来源于stack exchange,提问作者Kristian
相关产品推荐
相关产品推荐

