2015-02-14 10 views
21

Ich erhalte eine URL mit:Anfragen: Deaktivieren/Bypass Proxy

r = requests.get("http://myserver.com") 

Wie ich in der 'access.log' von "myserver.com" sehen kann, das System-Proxy-Client verwendet wird. Aber ich möchte die Verwendung von Proxies überhaupt mit requests deaktivieren.

+0

Hat Proxies = None auf die Anfrage Arbeit hinzufügen? – Lesleh

+0

@Lesleh, das ist der Standardwert für das Schlüsselwort 'proxies', was bedeutet, dass es das Verhalten überhaupt nicht ändert. –

+0

@Lesleh Ich habe das versucht und leider funktioniert es nicht. :( – t777

Antwort

49

Der einzige Weg, ich bin zur Zeit bewusst für Proxies völlig Deaktivierung ist die folgende:

  • eine Sitzung erstellen
  • Set session.trust_env zu False
  • Ihre Anfrage erstellen, dass die Sitzung mit
import requests 

session = requests.Session() 
session.trust_env = False 

response = session.get('http://www.stackoverflow.com') 

Dies basiert auf this comment by Lukasa und der (eingeschränkten) Dokumentation für requests.Session.trust_env.

Anmerkung: Einstellen trust_env zu False ignoriert auch die folgenden:

  • Authentifizierungsinformation von .netrc (code)
  • CA Bündel definiert in REQUESTS_CA_BUNDLE oder CURL_CA_BUNDLE (code)

Wenn Sie aber wollen nur Proxies für eine bestimmte Domäne (wie localhost) deaktivieren, können Sie die NO_PROXY environment variable verwenden:

import os 
import requests 

os.environ['NO_PROXY'] = 'stackoverflow.com' 

response = requests.get('http://www.stackoverflow.com') 
+0

Hat 'trust_env = False' irgendwelche anderen (Neben-) Effekte als Deaktivieren des Proxy? – t777

+2

@ t777 es tut tatsächlich - aktualisierte meine Antwort. –

+3

NO_PROXY ist die richtige Antwort – aaa90210

1

Anfragen Bibliothek Hinsicht Umgebungsvariablen. http://docs.python-requests.org/en/latest/user/advanced/#proxies

Versuchen Sie also, die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY zu löschen.

import os 
for k in list(os.environ.keys()): 
    if k.lower().endswith('_proxy'): 
     del os.environ[k] 
+0

Es überprüft definitiv nicht die Umgebungsvariablen auf einem Mac. –

19

Sie können Proxys für jede Anfrage auswählen. the docs aus:

import requests 

proxies = { 
    "http": "http://10.10.1.10:3128", 
    "https": "http://10.10.1.10:1080", 
} 

requests.get("http://example.org", proxies=proxies) 

So den Proxy zu deaktivieren, setzen Sie nur jeweils ein bis None:

import requests 

proxies = { 
    "http": None, 
    "https": None, 
} 

requests.get("http://example.org", proxies=proxies) 
+0

Haben Sie nach dem 2. Fall gesucht? In meinem Fall funktioniert es nicht, d. H. Es verwendet immer noch den System-Proxy. –

+0

@sonukumar Was meinst du mit "2. Fall?" – jtpereyda

+0

oh! Ich meine, mit Proxies Parameter Methode zu bekommen. –