You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python requests登录后访问搜索页重定向异常如何解决

问题根因
  • 直接POST登录接口只传了账号密码,缺少站点要求的CSRF校验令牌,请求没有真正完成登录,会话里没有有效登录态Cookie,访问需要权限的搜索页时会被站点强制重定向到落地页。POST请求不报错不代表登录成功,站点对无效登录请求一般不会返回4xx状态码,而是直接302跳转到公共页。
  • 代码里的搜索URL用了HTML转义字符&代替参数连接符&,会导致服务端解析参数异常,触发重定向规则。
  • 会话没有配置合法请求头,requests默认携带的python-requests标识会被站点的反爬机制直接识别为脚本请求,拦截正常响应。
修复方案
  • 先访问登录页获取初始Cookie,同时从登录页的HTML源码里提取隐藏的CSRF令牌,和账号密码一起组装到登录请求的表单参数里。
  • 给会话配置和真实浏览器一致的请求头,至少包含合法的User-Agent和Referer字段,模拟正常用户的访问行为。
  • 提交登录请求后先做登录态校验,比如访问个人中心页面,确认返回内容包含账号专属信息后再发起搜索请求,不要默认登录成功。
  • 搜索请求不要手动拼接带转义符的URL,直接通过requests的params参数传搜索条件,由框架自动完成参数拼接编码。
参考修复代码
import requests
from bs4 import BeautifulSoup

login_url = 'https://www.sevenfifty.com/user/sign_in'
search_url = 'https://buyer.sevenfifty.com/search'

# 替换为真实账号信息
login_payload = {
    'email': 'me@email.com',
    'password': 'oohlala'
}

# 替换为自己浏览器的真实请求头
common_headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Referer': 'https://www.sevenfifty.com/user/sign_in'
}

with requests.session() as s:
    # 先访问登录页,拿初始Cookie和CSRF令牌
    login_page_resp = s.get(login_url, headers=common_headers)
    login_soup = BeautifulSoup(login_page_resp.text, 'html.parser')
    # 从页面隐藏字段提取CSRF值,字段名以页面实际源码为准,Django站点默认是csrfmiddlewaretoken
    csrf_token = login_soup.find('input', attrs={'name': 'csrfmiddlewaretoken'}).get('value')
    login_payload['csrfmiddlewaretoken'] = csrf_token

    # 提交登录请求
    s.post(login_url, data=login_payload, headers=common_headers, allow_redirects=True)

    # 组装搜索参数,不用手动拼URL
    search_params = {
        'page': 1,
        'per_page': 10,
        'sort': 'score',
        'direction': 'desc',
        'query': 'skurnik',
        'previouslyOrdered': 'false'
    }
    search_resp = s.get(search_url, params=search_params, headers=common_headers)
    print(search_resp.url)
    # 后续正常解析search_resp.text即可

调试时可以打开浏览器开发者工具,对比手动登录时的请求和脚本发出的请求,逐行核对Cookie、请求头、表单字段,缺项补全即可,不要靠猜测接口要求的参数。

内容的提问来源于stack exchange,提问作者knickyknick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:06:25