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

Python requests配置HTTPS代理发起请求报错问题咨询

问题排查结论

核心原因基本是两个:一是你一开始的代理配置格式有问题,二是你用的免费HTTPS代理绝大多数本身就不可用。

配置格式的正确写法

requests的proxies字典规则很多人搞混:key对应的是你要访问的目标站点的协议,不是代理本身的协议:

  • 要访问HTTP站点,代理配置写在http键下
  • 要访问HTTPS站点,代理配置写在https键下

而键对应的value,必须写全代理本身的协议前缀,不能只写IP:端口。你第一次写"https" : "207.236.12.76:10458"就是缺了前缀,requests默认会按普通明文HTTP方式去连代理,发HTTPS请求时TLS握手直接失败,就抛你看到的SSLEOFError。

为什么加了前缀还是报错

你加了https://前缀之后报Tunnel connection failed: 403 Forbidden,说明你已经能连上这个代理的端口了,但代理直接拒绝了你的HTTPS转发请求,这就是免费代理的通病:

  • 免费代理存活时间极短,很多你爬取下来的时候就已经失效,要么端口关闭要么服务重启
  • 很多代理列表里标了HTTPS的代理,实际根本不支持CONNECT隧道方法,根本转发不了HTTPS流量,只能传HTTP请求,收到HTTPS转发请求直接返回403
  • 部分免费代理有IP白名单限制,只允许特定地区/特定IP段的用户使用,陌生IP访问直接拦截
  • 还有不少免费代理是蜜罐,根本不提供正常的代理转发服务,连上去只会返回错误

另外提个容易踩的坑:绝大多数能转发HTTPS流量的普通代理,本身和客户端之间是明文HTTP通信的,只是支持CONNECT隧道建立到目标站点的HTTPS连接,这种代理在配置时,https键对应的值应该加http://前缀,不是说访问HTTPS站点就必须给代理地址加https://前缀——只有代理本身和客户端通信也走TLS加密的时候,才需要加https://前缀,这类代理在免费池里几乎找不到。

快速验证方法

你可以拿确认可用的代理(比如自己搭建的、或者付费的高匿代理)用下面的代码测试,配置正确的话不会出现这两个报错:

import requests
from requests.exceptions import RequestException

# 测试时代理地址记得补全前缀
proxies = [
    {"https": "http://代理IP:端口"},
    {"https": "https://代理IP:端口"}
]
url = "https://api.ipify.org?format=json"

for proxy in proxies:
    try:
        resp = requests.get(url, proxies=proxy, timeout=10)
        print(f"代理可用,返回IP:{resp.text}")
    except RequestException as e:
        print(f"代理不可用,错误信息:{str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:57:06