在Ubuntu16.04下,如何设置Python通过系统默认代理访问网络?

火狐浏览器设置为“使用系统代理设置”之后,已经可以正常访问Google。
但是以下代码:
import requests

url1 = "https://storage.googleapis.com/cvdf-datasets/mnist/train-images-idx3-ubyte.gz"
url2 = "https://www.baidu.com"
url3 = "https://www.google.com.hk/"
resp = requests.get(url3)
print(resp.text)

返回错误信息:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.google.com.hk', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f36978edd30>: Failed to establish a new connection: [Errno 101] Network is unreachable',))

原因应该是Python未通过代理直接访问网络,那应该如何设置Python系统默认代理访问网络呢?

阅读 4.7k
2 个回答

如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:


import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

你也可以通过环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理。


$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"

$ python
>>> import requests
>>> requests.get("http://example.org")

补充一下,如果有搭过ss梯子,可以使用socks5代理

import requests

url = 'https://www.google.com'
proxies = {
    'http': 'socks5://127.0.0.1:1082',
    'https': 'socks5://127.0.0.1:1082'
}
res = requests.get(url, proxies=proxies)
print(res.text)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题