2015-03-04 19 views
31

Rozważmy przypadek, Chcę często indeksować witryny internetowe, ale mój adres IP został zablokowany po pewnym dniu/limicie.Zmieniaj adres IP dynamicznie?

Jak zatem zmienić adres IP dynamicznie lub w inny sposób?

Odpowiedz

0
  • Wypróbuj VPN. hidemyass.com jest jeden wolny, łatwy opcja
  • Pożycz inny komputer
24

Podejście za pomocą Scrapy uczyni korzystanie z dwóch składników RandomProxy i RotateUserAgentMiddleware i modyfikacja DOWNLOADER_MIDDLEWARES jak następuje:

DOWNLOADER_MIDDLEWARS

trzeba będzie wstawić nowe komponenty w 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, 

    } 

Losowe Proxy:
Ten komponent będzie przetwarzać żądania Scrapy użyciu losowo pełnomocnika z listy, aby uniknąć zakazu IP i poprawić szybkość indeksowania.

Więcej szczegółów tutaj: (https://github.com/aivarsk/scrapy-proxies) Możesz zbudować swoją listę proxy z szybkiego wyszukiwania w Internecie. Skopiuj linki w pliku list.txt zgodnie z żądanym formatem adresu URL.

Obrót agenta użytkownika

dla każdego żądania scrapy losowy kliencka będzie używany z listy można zdefiniować z góry

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" 
     ] 

Więcej szczegółów tutaj: (https://gist.github.com/seagatesoft/e7de4e3878035726731d)

+0

Dzięki za rozwiązanie, które pomaga mi dużo. Czy możesz tutaj wyjaśnić rolę DOWNLOADER_MIDDLEWARES? @aberna –

+0

W RotateUserAgentMiddleware, tylko jeden useragent przypisuje pająk, tzn. przeszukuję rekurencyjne wywołania, ponieważ każde połączenie, które chciałem zmienić User-Agent, nie ma miejsca w powyższym kodzie. Proszę pomóż mi. –

+0

jak zdobyć listę proxy? ktoś? help –

2

Niektóre aplikacje VPN umożliwiają automatyczną zmianę adresu IP na nowy losowy adres IP w określonych odstępach czasowych, takich jak: co 2 minuty. Zarówno oprogramowanie HMA! Pro VPN, jak i oprogramowanie VPN4ALL obsługują tę funkcję.