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

使用Python Requests库自动化登录网站的302跳转异常排查

解决requests.Session登录返回200而非302的问题

问题根源分析

你遇到的200响应说明登录请求未被服务器认可,大概率是以下原因:

  • 未携带登录页面生成的CSRF令牌,服务器拒绝验证请求
  • 请求头缺失关键字段(比如User-Agent、Referer),被识别为非浏览器请求
  • 表单参数不全或字段名错误

修正后的代码实现

import requests
from bs4 import BeautifulSoup

# 初始化会话
session = requests.Session()

# 1. 先访问登录页面,获取CSRF令牌和必要Cookie
login_url = "https://www.tennisenpadelvlaanderen.be/login"
headers = {
    "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"
}
response = session.get(login_url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

# 提取页面中的CSRF令牌(根据实际表单字段调整)
csrf_token = soup.find("input", {"name": "csrf_token"})["value"]

# 2. 构造登录表单数据
login_data = {
    "email": "hoegje+pepepepe@gmail.com",
    "password": "PepePepe",
    "csrf_token": csrf_token,
    "submit": "Login"  # 补充表单提交按钮字段,按浏览器实际参数调整
}

# 3. 发送POST登录请求
post_headers = headers.copy()
post_headers["Referer"] = login_url  # 添加来源页头,模拟浏览器行为
login_response = session.post(login_url, data=login_data, headers=post_headers)

# 验证登录并获取目标页面
target_url = "https://www.tennisenpadelvlaanderen.be/dashboard/mijn-gegevens"
dashboard_response = session.get(target_url, headers=headers)

# 检查结果
if "mijn-gegevens" in dashboard_response.url:
    print("登录成功,目标页面内容片段:")
    print(dashboard_response.text[:500])
else:
    print(f"登录失败,登录请求状态码:{login_response.status_code}")
    print("登录响应内容片段:", login_response.text[:500])

关键注意事项

  • CSRF令牌匹配:打开浏览器开发者工具,查看登录表单的隐藏输入框name属性,若不是csrf_token需替换代码中的对应值
  • 请求头完整性:必须携带User-Agent,部分网站会拦截无UA的请求;Referer头可让服务器确认请求来源合法
  • 表单字段补全:查看浏览器网络面板中POST请求的Form Data,把所有字段(包括隐藏字段)都加入login_data
  • 重定向处理:requests.Session默认自动处理302重定向,若需查看重定向过程可设置allow_redirects=False手动跟进

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:15:06