DMf*_*fll 4 ubuntu networking mechanize urllib2 tor
我的目标是使用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
Run Code Online (Sandbox Code Playgroud)
我还认为我是否可以telnet到端口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.
Run Code Online (Sandbox Code Playgroud)
我非常希望在这篇文章中建议使用urllib2: 如何使用带有urllib2的SOCKS 4/5代理?
所以我在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()
Run Code Online (Sandbox Code Playgroud)
该脚本只是挂起而没有响应.
我认为,由于机械化似乎与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()
Run Code Online (Sandbox Code Playgroud)
我使用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
Run Code Online (Sandbox Code Playgroud)
谢谢.
我找到了有用的东西!我不知道它为什么会起作用,但确实如此.我在这里找到了: Python urllib超过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()
Run Code Online (Sandbox Code Playgroud)
见问题的结尾.
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()
Run Code Online (Sandbox Code Playgroud)