Python requests über Tor verwenden
Problem:
Du möchtest die Python-requests-Bibliothek über eine Tor-Verbindung unter Verwendung des Tor-eigenen SOCKS-Proxys verwenden.
Lösung
Stelle zunächst sicher, dass Tor tatsächlich läuft. Wir verwenden Port 9050 (der Standard) als SOCKS-Port für dieses Beispiel.
Leider unterstützt requests noch nicht nativ SOCKS-Proxys (siehe dieses Issue für Details). Daher musst du requesocks verwenden, einen recht alten Fork von requests. Beachte, dass du möglicherweise nicht alle kürzlich hinzugefügten requests-Methoden verwenden kannst.
Installiere requesocks durch Ausführen von pip install requesocks.
Hier ist ein kurzes Beispiel, das deine Tor-anonymisierte IP zurückgibt:
#!/usr/bin/env python
#Released under CC0
import requesocks
#Neues gewrapptes requests-Objekt initialisieren
session = requesocks.session()
#Tor für sowohl HTTP als auch HTTPS verwenden
session.proxies = {'http': 'socks5://localhost:9050', 'https': 'socks5://localhost:9050'}
#Seite abrufen, die die IP-Adresse anzeigt
response = session.get('http://httpbin.org/ip')
print(response.text)Beachte, dass requesocks derzeit nicht mit Python3 funktioniert. Als Alternative kannst du pycurl wie hier beschrieben oder SocksiPy als urllib2-Wrapper wie hier beschrieben verwenden.