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.
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