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

解决Chrome中可正常访问链接触发HTTP Error 400: Bad Request问题

解决HTTP Error 400: Bad Request的文件下载问题

首先,HTTP 400错误本质是你的请求不符合服务器的校验规则——既然浏览器能正常打开链接,那肯定是代码里的请求和浏览器的请求存在差异,光加User-Agent可能不够。给你几个针对性的排查方向和解决方案:

1. 模拟浏览器的完整请求头

浏览器发送的请求远不止User-Agent这一个字段,很多网站会校验Referer、Accept、Accept-Language这些参数,甚至部分网站会验证Cookie。你可以按这个步骤获取浏览器的真实请求头:

  • 打开浏览器按F12进入开发者工具,切换到Network标签页
  • 在浏览器里打开目标链接,找到对应的请求条目,查看Headers下的Request Headers
  • 把这些关键字段复制到代码里,让请求更贴近浏览器的行为

2. 改用requests库替代urllib

requests库比urllib更灵活,更容易模拟完整的请求逻辑。这里给你修改后的可运行代码示例:

import os.path
import requests
from urllib.parse import quote

# 从浏览器复制的请求头,按需调整字段
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    # 如果浏览器请求里有Referer,就把对应的地址加上
    # 'Referer': 'https://example.com/'
}

for link in links:
    link = link.strip()
    # 处理URL中的特殊字符(比如空格、中文),避免编码错误
    encoded_link = quote(link, safe=':/')
    name = encoded_link.rsplit('/', 1)[-1]
    filename = os.path.join('downloads', name)
    
    if not os.path.isfile(filename):
        print(f'Downloading: {filename}')
        try:
            # 允许自动处理重定向,设置超时避免卡壳
            response = requests.get(encoded_link, headers=headers, allow_redirects=True, timeout=10)
            response.raise_for_status()  # 主动抛出HTTP错误
            
            with open(filename, 'wb') as f:
                f.write(response.content)
        except requests.exceptions.RequestException as e:
            print(f'Error occurred: {e}')
            print('Continuing to next link...')

3. 排查URL编码问题

有些链接里可能包含空格、中文或者其他特殊字符,浏览器会自动对这些字符编码,但代码里直接使用原始链接会导致服务器无法识别。上面的代码用urllib.parse.quote处理了编码问题,确保URL格式符合规范。

4. 检查是否需要Cookie验证

如果目标网站需要登录才能访问,浏览器的请求会携带登录状态的Cookie,而代码里没有的话就会返回400。这种情况你可以把浏览器里的Cookie复制到headers中,或者用requests的Session对象来维持会话状态。

试试这些方法,应该能解决你的下载问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:28:52