<p>仔细阅读文档,您必须在字典中指定以下内容:</p>
<p><a href="http://docs.python-requests.org/en/master/user/advanced/#proxies" rel="nofollow noreferrer">http://docs.python-requests.org/en/master/user/advanced/#proxies</a></p>
<ul>
<li>使用代理的协议是什么</li>
<li>代理使用什么协议</li>
<li>代理的地址和端口</li>
</ul>
<p>“工作”dict应如下所示:</p>
<pre><code>proxies = {
'https': 'socks5://localhost:9050'
}
</code></pre>
<p>这将只代理所有<strong>https</strong>请求。这意味着它不会代理<strong>http</strong>。在</p>
<p>因此,要代理所有的网络流量,您应该如下配置dict:</p>
^{pr2}$
<p>当然,如果有必要,也可以用IP地址代替。其他情况请参见以下示例:</p>
<pre><code>$ python
>>> import requests
>>> proxies = {'https':'http://149.58.89.166:3128'}
>>> # Get a HTTP page (this goes around the proxy)
>>> response = requests.get("http://www.example.com/",proxies=proxies)
>>> response.status_code
200
>>> # Get a HTTPS page (so it goes through the proxy)
>>> response = requests.get("https://www.example.com/", proxies=proxies)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 70, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 485, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.example.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f7d1f448c10>: Failed to establish a new connection: [Errno 110] Connection timed out',)))
</code></pre>