2

我在我的系统上使用 Privoxy 设置了 TOR,该 Privoxy 已经过测试并且运行良好。我要做的是通过此设置代理 HTTPS 请求,以便这些 GET 和 POST 来自 TOR。以下是我可以生成的最简单的代码版本:

import requests
proxy = { 'http':'127.0.0.1:8118','https':'127.0.0.1:8118' }
r = requests.get('https://www.whatismyip.com/',proxies=proxy)
#r = requests.get('http://www.whatsmyip.org/')
print r

使用 HTTPS 时,我没有收到响应正文(r.content 为空白),但我确实收到了 200 状态代码,并且我可以在 Privoxy 日志中看到请求发出。我在这个线程上看到了一个错误,但似乎几个月前在 Requests 库中用this解决了这个问题。

我的 privoxy 设置是基本设置,并设置为在 localhost 上侦听,并添加了以下两行:

forward-socks4a / localhost:9050 .
forward-socks5 / localhost:9050 .

在这一点上,我不确定发生了什么,但我所做的一切似乎都不起作用。我在 Python 2.6.5 上使用最新的请求库和 urllib3。

4

2 回答 2

6

HTTPS 代理尚未被urllib3(由 使用requests)正确支持。

有关详细信息,请参阅请求问题 905urllib3 问题 50

于 2012-12-04T19:08:55.300 回答
1

Try requesocks,一个设计用于直接连接到 SOCKS 代理的分支requests(就像 Tor 一样,一开始就没有使用 Privoxy。如果你特别需要 Privoxy,你可能不走运,否则,请pip install requesocks替换

import requests

import requesocks
requests = requesocks.session()
requests.proxies = {"http": "socks5://127.0.0.1:8118",
                   "https": "socks5://127.0.0.1:8118"}

现在,该requests变量是一个会话(与requests.get()朋友一起),您可以以与直接导入完全相同的方式使用它requests

于 2016-01-26T04:28:56.900 回答