You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解码体育博彩API返回的编码字符串并转换赔率数值?

体育博彩API编码数据提取方案(Python实现)

已知信息整理

  • 待解码的Base64编码字符串:
CoEECv4DCvsDCgwKAjEyEgZGb3RiYWwYvwYi5wMKGAoDeDQ0Eg1NZXppbsOhcm9kbsOtGgIxMhLKAwrHAwoGeHgxMjc4EhhLdmFsaWZpa2FjZSBNUywgQ09OTUVCT0waA3g0NCqdAwjUt4wBEhVWZW5lenVlbGEgLSBBcmdlbnRpbmEiBwiAq6TFpzIqCDUzNjI0NjQ5Mt4CCDsSDkhsYXZuw60gc8Ohemt5GmoKCzJkMjIzNTI4MzQ5EgZaw6FwYXMyTwidi8tqEgZaw6FwYXMYkF8iEwoJNDg4Mzg5ODMyEgExHdejsEAiEwoJNDg4Mzg5ODMzEgEwHSlcf0AiEwoJNDg4Mzg5ODM0EgEyHbgexT9YAmACGm8KCzNkMjIzNTI4MzUwEgdEdm9qdGlwMlMInovLahIHRHZvanRpcBiSXyIUCgk0ODgzODk4MjgSAjEwHR+FC0AiFAoJNDg4Mzg5ODI5EgIxMh1I4Zo/IhQKCTQ4ODM4OTgzMBICMDIdheuRP1gBYAIabQoLNGQyMjM1MjgzNTESElPDoXprYSBiZXogcmVtw616eTJGCJ+Ly2oSElPDoXprYSBiZXogcmVtw616eRiTXyITCgk0ODgzODk4MzESATEdcT16QCITCgk0ODgzODk4MzUSATIdmpmZP1gBYAI6Bnh4MTI3OFADYL8G
  • 解码流程:Base64解码 → Protobuf解码 → 赔率数值转换
  • 赔率数值与十进制映射示例:
1085318103 = 5.52
1082088489 = 3.99
1069883064 = 1.54
1074496799 = 2.18
1067114824 = 1.21
1066527621 = 1.14
1081752945 = 3.91
1067030938 = 1.20
  • 关联接口:GetWebStandardEvents、GetWebStandardEventExt

Python实现步骤

1. 安装依赖

需要protobuf库,直接通过pip安装:

pip install protobuf

2. Base64解码

使用Python内置base64模块完成解码:

import base64

encoded_str = "CoEECv4DCvsDCgwKAjEyEgZGb3RiYWwYvwYi5wMKGAoDeDQ0Eg1NZXppbsOhcm9kbsOtGgIxMhLKAwrHAwoGeHgxMjc4EhhLdmFsaWZpa2FjZSBNUywgQ09OTUVCT0waA3g0NCqdAwjUt4wBEhVWZW5lenVlbGEgLSBBcmdlbnRpbmEiBwiAq6TFpzIqCDUzNjI0NjQ5Mt4CCDsSDkhsYXZuw60gc8Ohemt5GmoKCzJkMjIzNTI4MzQ5EgZaw6FwYXMyTwidi8tqEgZaw6FwYXMYkF8iEwoJNDg4Mzg5ODMyEgExHdejsEAiEwoJNDg4Mzg5ODMzEgEwHSlcf0AiEwoJNDg4Mzg5ODM0EgEyHbgexT9YAmACGm8KCzNkMjIzNTI4MzUwEgdEdm9qdGlwMlMInovLahIHRHZvanRpcBiSXyIUCgk0ODgzODk4MjgSAjEwHR+FC0AiFAoJNDg4Mzg5ODI5EgIxMh1I4Zo/IhQKCTQ4ODM4OTgzMBICMDIdheuRP1gBYAIabQoLNGQyMjM1MjgzNTESElPDoXprYSBiZXogcmVtw616eTJGCJ+Ly2oSElPDoXprYSBiZXogcmVtw616eRiTXyITCgk0ODgzODk4MzESATEdcT16QCITCgk0ODgzODk4MzUSATIdmpmZP1gBYAI6Bnh4MTI3OFADYL8G"
binary_data = base64.b64decode(encoded_str)

3. Protobuf解码

核心是获取正确的Protobuf定义文件(.proto),可通过分析接口响应结构或反编译二进制数据生成。假设已得到SportsBetting.proto,先编译为Python类:

protoc --python_out=. SportsBetting.proto

加载生成的类并解码二进制数据:

# 替换为实际生成的Protobuf类名
from SportsBetting_pb2 import WebStandardEvent

event_data = WebStandardEvent()
event_data.ParseFromString(binary_data)

4. 赔率数值转换

先基于示例做映射表,后续可通过更多样本推导精确公式:

def convert_odds(numeric_odds):
    odds_mapping = {
        1085318103: 5.52,
        1082088489: 3.99,
        1069883064: 1.54,
        1074496799: 2.18,
        1067114824: 1.21,
        1066527621: 1.14,
        1081752945: 3.91,
        1067030938: 1.20
    }
    # 临时公式,可根据更多样本优化
    return odds_mapping.get(numeric_odds, round((numeric_odds - 1073741824)/100000000 + 2, 2))

5. 提取并格式化数据

根据Protobuf结构提取赛事和赔率信息(需替换为实际字段名):

def extract_event_info(event):
    result = {
        "赛事名称": event.event_name,
        "赛事时间": event.event_time,
        "赔率详情": []
    }
    for odd in event.odds:
        result["赔率详情"].append({
            "投注选项": odd.option_label,
            "原始数值": odd.odds_value,
            "转换后赔率": convert_odds(odd.odds_value)
        })
    return result

# 执行提取
final_result = extract_event_info(event_data)
print(final_result)

关键提示

  • Protobuf定义是核心:如果没有官方.proto文件,可以用工具反编译二进制数据生成,或者分析接口返回的结构化数据反向推导字段结构。
  • 赔率公式优化:收集更多数值-赔率对,用线性回归等方法计算精确转换逻辑,替换临时公式。
  • 合规性:使用私有API需遵守网站服务条款,避免违规操作。

内容的提问来源于stack exchange,提问作者Gebic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:25:58