我的系统上有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日志中看到请求。我在this线程上看到了一个错误,但似乎几个月前在this的Requests库中已经解决了。
我的privoxy设置是基本设置,并通过添加以下两行来监听localhost:
forward-socks4a / localhost:9050 .
forward-socks5 / localhost:9050 .
此时我不确定发生了什么,但我所做的一切似乎都没有用。我在Python 2.6.5上使用最新的请求库和urllib3。
答案 0 :(得分:6)
urllib3
尚未正确支持HTTPS代理(由requests
使用)。
有关详细信息,请参阅requests issue 905和urllib3 issue 50。
答案 1 :(得分:1)
尝试requesocks
,一个requests
的分支,旨在直接连接到SOCKS代理(就像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
完全相同的方式。