关闭Ubuntu中的代理导致python网络请求失败

时间:2018-01-26 19:49:23

标签: python ubuntu http-proxy

我昨天在Ubuntu上设置了一个代理进行测试,并安装了一些单独的lib,包括用于fiddler的Linux构建的新证书。关闭所有代理设置(例如进入网络设置并关闭代理“系统范围”)后,我可以通过除python之外的所有工具正常访问网络。浏览器工作正常,我可以ping端点,我可以使用wget和curl没有任何问题,但python的网络设置似乎搞砸了。

这是我运行pip install -U pyopenssl时的输出:

$ pip install -U pyopenssl
Collecting pyopenssl
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd58dfd0>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd58db10>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
  ...
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd595f90>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
  Could not find a version that satisfies the requirement pyopenssl (from versions: )
No matching distribution found for pyopenssl

运行一个简单的测试urllib2也失败了(urllib2.URLError :):

import urllib2

def internet_on():
    try:
        urllib2.urlopen('http://216.58.192.142', timeout=1)
        print "it worked!"
        return True
    except urllib2.URLError as err: 
        print "it did not work"

        return False

internet_on()

我使用的一些工具中的请求库也会立即失败:

requests.exceptions.ProxyError: HTTPConnectionPool(host='127.0.0.1', port=8888): Max retries exceeded with url: http://10.30.0.63/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4c9c327f90>: Failed to establish a new connection: [Errno 111] Connection refused',)))

我猜python认为我不再支持代理了。有没有办法调试或重置python的网络配置?

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用pip --trusted-host pypi.python.org和/或--proxy http://PROXYNAME.com

我在pip与系统代理交互方面有过类似的经历。我想pip看起来像pypi,命中代理,并且没有找到匹配的分布(逻辑上)。

完整命令看起来像:

pip install -U --trusted-host pypi.python.org --proxy http://PROXYNAME.com pyopenssl
如果您的代理干扰了证书,

Trusted host会有所帮助。

如果有帮助,请告诉我!另外,请检查env | grep proxy,以防万一您在环境中设置代理的方式有问题。

更一般地说,check out this question about handling proxies with urllib

答案 1 :(得分:0)

修正了问题。根据heemayl关于http_proxy变量的评论,我检查了bashrc中的环境变量,看到一个脚本可能添加了 http_proxy https_proxy ,其中urllib.getproxies( )使用。

删除这些行可解决问题。谢谢,heemayl。