2015-06-15 10 views
9

Sto usando il pacchetto di richieste Python per inviare richieste http. Voglio aggiungere un singolo proxy all'oggetto di sessione delle richieste. per esempio.Come posso impostare un singolo proxy per un oggetto sessione richieste?

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

attualmente sto scorrendo una serie di deleghe, e ad ogni iterazione è realizzata una nuova sessione. Voglio solo impostare un singolo proxy per ogni iterazione.

L'unico esempio che vedo nella documentazione è:

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

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

Ho provato a seguire questa, ma senza alcun risultato. Ecco il mio codice dallo script:

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

ma ottengo un errore:

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

Come è possibile impostare una sola delega su un oggetto di sessione?

risposta

6

In effetti, hai ragione, ma è necessario garantire la vostra defination di 'line', ho provato questo, è ok:

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

Hai definire la linea come line = ' 59.43.102.33:80', v'è uno spazio la parte anteriore dell'indirizzo.

+0

C'è stato uno spazio all'inizio di ogni riga. Sono sempre le cose più semplici a ingannarmi di più. Grazie :) – Torra

28

Oltre a @neowu' risposta, se si desidera impostare un proxy per la durata di un oggetto di sessione, è possibile anche effettuare le seguenti operazioni -

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

Questo è un modo molto migliore per farlo. – BugHunterUK

+0

Grazie @BugHunterUK –

+0

Mille grazie! È la risposta migliore per me. Utilizzare i proxy in TUTTE le richieste successive –

Problemi correlati