使用Python Requests库登录Reddit遇404错误的技术问询
解决Reddit登录请求404的问题
必须更换登录URL,Reddit的表单登录接口不是你用的
https://www.reddit.com/login/,正确的提交地址是https://www.reddit.com/post/login(注意要用POST方法)。用Requests模拟Reddit登录还得注意几个核心点:
- 先请求登录页面,拿到
modhash和会话Cookie,这俩是登录必填的验证参数 - 表单提交字段除了账号(
username)、密码(password),还要带上modhash、dest(登录跳转目标)等隐藏字段 - 请求头要模拟真实浏览器,比如设置
User-Agent,避免被识别为爬虫
- 先请求登录页面,拿到
简易示例代码:
import requests # 初始化会话,维持Cookie session = requests.Session() 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' }) # 先访问登录页获取modhash login_page = session.get('https://www.reddit.com/login') modhash = session.cookies.get('modhash') # 构造登录表单数据 login_payload = { 'username': '你的账号', 'password': '你的密码', 'modhash': modhash, 'dest': 'https://www.reddit.com/' } # 提交登录请求 login_response = session.post('https://www.reddit.com/post/login', data=login_payload) # 验证登录状态 if login_response.status_code == 200 and '/logout' in login_response.text: print('登录成功') # 用会话请求需要登录权限的页面 target_page = session.get('https://www.reddit.com/user/你的用户名/') print(target_page.text) else: print('登录失败,检查参数或账号状态')
注意:Reddit反爬机制严格,频繁请求可能触发验证码或账号限制,建议添加请求间隔,必要时处理验证码环节。
内容的提问来源于stack exchange,提问作者wkde
相关产品推荐
相关产品推荐

