使用PRAW调用Reddit API时出现请求头非法字符报错求助
问题分析与解决
错误原因
报错提示请求头值存在前导空格,这是因为Reddit API近期加强了请求头格式校验,不允许User-Agent字段包含前导空格、保留字符或换行符。你的情况是PRAW生成的User-Agent字符串开头多了一个空格,导致请求被拒绝。
解决方案
- 检查并修正USER_AGENT变量:确保你的
USER_AGENT值没有前导空格。比如如果之前是" MyApp/1.0",要改成"MyApp/1.0"。 - 升级PRAW到最新版本:旧版本PRAW可能存在User-Agent拼接逻辑的bug,执行以下命令升级:
pip install --upgrade praw - 显式指定完整合规的User-Agent:直接设置一个符合Reddit要求的User-Agent字符串,格式建议为
"应用名称/版本 (by u/你的Reddit用户名)",示例:reddit = praw.Reddit( client_id=CLIENT_ID, client_secret=CLIENT_SECRET, user_agent="SerieAHotScraper/1.0 (by u/YourUsername)", username=USERNAME, password=PASSWORD )
验证
修改后重新运行代码,遍历hot_posts时应该能正常获取帖子内容,不再触发请求头格式错误。
内容的提问来源于stack exchange,提问作者Allexj
相关产品推荐
相关产品推荐

