2015-10-24 16 views
5

Ho iniziato a utilizzare ProxyMesh con Scrapy. ProxyMesh dovrebbe fornire un pool di indirizzi IP su una porta. Il codice di esempio riportato di seguito viene ripetuto in un ciclo, il middleware è abilitato e nel complesso ciò funziona correttamente. Posso rintracciare (e se sì - come?) Quale indirizzo IP viene utilizzato per ogni specifica richiesta?Verificare l'indirizzo IP utilizzato per una richiesta Python/Scrapy + ProxyMesh

request = scrapy.Request(producturl, self.parse_product_info) 
request.meta['proxy'] = 'http://uk.proxymesh.com:xxx' 
yield request 

Ho trovato post simili su SOF, ma non ho risposto a questa domanda specifica.

+1

forse proxymesh restituisce tali informazioni all'interno delle intestazioni, si potrebbe provare a stampare quello sulla risposta: 'print response.headers'. btw, [crawlera] (http://crawlera.com/) restituisce effettivamente il proxy utilizzato nelle intestazioni di risposta. – eLRuLL

+0

Questo è un buon suggerimento. C'è un'intestazione di risposta: X-Proxymesh-Ip. Sono stato in grado di analizzarlo come response.headers.get ('X-Proxymesh-Ip'). Mi vergogno se il fatto che ProxyMesh sia usato è visibile anche all'amministratore del sito, ed è possibile nasconderlo? – Turo

+1

ovviamente il sito saprà quale proxy (o IP) viene utilizzato per eseguire la scansione del proprio sito, ma che 'X-Proxymesh-Ip' viene restituito all'utente. Almeno così funziona [crawlera] (http://crawlera.com). – eLRuLL

risposta

3

Come specificato nei commenti, l'informazione arriva sulla intestazioni di risposta, basta controllare:

def parse_response(self, response): 
    print response.headers 

Si dovrebbe vedere la X-Proxymesh-Ip intestazione con delega concessa.

Un'altra alternativa potrebbe essere quella di utilizzare crawlera che offre ancora più funzionalità (come intestazioni, sessioni e gestione dei cookie) e una migliore documentazione.