【发布时间】:2013-01-05 04:14:35
【问题描述】:
我的目标是将python的机械化与tor SOCKS代理一起使用。
我没有使用带有以下 Ubuntu 版本的 GUI: 说明:Ubuntu 12.04.1 LTS 发布时间:12.04 代号:精确
根据 nmap 扫描,Tor 已安装并正在侦听端口 9050:
Starting Nmap 5.21 ( http://nmap.org ) at 2013-01-22 00:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000011s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
9050/tcp open tor-socks
我也认为我是否可以远程登录到端口 9050 是合理的,我可以:
telnet 127.0.0.1 9050
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
quit
Connection closed by foreign host.
我对这篇文章中的建议寄予厚望,让 tor 与 urllib2 一起工作: How can I use a SOCKS 4/5 proxy with urllib2?
所以我在python中尝试了以下脚本:
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://icanhazip.com').read()
脚本只是挂起,没有响应。
我认为由于 mechanize 似乎与 urllib2 有关,因此以下脚本可能会起作用:
import socks
import socket
import mechanize
from mechanize import Browser
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
br = Browser()
print br.open('http://icanhazip.com').read()
我使用 urllib2 脚本得到与上面相同的结果。
我对 python 和网络非常陌生,所以我需要关于如何让 python urllib2 在非 GUI Ubuntu 服务器上使用 tor 作为 SOCKS 的第二个意见。
我运行了这个脚本并收到了预期的响应。我没有使用 tor 代理:
In [1]: import urllib2
In [2]: print urllib2.urlopen('http://icanhazip.com').read()
xxxx:xxxx:xxxx:512:13b2:ccd5:ff04:c5f4
谢谢。
我发现了一些有用的东西!我不知道它为什么会起作用,但确实如此。我在这里找到了它: Python urllib over TOR?
import socks
import socket
def create_connection(address, timeout=None, source_address=None):
sock = socks.socksocket()
sock.connect(address)
return sock
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
# patch the socket module
socket.socket = socks.socksocket
socket.create_connection = create_connection
import urllib2
print urllib2.urlopen('http://icanhazip.com').read()
import mechanize
from mechanize import Browser
br = Browser()
print br.open('http://icanhazip.com').read()
【问题讨论】:
-
如果你解决了你的问题,你可以回答你自己的问题,这样其他人就不会进来尝试回答了!也就是说,我尝试了你所有的代码,它运行良好(即使你说的 sn-ps 也坏了)。也许您只是遇到网络问题?
-
我的第二种方法有效。第一种方法仍然挂起。所以我只使用第二种方法。
标签: networking ubuntu urllib2 mechanize tor