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

Python从网页下载ZIP文件遇302重定向无限循环问题求解

解决Caixa Loteria ZIP文件下载的302无限重定向问题

这个问题的核心是服务器会拒绝没有浏览器标识的请求,导致重定向循环。网站的反爬机制会校验请求的User-Agent头,默认的Python请求库(urllib/requests)不带这个头的话,服务器会反复重定向,最终触发无限循环错误。

下面是两种可行的解决方案:

方案1:使用requests库(推荐,更简洁)

requests默认会处理重定向,只要添加正确的请求头即可:

import requests

url = "http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 发送请求并允许重定向(默认开启)
response = requests.get(url, headers=headers, allow_redirects=True)

# 保存文件
with open("D_megase.zip", "wb") as f:
    f.write(response.content)

方案2:使用urllib库

如果坚持用urllib,需要手动添加请求头,并确保重定向处理正常:

from urllib.request import Request, urlopen

url = "http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 创建带请求头的请求对象
req = Request(url, headers=headers)
response = urlopen(req)

# 保存文件
with open("D_megase.zip", "wb") as f:
    f.write(response.read())

为什么这样能解决?

  • 添加User-Agent头模拟浏览器请求,让服务器认为这是合法的访问,不会触发异常重定向。
  • requests默认会自动处理302重定向,urllib的Request对象在带正确头的情况下也能正常跟随重定向,避免循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:27:37