Ihre Frage hat zwei Aspekte:
- Anfragen mit Tor stellen
- Erneuern der Verbindung nach Bedarf (in Ihrem Fall nach jeder Anfrage)
Teil 1
Die erste ist einfach mit der neuesten requests
Bibliothek (ab Version 2.10.0) zu erstellen, mit der zusätzlichen Anforderung requests[socks]
, den Socken-Proxy zu verwenden.
Installation -
pip install requests requests[socks]
Grundlegende Verwendung -
import requests
def get_tor_session():
session = requests.session()
session.proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
return session
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)
print(requests.get("http://httpbin.org/ip").text)
Teil 2
Um die Tor-IP zu erneuern, dh um eine neue sichtbare Exit-IP zu haben, müssen Sie in der Lage sein, über diese eine Verbindung zum Tor-Dienst herzustellen ControlPort
und dann ein NEWNYM
Signal zu senden .
Die normale Tor-Installation aktiviert die ControlPort
Standardeinstellung nicht. Sie müssen Ihre Torrc-Datei bearbeiten und die entsprechenden Zeilen auskommentieren .
ControlPort 9051
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
Bitte beachten Sie, dass das HashedControlPassword
oben Gesagte für das Passwort gilt "password"
. Wenn Sie ein anderes Kennwort festlegen möchten, ersetzen die HashedControlPassword
in der torrc durch Hinweis auf die Ausgabe von tor --hash-password "<new_password>"
wo <new_password>
ist das Passwort , das Sie einstellen möchten.
.................................................. ..............................
Warnung für Windows-Benutzer: siehe Beitrag hier .
In Windows tritt ein Problem auf, bei dem die Einstellung für den Steuerport in der Torrc-Datei ignoriert wird, wenn tor mit dem folgenden Befehl installiert wurde:
tor --service install
Geben Sie nach dem Bearbeiten Ihrer Torrc-Datei die folgenden Befehle ein, um das Problem zu beheben:
tor --service remove
tor --service install -options ControlPort 9051
.................................................. ..............................
Okay, jetzt, da wir Tor richtig konfiguriert haben, müssen Sie Tor neu starten, wenn es bereits läuft.
sudo service tor restart
Tor sollte jetzt auf dem 9051 betriebsbereit sein, ControlPort
über den wir Befehle an ihn senden können. Ich bevorzuge die offizielle Stammbibliothek , um Tor zu kontrollieren.
Installation -
pip install stem
Sie können jetzt die Tor-IP erneuern, indem Sie die folgende Funktion aufrufen.
IP erneuern -
from stem import Signal
from stem.control import Controller
def renew_connection():
with Controller.from_port(port = 9051) as controller:
controller.authenticate(password="password")
controller.signal(Signal.NEWNYM)
Um zu überprüfen, ob Tor eine neue Exit-IP hat, führen Sie einfach den Code aus Teil 1 erneut aus. Aus einem mir unbekannten Grund müssen Sie ein neues session
Objekt erstellen , um die neue IP zu verwenden.
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)