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

使用Python Requests POST方法无法获取正确响应的技术求助

解决Python Requests POST无法获取302重定向的问题

我之前也碰到过一模一样的情况——用在线工具(比如hurl.it)能拿到正确的302重定向,但用Python Requests发起POST请求就不行。大概率是请求头、会话状态或者参数模拟得不够到位,咱们一步步来排查解决:

1. 补全所有关键请求头

很多网站会校验请求头里的浏览器标识、来源页面等信息,拒绝看起来像“爬虫”的请求。你需要把Firefox里抓到的所有请求头都模拟上,尤其是这几个核心字段:

  • User-Agent:一定要用真实浏览器的标识,别用Requests默认的
  • Referer:填你发起POST请求前所在的页面URL
  • Content-Type:对应表单提交的类型,一般是application/x-www-form-urlencoded

示例代码:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0',
    'Referer': 'http://www.bmf.com.br/你之前访问的页面地址',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    # 把Firefox开发者工具里看到的其他请求头也加进来
}

2. 用Session维持会话状态

浏览器发起请求时会自动携带之前页面设置的Cookie,而单独的POST请求不会。你需要用requests.Session()来模拟浏览器的会话,先访问前置页面获取必要的Cookie,再发起POST请求:

session = requests.Session()
# 先访问目标数据对应的页面,获取网站设置的Cookie
session.get('http://www.bmf.com.br/对应的数据页面URL')

# 构造请求参数(完全照搬Firefox里抓到的Form Data)
payload = {
    'param1': '你的参数值1',
    'param2': '你的参数值2',
    # 所有你排查到的请求参数都要填进来
}

# 发起POST请求,禁止自动重定向以便查看原始302响应
response = session.post(
    'http://www.bmf.com.br/arquivos1/lum-download_ipn.asp',
    data=payload,
    headers=headers,
    allow_redirects=False
)

# 查看Location头里的FTP地址
print("重定向地址:", response.headers.get('Location'))

3. 确保请求参数完全一致

仔细对比你代码里的payload和Firefox里抓到的Form Data,检查:

  • 参数名的大小写是否完全匹配
  • 参数值有没有编码错误(比如中文、特殊字符的编码)
  • 是否遗漏了某些隐藏参数(比如__VIEWSTATE、__EVENTVALIDATION这类动态生成的参数,如果有的话需要先从页面HTML里提取)

4. 检查重定向处理逻辑

Requests默认会自动跟随302重定向,但有时候网站的重定向地址是相对路径,或者需要手动拼接完整URL。用allow_redirects=False可以直接获取原始的302响应头,拿到Location后拼接成完整的FTP地址即可下载:

ftp_path = response.headers.get('Location')
full_ftp_url = f"http://www.bmf.com.br{ftp_path}"
# 用session下载文件
file_response = session.get(full_ftp_url)
# 保存文件
with open('PriceReport.ex_', 'wb') as f:
    f.write(file_response.content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:14:41