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

requests.Session登录状态无法保持导致文件下载失败求助

问题:使用requests.Session登录Wibu网站后仍无法完成文件下载
  • 目标页面:https://www.wibu.com/fr/telechargements/developpeurs/programmes-developpeurs.html,需下载该页面的可执行文件
  • 操作流程:点击下载按钮会跳转至登录页面,登录成功后会重定向回下载页面
  • 遇到的问题:尝试多种POST/URL组合后,始终处于未登录状态,无法触发下载

当前使用的代码:

import requests
import os

s = requests.session()
headers = {
           "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0",
           'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'
          }
payload = {
            "user": "dupont",
            "pass": "a_password"
          }
r = s.post("https://www.wibu.com/us/secure-login.html?return_url=%2Fus%2Fsupport%2Fdeveloper%2Fdownloads-developer-software%2Ffile%2Fdownload%2F13734.html&cHash=f839c2633b7143d3fb47e9bf75f5851f", headers=headers, data= payload, allow_redirects=True)
print(response.status_code) # 变量名错误:response未定义,应替换为r
            
try:
    response.raise_for_status() # 变量名错误:response未定义,应替换为r
except requests.exceptions.HTTPError:
    print('oops bad status code {} on request!'.format(response.status_code))
else:
    print('our login redirected to: {}'.format(response.url))
            
r = s.get("https://www.wibu.com/us/support/developer/downloads-developer-software/file/download/13734.html?tx_wibudownloads_downloadlist%5BdirectDownload%5D=directDownload&tx_wibudownloads_downloadlist%5BuseAwsS3%5D=0&cHash=d5bbc5201225cca370f9e88cb726a93e", headers=headers, allow_redirects=True)
            
open(os.path.join(dest_path, "test.deb"), "wb").write(r.content)

解决建议

  • 核对登录请求参数
    打开浏览器开发者工具(F12-网络面板),监控真实登录请求的Form Data:

    • 确认用户名、密码的参数名是否正确(很多网站不会直接用user、pass,可能是username、password或者带前缀的字段,比如tx_wibusecurelogin[username])
    • 不要使用带return_url和cHash的临时登录URL,这类参数通常是一次性的,应该先GET登录页面(比如https://www.wibu.com/us/secure-login.html),获取页面中的必要字段后再提交登录
  • 提取并提交CSRF/隐藏字段
    登录页面一般会包含隐藏的CSRF Token或验证字段(比如_csrf、cHash),需要先请求登录页面,用BeautifulSoup等工具从HTML中提取这些字段,加入到POST的payload中一起提交

  • 完善请求头信息

    • 添加Referer字段,模拟真实浏览器的请求来源,比如登录请求的Referer设为登录页面的URL
    • 必要时可添加Accept-Language、Content-Type等字段,让请求更接近浏览器行为
  • 分步验证登录状态

    • 登录完成后,请求一个需要登录的页面(比如用户个人中心),检查响应内容是否包含登录后的标识(比如用户名),确认登录是否真的成功
    • 打印print(s.cookies)查看Session中的Cookie,确认是否存在登录相关的会话Cookie(比如PHPSESSID、auth_token)
  • 统一网站区域
    当前代码用的是us区域的URL,但目标下载页面是fr区域,部分网站会根据区域隔离会话,建议统一使用同一区域的URL(全用fr或全用us)

  • 修正代码中的变量错误
    代码中存在response未定义的问题,所有response都应该替换为r,否则会抛出NameError

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:36:02