运行requests请求代码时遭遇requests.exceptions.ProxyError错误的解决方法
解决requests代理错误:代理仅支持HTTP不支持HTTPS的问题
错误原因
错误信息明确说明:你的代理仅支持HTTP协议,不支持HTTPS,但当前配置的代理使用了HTTPS协议,导致SSL版本不匹配,请求失败。
解决方案
修改代理协议为HTTP
无论你是通过代码指定代理还是环境变量配置,都需要将HTTPS代理的URL协议从https://改为http://:- 代码内指定代理示例:
import requests # 配置代理,注意https字段也用http开头的代理地址 proxies = { "http": "http://your-proxy-host:port", "https": "http://your-proxy-host:port" } response = requests.get("https://w3schools.com/python/demopage.htm", proxies=proxies) print(response.text) - 环境变量配置(Linux/macOS示例):
export http_proxy="http://your-proxy-host:port" export https_proxy="http://your-proxy-host:port"
原理:即使目标站点是HTTPS,只要代理本身是HTTP类型,就可以通过HTTP代理建立隧道连接到HTTPS站点,requests会自动处理这个过程。
- 代码内指定代理示例:
检查系统默认代理设置
如果代码中没有显式配置代理,可能是系统默认代理设置了HTTPS协议。进入系统网络设置,将代理地址改为http://开头的格式。验证代理可用性
先用curl测试代理是否能正常访问目标站点:curl -x http://your-proxy-host:port https://w3schools.com/python/demopage.htm如果curl请求成功,说明代理本身没问题,只需要调整代码或环境变量中的代理配置即可。
内容的提问来源于stack exchange,提问作者python_pi
相关产品推荐
相关产品推荐

