requests库请求未通过代理,求排查原因
requests库请求未通过代理,求排查原因
兄弟,我瞅了你的代码和问题输出,大概率是这几个地方出了问题,咱们一步步来排查:
代理配置不完整:你现在只给
http协议配置了代理,但你请求的https://httpbin.org/ip是HTTPS地址啊!requests的规则是,HTTP请求用http对应的代理,HTTPS请求得单独指定https的代理项。把你的proxy字典改成这样试试:proxy = { 'http': 'http://51.89.14.70:80', 'https': 'http://51.89.14.70:80' }大部分普通HTTP代理都支持转发HTTPS请求,所以直接填同一个地址就行。
先确认代理本身是否可用:说不定这个代理已经失效了?你可以用命令行先测一下,比如在终端跑:
curl -x http://51.89.14.70:80 https://httpbin.org/ip如果返回的IP不是你自己的,说明代理没问题;要是还是你的IP或者连不上,那得换个可用的代理了。
检查系统环境变量的干扰:有时候系统里提前设置了
HTTP_PROXY或者HTTPS_PROXY环境变量,requests会默认优先用这些,反而忽略你代码里写的配置。你可以在代码开头加几行临时清除这些变量的影响:import os os.environ.pop('HTTP_PROXY', None) os.environ.pop('HTTPS_PROXY', None)有没有可能代理需要认证?:如果这个代理是需要用户名密码才能用的,你现在的配置里没加认证信息,肯定连不上。这种情况下代理地址得写成:
http://用户名:密码@51.89.14.70:80。
先试试第一个方法,把HTTPS的代理加上,应该大概率能解决问题。要是还不行,再挨个排查后面的点~
备注:内容来源于stack exchange,提问作者user1573629
相关产品推荐
相关产品推荐

