相关疑难解决方法(0)

如何在Python中通过Tor制作urllib2请求?

我正在尝试使用Python编写的爬虫来抓取网站.我想将Tor与Python集成,这意味着我想使用Tor匿名抓取该站点.

我试过这样做.它似乎不起作用.我检查了我的IP,它仍然与我使用tor之前的IP相同.我通过python检查了它.

import urllib2
proxy_handler = urllib2.ProxyHandler({"tcp":"http://127.0.0.1:9050"})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
Run Code Online (Sandbox Code Playgroud)

python tor

49
推荐指数
3
解决办法
4万
查看次数

Python urllib超过TOR?

示例代码:

#!/usr/bin/python
import socks
import socket
import urllib2

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, "127.0.0.1", 9050, True)
socket.socket = socks.socksocket

print urllib2.urlopen("http://almien.co.uk/m/tools/net/ip/").read()
Run Code Online (Sandbox Code Playgroud)

TOR在端口9050上运行SOCKS代理(默认值).该请求通过TOR,在我自己以外的IP地址上显示.但是,TOR控制台会发出警告:

"2月28日22:44:26.233 [警告]你的应用程序(使用socks4到端口80)只给Tor一个IP地址.做DNS解析的应用程序本身可能泄漏信息.考虑使用Socks4A(例如通过privoxy或socat).有关详细信息,请参阅 https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS."

即DNS查找不通过代理.但这就是setdefaultproxy应该做的第4个参数,对吧?

来自http://socksipy.sourceforge.net/readme.txt:

setproxy(proxytype,addr [,port [,rdns [,username [,password]]]])

rdns - 这是一个布尔标志,而不是修改DNS解析的行为.如果设置为True,则将在服务器上远程执行DNS解析.

选择PROXY_TYPE_SOCKS4和PROXY_TYPE_SOCKS5时效果相同.

它不能是本地DNS缓存(如果urllib2甚至支持它),因为当我将URL更改为此计算机以前从未访问过的域时会发生这种情况.

python urllib2 tor socks

17
推荐指数
2
解决办法
2万
查看次数

Python使用urllib2启动请求时无法使用Tor检查

在阅读了StackOverflow上的其他 问题后,我得到了一段Python代码,可以通过Tor代理发出请求:

import urllib2
proxy  = urllib2.ProxyHandler({'http':'127.0.0.1:8118'})
opener = urllib2.build_opener(proxy)
print opener.open('https://check.torproject.org/').read()
Run Code Online (Sandbox Code Playgroud)

由于Tor使用TorButton在Firefox中运行良好,我希望它能在Python中正常工作.不幸的是,包含在乱七八糟的HTML中:Sorry. You are not using Tor.我不确定为什么会这样,或者如何让Tor正常工作urllib2.

python security urllib2 tor

4
推荐指数
1
解决办法
742
查看次数

标签 统计

python ×3

tor ×3

urllib2 ×2

security ×1

socks ×1