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

使用Python登录带条款同意复选框的AJAX网站时登录失败求助

问题原因

你无法成功登录的核心问题有3个:

  • 提交的登录payload缺少「同意条款」对应的参数
  • CSRF Token获取方式不符合站点要求,你直接从cookie提取token,但站点要求提交的是登录页HTML中隐藏表单字段内的token
  • 登录请求提交的地址错误,你代码中提交到了/Login/Check,但实际表单配置的提交地址是/Login/Login

代码修改方案

第一步:先确认同意条款对应的参数名

打开浏览器F12开发者工具,切换到「网络」选项卡,手动勾选同意框、输入账号密码点击登录,查看登录请求的Form Data部分,找到对应同意条款的参数键名,常见为agree、termsAgreed、IsAgree这类,值一般为on或true。

第二步:修改后的完整代码

from bs4 import BeautifulSoup as bs
import requests

URL = 'https://www.somesite.com/Login'
# 修正登录提交地址,和表单action保持一致
LOGIN_ROUTE = 'https://www.somesite.com/Login/Login'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.3'
HEADERS={'User-Agent':user_agent} 
s = requests.session()

# 先请求登录页面,提取表单中的CSRF Token
login_page_resp = s.get(URL, headers=HEADERS)
soup = bs(login_page_resp.text, 'html.parser')
csrf_token = soup.find('input', {'name': '__RequestVerificationToken'})['value']
print("\ncsrf_token " + csrf_token)

login_payload = {
        'Login.UserName': 'username',
        'Login.Password': 'password', 
        '__RequestVerificationToken': csrf_token,
        # 补充同意条款参数,参数名和值替换为你抓包拿到的实际内容
        'termsAgreed': 'on'
        }

login_req = s.post(LOGIN_ROUTE, headers=HEADERS, data=login_payload)

if login_req.status_code==200 and '请同意条款' not in login_req.text:
  print(str(login_req.status_code) + " login successful\n")
else:
  print(str(login_req.status_code) + " login unsuccessful")
  print(login_req.text)

额外说明

如果修改后仍然报错,可以把抓包拿到的所有Form Data参数都按键值对添加到login_payload中,确保提交的参数和浏览器手动提交的完全一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:18:03