使用Python Wrapper调用Chess.com API时触发403错误求助
解决Chess.com API wrapper调用get_leaderboards返回403的问题
问题分析
调用chessdotcom库的get_leaderboards函数时返回403状态码,响应提示"Enable JavaScript and cookies to continue",本质是Chess.com的API拦截了无浏览器标识的请求,将其判定为非合法客户端请求。
解决方案
通过给库配置自定义请求头,模拟浏览器的请求标识即可解决:
- 创建带有浏览器
User-Agent的requests.Session - 将该session配置到
chessdotcom的全局设置中
修改后的代码示例:
from chessdotcom import get_leaderboards, config import requests # 配置模拟浏览器的请求头 custom_session = requests.Session() custom_session.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" }) # 替换库默认的session config.session = custom_session def print_leaderboards(): try: data = get_leaderboards().json print("Success!") # 可添加打印数据的逻辑 # print(data) except Exception as e: print(f"错误详情: {e}") print_leaderboards()
补充说明
- 可以根据自己常用的浏览器调整
User-Agent的值,只要是标准的浏览器标识即可 - 如果后续仍出现403,可尝试在请求头中添加
Accept-Language等其他浏览器常用字段
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

