2015-06-15 16 views
9

Ich benutze das Paket Python-Anfragen, um HTTP-Anfragen zu senden. Ich möchte dem Anforderungssitzungsobjekt einen einzelnen Proxy hinzufügen. z.B.Wie kann ich einen einzelnen Proxy für ein Anforderungssitzungsobjekt festlegen?

session = requests.Session() 
session.proxies = {...} # Here I want to add a single proxy 

Zur Zeit durch ein Bündel von Proxys Ich Looping und bei jeder Iteration eine neue Sitzung hergestellt wird. Ich möchte nur einen einzelnen Proxy für jede Iteration festlegen.

Das einzige Beispiel, das ich in der Dokumentation zu sehen ist:

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

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

Ich habe dies zu folgen versucht, aber ohne Erfolg. Hier ist mein Code aus dem Skript:

# eg. line = 59.43.102.33:80 
r = s.get('http://icanhazip.com', proxies={'http': 'http://' + line}) 

Aber ich erhalte eine Fehlermeldung:

requests.packages.urllib3.exceptions.LocationParseError: Failed to parse 59.43.102.33:80 

Wie ist es möglich, einen einzelnen Proxy auf einem Session-Objekt zu setzen?

Antwort

6

In der Tat, Sie haben Recht, aber Sie müssen Ihre defination von ‚Linie‘ zu gewährleisten, habe ich schon versucht, diese, es ist ok:

>>> import requests 
>>> s = requests.Session() 
>>> s.get("http://www.baidu.com", proxies={'http': 'http://10.11.4.254:3128'}) 
<Response [200]> 

Haben Sie definieren die Zeile wie line = ' 59.43.102.33:80', gibt es einen Raum an die Vorderseite der Adresse.

+0

ein Leerzeichen am Anfang jeder Zeile Es gab. Es sind immer die einfachsten Dinge, die mich am meisten austricksen. Danke :) – Torra

28

Neben @neowu‘Antwort, wenn Sie einen Proxy für die gesamte Lebensdauer eines Sitzungsobjekts festlegen möchten, können Sie auch Folgendes tun -

import requests 
proxies = {'http': 'http://10.11.4.254:3128'} 
s = requests.session() 
s.proxies.update(proxies) 
s.get("http://www.example.com") # Here the proxies will also be automatically used because we have attached those to the session object, so no need to pass separately in each call 
+1

Dies ist ein viel besserer Weg, es zu tun. – BugHunterUK

+0

Danke @BugHunterUK –

+0

Vielen Dank! Es ist die bessere Antwort für mich. Verwenden Sie die Proxys in allen folgenden Anforderungen –

Verwandte Themen