如何使用Python Requests获取X-Livestreaming Auth值?调用Shopee接口返回错误码7913016求助
看起来你在调用Shopee直播的session接口获取X-Livestreaming Auth时碰上个服务端错误,我来帮你梳理下可能的问题和解决方向~
首先,错误码7913016对应的ErrorSVFailed是服务端处理失败的提示,大概率是你的请求不符合Shopee接口的验证要求,下面是几个重点排查方向:
Cookie过期或无效:你代码里的Cookie字段里的
SPC_F、SPC_CLIENTID这些都是会话关键凭证,有效期通常很短,很可能已经过期了。建议你打开浏览器的开发者工具(F12),找到对应直播页面的请求,复制最新的完整Cookie替换掉代码里的旧值,尤其是SPC_F这个字段,它是Shopee会话验证的核心之一。请求头不完整:对比浏览器正常请求该接口时的Request Headers,你可能漏掉了某些Shopee要求的自定义头。比如有些直播接口会要求
x-api-source、x-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




