Python在线编译器与本地离线运行同一段requests代码输出结果不一致问题
问题排查方案
首先修正代码中的明显错误
你当前代码里的Referer字段和请求URL存在手动换行,会在字符串中插入多余的空白和换行符,导致请求格式异常。首先使用修正后的代码测试:
import requests import json print(requests.__version__) print(json.__version__) headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Host': 'www.soraredata.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Accept-Language': 'en-GB,en;q=0.9', 'Referer':'https://www.soraredata.com/player/1751286890093453768002188628460549415375229654518317941780411003457747672993', 'Connection': 'keep-alive', } req = requests.Request('GET', 'https://www.soraredata.com/api/players/info/1751286890093453768002188628460549415375229654518317941780411003457747672993', headers=headers) resp = requests.Session().send(req.prepare(), allow_redirects=True) print(resp.status_code) # 打印前500个字符的返回内容辅助排查 print(resp.text[:500])
后续排查方向
- 先确认修正代码后的返回状态码:403说明被反爬拦截,404说明URL错误,5xx说明服务端访问异常,SSL相关报错说明证书或TLS版本不匹配。
- 排查本地网络环境:关闭代理、VPN后重试,检查系统防火墙、杀毒软件是否拦截了requests的请求,也可以尝试用手机热点替换当前网络测试,排除本地IP被目标站点拉黑的可能。
- 补充反爬校验字段:目标站点有反爬机制,可以复制你浏览器正常访问该页面时的完整请求头替换代码里的headers,尤其是Cookie、Sec-*系列安全头字段。
- 排查SSL/TLS问题:如果运行报SSL相关错误,可以临时添加
verify=False参数测试(仅用于测试,生产环境不要使用),或者升级urllib3、requests依赖包的版本,更新本地根证书。 - 开启debug日志定位问题:在代码开头添加如下内容,运行后可以查看完整的请求和响应交互日志,定位具体错误点:
import logging import http.client http.client.HTTPConnection.debuglevel = 1 logging.basicConfig(level=logging.DEBUG)
内容的提问来源于stack exchange,提问作者Niccolò Simoni
相关产品推荐
相关产品推荐

