2015-02-21 28 views
5

Ich muss bestätigen Wenn Stem verwendet werden kann, um einen Tor-Prozess zu starten, der 127.0.0.1:port verfügbar macht, dann benutze es für Selen-Skripte als Proxy (SOCKS).Selenium WebDriver + Tor als Proxy mit Stem?

Ich verwende Python 3.4.2, Stem 1.3.0 und Tor (tor-win32-tor-0.2.5.10 Experte Bundle) unter Windows.

Dieser Codeabschnitt funktioniert mit einem Standard-SOCKS-Proxy.

Aber ich kann es nicht schaffen, es mit Tor als mein Proxy zu arbeiten. Ich habe versucht, einen Tor-Prozess zu erstellen. Aber ich weiß nicht wirklich ob es richtig funktioniert. Ich habe nicht auf Fehler in meiner tor_error_log.txt

# File: stem_process.py 
import stem.process 
import stem 

stem.process.launch_tor_with_config(
    config = { 
    'SocksPort': '9000', 
    'ControlPort': '9051', 
    'ExitNodes': '{us}', 
    'Log': [ 
     'NOTICE stdout', 
     'ERR file c:\\tor-win32-tor-0.2.5.10\\Tor\\tor_error_log.txt', 
    ], 
    }, 
    tor_cmd = 'C:\\tor-win32-tor-0.2.5.10\\Tor\\tor.exe', 
) 

Dann habe ich versucht, zwei Möglichkeiten, um die Verbindung zu erstellen oder authentifizieren. Der erste verwendet with und stem.control.controller. Und der zweite auf einer niedrigeren Ebene mit stem.socket und stem.connection

Die erste:

# File: stem_test1.py 
from stem.control import Controller 

with Controller.from_port(address='127.0.0.1', port=9051) as controller: #port = 9051 
    controller.authenticate() 

    print("Tor is running version %s" % controller.get_version()) 

''' 
# Output: 
Tor is running version 0.2.5.10 (git-13318a95ddfbbf8d) 
''' 

Die zweite:

# File: stem_test2.py 
import sys 
import stem 
import stem.connection 
import stem.socket 

if __name__ == '__main__': 
    try: 
    control_socket = stem.socket.ControlPort(port = 9051) 
    stem.connection.authenticate(control_socket) 
    except stem.SocketError as exc: 
    print('Unable to connect to tor on port 9051: %s' % exc) 
    sys.exit(1) 
    except stem.connection.AuthenticationFailure as exc: 
    print('Unable to authenticate: %s' % exc) 
    sys.exit(1) 

    print("Issuing 'GETINFO version' query...\n") 
    control_socket.send('GETINFO version') 
    print(control_socket.recv()) 

''' 
# Output: 
Issuing 'GETINFO version' query... 

version=0.2.5.10 (git-13318a95ddfbbf8d) 
OK 
''' 

und beide laufen ohne Fehler ... Aber wenn ich den Code verwenden um die Firefox WebDriver-Instanz mit 127.0.0.1:9000 als Proxy aufzurufen (auch mit 127.0.0.1:9051 versucht, weil ich den Unterschied zwischen socksPort und controlPort nicht wirklich kenne) Es funktioniert nicht.

Antwort

0

Stem kann keinen tor-Prozess erstellen, es ist lediglich eine Bibliothek für die Verbindung mit einem vorhandenen tor-Server zur Inspektion/Steuerung über den Steuerport.

Um den tor-Prozess selbst zu erstellen, müssen Sie Ihr System mit upstart/launchctl/etc starten lassen. Alternativ können Sie einfach tor von der Befehlszeile eingeben, wenn es installiert ist und es im Vordergrund ausgeführt wird.

Um Stamm zu verwenden, müssen Sie Ihren Torrc zu a bearbeiten. Aktivieren Sie den ControlPort, und b. Legen Sie eine Authentifizierungsmethode fest (cookieauth oder hashed password in Ihrem torrc gespeichert). Der Standard für SocksPort ist 9050 und ControlPort ist 9051.

Der SocksPort ist derjenige, den Sie Ihren Verkehr (d. H. Firefox) routen, der ControlPort ist, was Sie verbinden, Stamm an. Wohlgemerkt, nur wenn du sogar einen Stem brauchst, da es so aussieht, als ob du damit eine Tor-Instanz starten willst (und das ist nicht machbar), wenn es auf deinem System-Vanille läuft, wird es funktionieren mit selen/firefox, wie Sie es konfiguriert haben (nun, Standard-Port ist 9050 nicht 9000)

+1

Danke für die Mühe, aber das ist nicht wahr. Stem ** CAN ** startet den Prozess und erstellt ein laufendes Instanz-TOR. Sie können es erstellen, indem Sie 'stem.process.launch_tor_with_config()' verwenden, auf diese Weise brauchen Sie nicht einmal eine Konfigurationsdatei, Sie übergeben die Konfiguration an die Funktion. Ich habe es unter Linux gemacht, aber meine Frage war für Windows. Was Sie über die Ports gesagt haben, ist richtig. Mehr: https://stem.torproject.org/api/process.html – Jeflopo