如何查找并解码OddsPortal实时赔率URL中的secondary_id_code
解决OddsPortal单场实时赔率爬取中的secondary_id_code获取问题
我正在开发OddsPortal足球实时赛事赔率爬取项目,已通过以下代码获取实时赛事列表feed:
import requests url = "https://www.oddsportal.com/feed/livegames/liveOdds/0/0.dat?_=" response = requests.get(url) data = response.text
但单场赔率feed的URL结构为https://fb.oddsportal.com/feed/match/1-1-{match_id_code}-1-2-{secondary_id_code}.dat,其中match_id_code可从赛事列表feed中获取,secondary_id_code是类似%79%6a%39%64%39的URL编码字符串,无法从现有feed或单场页面HTML中找到,以下是获取并解码该字符串的可行方案:
1. 排查页面加载的JS资源
- 打开实时赛事页面,使用浏览器开发者工具(F12)切换到Network面板,筛选
JS类型资源 - 在资源内容中搜索赛事ID(如
AsILkjnd)或URL编码特征字符串,这类参数常被存放在全局配置变量中(如window对象下的属性)
2. 解析页面内嵌脚本
- 查看页面HTML中的
<script>标签,重点关注包含match、feed、id关键词的脚本块 - 示例:若脚本中存在
window.matchParams = { secondary: "yjbd1" }这类代码,直接提取对应值即可
3. 监控赛事详情页的AJAX请求
- 点击单场赛事进入详情页,在Network面板监控所有请求,查看是否有接口返回包含secondary_id_code的配置数据
- 部分网站会在进入赛事页时先请求一个初始化接口,返回后续赔率feed所需的参数
4. URL编码字符串解码验证
拿到疑似编码字符串后,用Python解码:
from urllib.parse import unquote encoded_str = "%79%6a%39%64%39" decoded_str = unquote(encoded_str) print(decoded_str) # 输出: yj9d9
注意事项
- OddsPortal有反爬机制,请求时需携带合法的
User-Agent、Cookie,必要时使用代理IP避免被封禁 - 若参数由JS动态生成,可使用Selenium或Playwright模拟浏览器渲染环境,执行JS后提取参数
内容的提问来源于stack exchange,提问作者Khaled Koubaa
相关产品推荐
相关产品推荐

