Ich möchte alle Python-Datenverkehr über einen HTTP-Proxy-Server übergeben, überprüft ich urlib2 und fordert Pakete zum Beispiel, können sie für die Verwendung von Proxys konfiguriert werden, aber wie könnte ich so etwas wie eine systemweite Proxy für Python Proxy-Daten verwenden aus?Wie übertrage ich alle Python-Traffics über einen HTTP-Proxy?
Antwort
Linux-System erste Export die Umgebungsvariablen wie diese
$ export http_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTP_PROXY="http://<user>:<pass>@<proxy>:<port>"
$ export https_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTPS_PROXY="http://<user>:<pass>@<proxy>:<port>"
oder im Skript, das yo wollen einen Proxy-Trog passieren
import os
proxy = 'http://<user>:<pass>@<proxy>:<port>'
os.environ['http_proxy'] = proxy
os.environ['HTTP_PROXY'] = proxy
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy
#your code goes here.............
dann Python-Skript laufen
$ python my_script.py
UP DATUM
Ein können Sie auch redsocks whith dieses Tool verwenden Sie lautlos alle TCP-Verbindungen zu einem PROXY mit oder ohne Authentifizierung umleiten. Aber Sie müssen aufpassen, denn es ist für alle Verbindungen nicht nur für die Python.
Windows-Systeme Sie Tools wie freecap, proxifier, proxycap und konfigurieren laufen hinter dem Python-Executable
tolle Antwort ... danke – Nickal
@efirvida Es funktioniert nicht in meinem Fall: https://stackoverflow.com/questions/48676514/how-to-resolve-proxy-error-in-reading-writing- to-hdfs-using-python Ich stieß auf Ihre Antwort, nachdem ich diese Frage gepostet habe. Ich habe versucht, die Proxies zu exportieren, wie Sie hier sagen, und dann os.environ ... Aber der Fehler bleibt bestehen. – Kristada673
Zwar verwenden können, ist dies nicht genau das, was Sie suchen, aber wenn Sie wissen, die programmatische Quelle all Ihrer Netzwerkverkehr in Ihrem Python-Code, können Sie diese Proxy-Wrapping in den Code selbst tun. mit dem PySocks
Modul in dem folgenden Link Eine reine Python-Lösung wird vorgeschlagen:
https://github.com/httplib2/httplib2/issues/22
import httplib2
# detect presense of proxy and use env varibles if they exist
pi = httplib2.proxy_info_from_environment()
if pi:
import socks
socks.setdefaultproxy(pi.proxy_type, pi.proxy_host, pi.proxy_port)
socks.wrapmodule(httplib2)
# now all calls through httplib2 should use the proxy settings
httplib2.Http()
Nun machte jeden Anruf verwendete, wird diese Proxy-Einstellungen verwenden. Sie sollten in der Lage sein, jedes Netzwerkmodul mit Sockets zu umbrechen, um diesen Proxy zu verwenden.
https://github.com/Anorov/PySocks
Sie erwähnen es, dass dies nicht zu empfehlen, aber es scheint für mich arbeiten gut zu werden.
Was meinen Sie mit systemweitem Proxy und wie konfigurieren Sie es? Wenn es eines gibt, sollten Sie es extrahieren und in urllib2 setzen. – helloV
Ich meine, ich möchte keinen Proxy für nur eine bestimmte Python-Bibliothek (wie Anfragen) verwenden, stattdessen möchte ich alle von Python stammenden Prozesse übergeben, die mein Skript über einen Proxy laufen lassen. – habedi
Ich denke, Sie versuchen, dies aus einer falschen Richtung zu nähern. Wenn Sie etwas wie "System Wide Proxy" benötigen, sollten Sie versuchen, dieses Problem auf Netzwerkebene zu lösen. Ich glaube nicht, dass es systemweite Konfigurationsdateien für urlib oder Anfragen Bibliotheken gibt. – Boris