2015-03-04 38 views
31

Si consideri il caso, Desidero eseguire la scansione dei siti Web di frequente, ma il mio indirizzo IP è stato bloccato dopo qualche giorno/limite.Cambia l'indirizzo IP in modo dinamico?

Quindi, come è possibile modificare il mio indirizzo IP in modo dinamico o altre idee?

risposta

0
  • Provare una VPN. hidemyass.com è una libera scelta, facile
  • Borrow altro computer
24

Un approccio utilizzando Scrapy farà uso di due componenti un RandomProxy e RotateUserAgentMiddleware e la modifica di DOWNLOADER_MIDDLEWARES come segue:

DOWNLOADER_MIDDLEWARS

Si dovrà inserire i nuovi componenti nel settings.py

DOWNLOADER_MIDDLEWARES = { 
     'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 90, 
     'tutorial.randomproxy.RandomProxy': 100, 
     'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110, 
     'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None, 
     'tutorial.spiders.rotate_useragent.RotateUserAgentMiddleware' :400, 

    } 

a caso Proxy:
Questo componente sarà elaborare le richieste Scrapy utilizzando un proxy caso dalla lista per evitare il divieto IP e migliorare la marcia lenta.

Ulteriori dettagli qui: (https://github.com/aivarsk/scrapy-proxies) È possibile creare l'elenco dei proxy da una rapida ricerca su Internet. Copia i collegamenti nel file list.txt in base al formato dell'URL richiesto.

rotazione di user agent

Per ciascuna richiesta Scrapy un agente utente casuale sarà utilizzato da un elenco è possibile definire in anticipo

class RotateUserAgentMiddleware(UserAgentMiddleware): 
    def __init__(self, user_agent=''): 
     self.user_agent = user_agent 

    def process_request(self, request, spider): 
     ua = random.choice(self.user_agent_list) 
     if ua: 
      request.headers.setdefault('User-Agent', ua) 

      # Add desired logging message here. 
      spider.log(
       u'User-Agent: {} {}'.format(request.headers.get('User-Agent'), request), 
       level=log.DEBUG 
      ) 

    #the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape 
    #for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php 
    user_agent_list = [\ 
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"\ 
     "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",\ 
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",\ 
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",\ 
     "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",\ 
     "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",\ 
     "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",\ 
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\ 
     "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",\ 
     "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",\ 
     "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",\ 
     "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24" 
     ] 

Maggiori dettagli qui: (https://gist.github.com/seagatesoft/e7de4e3878035726731d)

+0

Grazie per la soluzione che mi aiuta molto. Puoi per favore elaborare il ruolo di DOWNLOADER_MIDDLEWARES qui. @aberna –

+0

In RotateUserAgentMiddleware, solo un utente sta assegnando uno spider, cioè sto eseguendo la scansione con le chiamate ricorsive, poiché ogni chiamata che volevo cambiare con User-Agent non sta accadendo con il codice precedente. Per favore aiutatemi. –

+0

come ottenere l'elenco dei proxy? nessuno? help –

2

Alcune applicazioni VPN ti consentono di cambiare automaticamente il tuo indirizzo IP in un nuovo indirizzo IP casuale a intervalli prestabiliti come: ogni 2 minuti. Entrambi i software HMA! Pro VPN e VPN4ALL supportano questa funzionalità.

Problemi correlati