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

使用HTTP代理时Python Requests库报错问题求助

解决requests使用HTTP代理时的MaxRetryError问题

我来帮你排查下这个问题,从你给出的错误栈和代码来看,主要是这几个细节没处理好:

  • 代理地址包含换行符:你用readlines()读取proxies.txt时,每一行末尾都会自带换行符\n,直接拼接到代理地址里会导致请求时无法正确解析代理地址,这是最可能触发超时错误的原因。
  • 缺少异常处理机制:一旦某个代理连接失败,整个脚本就会直接崩溃,无法继续尝试其他代理。
  • 文件操作不规范:直接用open()打开文件却不关闭,可能会导致内容写入不及时或者资源泄漏。

下面是修改后的代码,我标注了关键改动:

import requests

# 用with语句读取代理文件,自动关闭资源
with open('proxies.txt', 'r') as f:
    # 遍历每一行,用strip()去掉换行和空白字符
    for proxy in f.readlines():
        proxy = proxy.strip()
        if not proxy:  # 跳过空行
            continue
            
        proxies = {
            'http': f'http://{proxy}',
            'https': f'http://{proxy}'
        }
        
        try:
            # 添加超时时间,避免无限等待
            response = requests.get('https://google.com/robots.txt', proxies=proxies, timeout=10)
            response.raise_for_status()  # 主动抛出HTTP状态码错误
            
            # 用with语句写入结果,更安全
            with open('uwu.txt', 'a', encoding='utf-8') as out_f:
                out_f.write(response.text + '\n\n')  # 加分隔符方便阅读
            print(response.text)
        except Exception as e:
            # 打印错误信息,方便排查哪个代理出问题
            print(f"使用代理 {proxy} 时出错: {str(e)}")
            continue

额外提醒几个点:

  1. 如果你的私有代理需要认证(比如user:pass@ip:port格式),要确保proxies.txt里的代理地址已经包含了认证信息,否则需要在代码里对应拼接。
  2. 可以先手动测试一个代理地址,比如把proxy变量直接设为"ip:port"(不带换行),看看能不能正常请求,确认代理本身的可用性。
  3. 给requests.get()加上timeout参数,避免脚本长时间卡在无响应的请求上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:18:11