2015-07-26 9 views
5

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?

+0

Was meinen Sie mit systemweitem Proxy und wie konfigurieren Sie es? Wenn es eines gibt, sollten Sie es extrahieren und in urllib2 setzen. – helloV

+0

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

+0

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

Antwort

9

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

+1

tolle Antwort ... danke – Nickal

+0

@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

1

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.

Verwandte Themen