mit tor als SOCKS5-Proxy mit Python urllib2 oder mechanisieren
Mein Ziel ist es, Pythons Mechanisierung mit einem SOCKS-Proxy zu verwenden.
Ich benutze keine GUI mit der folgenden Ubuntu-Version: Beschreibung: Ubuntu 12.04.1 LTS Release: 12.04 Codename: präzise
Tor ist installiert und überwacht Port 9050 gemäß dem nmap-Scan:
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
Ich fand es auch vernünftig zu sehen, ob ich zu Port 9050 telneten kann, was ich kann:
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.
Ich hatte große Hoffnungen auf den Vorschlag in diesem Beitrag, urllib2 zum Laufen zu bringen:Wie kann ich einen SOCKS 4/5 Proxy mit urllib2 verwenden?
Also habe ich folgendes Skript in Python ausprobiert:
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()
Das Skript hängt nur ohne Antwort.
Ich dachte, da mechanize mit urllib2 zu tun zu haben scheint, könnte das folgende Skript funktionieren:
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()
Ich erhalte das gleiche Ergebnis wie oben mit dem urllib2-Skript.
Ich bin sehr neu in Python und Networking, daher brauche ich eine zweite Meinung dazu, wie ich Python urllib2 dazu bringen kann, tor als SOCKS auf einem Ubuntu-Server ohne GUI zu verwenden.
Ich habe dieses Skript ausgeführt und eine erwartete Antwort erhalten. Ich habe den Tor-Proxy nicht benutzt:
In [1]: import urllib2
In [2]: print urllib2.urlopen('http://icanhazip.com').read()
xxxx:xxxx:xxxx:512:13b2:ccd5:ff04:c5f4
Vielen Dank.
Ich habe etwas gefunden, das funktioniert! Ich habe keine Ahnung, warum es funktioniert, aber es funktioniert. Ich habe es hier gefunden:Python-Urllib über 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()