You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python Requests获取X-Livestreaming Auth值?调用Shopee接口返回错误码7913016求助

如何使用Python Requests获取X-Livestreaming Auth值?调用Shopee接口返回错误码7913016求助

看起来你在调用Shopee直播的session接口获取X-Livestreaming Auth时碰上个服务端错误,我来帮你梳理下可能的问题和解决方向~

首先,错误码7913016对应的ErrorSVFailed是服务端处理失败的提示,大概率是你的请求不符合Shopee接口的验证要求,下面是几个重点排查方向:

  • Cookie过期或无效:你代码里的Cookie字段里的SPC_FSPC_CLIENTID这些都是会话关键凭证,有效期通常很短,很可能已经过期了。建议你打开浏览器的开发者工具(F12),找到对应直播页面的请求,复制最新的完整Cookie替换掉代码里的旧值,尤其是SPC_F这个字段,它是Shopee会话验证的核心之一。

  • 请求头不完整:对比浏览器正常请求该接口时的Request Headers,你可能漏掉了某些Shopee要求的自定义头。比如有些直播接口会要求x-api-sourcex-requested-with这类字段,把浏览器里所有的请求头都复制到代码里,确保和浏览器的请求完全一致。

  • Session ID不匹配:你的Referer里带的session=10918198要和当前直播页面的有效Session ID一致,并且要和Cookie的会话保持关联。如果这个Session ID已经失效,或者和Cookie不属于同一个会话,服务端也会拒绝处理请求。

这里给你调整后的代码示例,重点加了错误捕获和响应头打印(方便你找到X-Livestreaming Auth的位置,它可能在响应头或者响应体里):

import requests
import time

# 替换为浏览器最新的有效Cookie和对应直播页面的Session ID
url = "https://live.shopee.com.my/webapi/v1/session"
live_page_url = "https://live.shopee.com.my/pc/live-end?type=KOL&bgurl=my-11134104-7rasi-m78oyl6u95c95d&session=10918198"

headers = {
    "accept": "application/json, text/plain, */*",
    "accept-encoding": "gzip, deflate, br, zstd",
    "accept-language": "en,id;q=0.9,en-US;q=0.8",
    "client-info": "platform=9;device_id=qqOw7mwFnxIGOI90wsyLmqRHrsSke14o;language=en",
    # 务必替换为从浏览器复制的最新Cookie
    "cookie": "SPC_F=你的最新SPC_F值; REC_T_ID=最新REC_T_ID; _gcl_au=...; language=en; SPC_CLIENTID=最新SPC_CLIENTID",
    "referer": live_page_url,
    "sec-ch-ua": '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": '"Windows"',
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
    # 补充浏览器里看到的其他必要请求头,比如x-requested-with
    "x-requested-with": "XMLHttpRequest"
}

try:
    # 用Session保持会话,更贴近浏览器行为
    with requests.Session() as s:
        # 先访问直播页面预热会话,模拟真实浏览流程
        s.get(live_page_url, headers=headers)
        time.sleep(1)  # 加个小延迟,避免被反爬拦截
        
        response = s.get(url, headers=headers)
        response.raise_for_status()  # 主动抛出HTTP状态码错误

        # 先检查响应头里有没有X-Livestreaming Auth
        print("=== 响应头信息 ===")
        target_auth = None
        for key, val in response.headers.items():
            if "livestreaming" in key.lower():
                target_auth = val
                print(f"✅ 找到目标头:{key}: {val}")
            print(f"{key}: {val}")
        
        # 再检查响应体
        print("\n=== 响应体内容 ===")
        resp_data = response.json()
        print(resp_data)
        # 如果X-Livestreaming Auth在响应体里,根据返回结构提取,比如:
        # if 'auth_token' in resp_data.get('data', {}):
        #     print(f"✅ 找到X-Livestreaming Auth值:{resp_data['data']['auth_token']}")

except requests.exceptions.HTTPError as http_err:
    print(f"❌ HTTP请求错误:{http_err}")
    print(f"服务端返回内容:{response.text}")
except Exception as err:
    print(f"❌ 其他异常:{err}")

另外要注意,Shopee有比较严格的反爬机制,直接用脚本高频请求很容易被拦截。建议你在请求间添加1-2秒的延迟,并且尽量模拟浏览器的完整请求流程(比如先访问直播页面,再调用session接口),这样能降低被拦截的概率。

备注:内容来源于stack exchange,提问作者anggun

火山引擎 最新活动