Python requests指定proxies仍使用公网IP而非代理的问题
问题原因及解决方法
你的问题核心是requests的proxies参数配置与请求协议不匹配:
- 你仅为
http协议配置了代理,但请求的是HTTPS协议地址https://ifconfig.me,requests会忽略HTTP代理,直接使用默认网络连接发起请求,因此返回了你的真实公网IP。 - curl的
--proxy参数默认对HTTP和HTTPS请求均生效,所以能正常通过代理访问目标地址。
解决方法
方法1:同时指定HTTP和HTTPS代理
修改proxies字典,为http和https两个协议都配置代理地址(注意代理地址需添加http://前缀):
import requests resp = requests.get( "https://ifconfig.me", proxies={ "http": "http://3.113.20.21:3128", "https": "http://3.113.20.21:3128" } ) print(resp.text)
方法2:使用通用代理配置(requests 2.10.0及以上版本支持)
通过"all://"键一次性为所有协议设置代理,简化配置:
import requests resp = requests.get( "https://ifconfig.me", proxies={"all://": "http://3.113.20.21:3128"} ) print(resp.text)
验证
修改后重新运行代码,请求结果会返回代理IP 3.113.20.21,与curl命令的输出一致。
内容的提问来源于stack exchange,提问作者src 203
相关产品推荐
相关产品推荐

