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

Python编写Coolmod自动登录机器人时POST请求无法正常工作问题求助

coolmod站点自动登录失败排查修复方案

核心问题修复

1. 删除硬编码的Content-Length请求头

headers2中写死的Content-Length: '106'是浏览器单次请求的固定值,你代码中随机生成的隐藏字段名长度不固定,会导致实际payload长度和声明的长度不匹配,被服务端直接拒绝请求。requests会自动根据提交的payload计算正确的长度,直接删除headers2中的这一行即可。

优化逻辑降低出错概率

2. 避免硬编码索引提取隐藏字段

当前用findAll(...)[1]取第二个匹配的隐藏字段,页面结构稍有变动就会提取到错误的字段名,建议直接提取登录表单全部参数自动组装payload:

# 替换原有token提取、payload构造逻辑
login_form = soup.find('form', {'action': '/web/auth/login'})
payload = {}
for input_item in login_form.find_all('input', type=['hidden', 'checkbox']):
    if input_item.get('name'):
        payload[input_item['name']] = input_item.get('value', '')
# 覆盖账号密码字段
payload['jform[email]'] = '实际登录邮箱'
payload['jform[password]'] = '实际登录密码'
payload['remember-me'] = 'on'

3. 校验登录状态

登录成功后服务端会返回302跳转,可通过以下代码确认请求链路是否符合预期:

# 查看是否有302跳转记录
print(f"跳转历史: {r2.history}")
# 查看最终落地页地址
print(f"最终页面URL: {r2.url}")
# 打印session内存储的cookie确认是否拿到登录凭证
print(f"当前session Cookie: {s.cookies.get_dict()}")

可选排查手段

如果以上修复后仍无法登录,可开启requests调试日志,把打印的请求报文和浏览器提交的登录请求逐字段对比,排查漏传/错传的参数:

import logging
import http.client
http.client.HTTPConnection.debuglevel = 1
logging.basicConfig(level=logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

内容的提问来源于stack exchange,提问作者Luis Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:54:02