it-swarm.dev

Cambia l'indirizzo IP in modo dinamico?

Considera il caso, Desidero eseguire la scansione dei siti Web di frequente, ma il mio indirizzo IP è stato bloccato dopo un certo giorno/limite.

Quindi, come posso cambiare il mio indirizzo IP dinamicamente o altre idee?

36
Magendran V

Un approccio che usa Scrapy renderà l'uso di due componenti un RandomProxy e un RotateUserAgentMiddleware e la modifica di DOWNLOADER_MIDDLEWARES come segue:

DOWNLOADER_MIDDLEWARS

Dovrai inserire i nuovi componenti nello 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,

    }

Proxy casuale:
Questo componente elaborerà le richieste di Scrapy utilizzando un proxy casuale dall'elenco per evitare il divieto IP e migliorare la velocità di scansione. 

Maggiori dettagli qui: ( https://github.com/aivarsk/scrapy-proxies ) Puoi creare il tuo elenco di proxy da una rapida ricerca su internet. Copia i collegamenti nel file list.txt in base al formato dell'URL richiesto.

Rotazione del programma utente 

Per ogni richiesta scrapy verrà utilizzato un agente utente casuale da un elenco definito 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 )

34
aberna

Puoi provare a utilizzare i server proxy per evitare di essere bloccato. Esistono servizi che forniscono proxy di lavoro. Il migliore che ho provato è https://gimmeproxy.com - controllano spesso i proxy per vari parametri.

Per ottenere il proxy da loro, è sufficiente effettuare la seguente richiesta:

https://gimmeproxy.com/api/getProxy

Forniranno una risposta JSON con tutti i dati proxy che potrai utilizzare in seguito, se necessario:

{
  "supportsHttps": true,
  "protocol": "socks5",
  "ip": "179.162.22.82",
  "port": "36915",
  "get": true,
  "post": true,
  "cookies": true,
  "referer": true,
  "user-agent": true,
  "anonymityLevel": 1,
  "websites": {
    "example": true,
    "google": false,
    "Amazon": true
  },
  "country": "BR",
  "tsChecked": 1517952910,
  "curl": "socks5://179.162.22.82:36915",
  "ipPort": "179.162.22.82:36915",
  "type": "socks5",
  "speed": 37.78,
  "otherProtocols": {}
}

Puoi usarlo in questo modo con Curl:

curl -x socks5://179.162.22.82:36915 http://example.com
8
Andrey E

Se stai usando R, puoi eseguire il web che scorre attraverso TOR. Penso che TOR ripristini automaticamente il suo indirizzo IP ogni 10 minuti (?). Penso che ci sia un modo per forzare TOR a cambiare l'IP a intervalli più brevi, ma questo non ha funzionato per me. Invece è possibile impostare più istanze di TOR e quindi passare tra le istanze indipendenti (qui è possibile trovare una buona spiegazione su come impostare più istanze di TOR: https://tor.stackexchange.com/questions/2006/ how-to-run-multiple-tor-browsers-with-different-ips )

Dopo di ciò, puoi fare qualcosa di simile in R (usa le porte dei tuoi TOR indipendenti e un elenco di useragenti.) Ogni volta che chiami il ciclo di funzioni 'getURL' attraverso la tua lista di porte/useragenti

library(RCurl)

port <- c(a list of your ports)
proxy <- paste("socks5h://127.0.0.1:",port,sep="")
ua <- c(a list of your useragents)

opt <- list(proxy=sample(proxy,1),
            useragent=sample(ua,1),
            followlocation=TRUE,
            referer="",
            timeout=timeout,
            verbose=verbose,
            ssl.verifypeer=ssl)

webpage <- getURL(url=url,.opts=opt)
7
sambold

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 HMA! Il software Pro VPN e VPN4ALL supportano questa funzione. 

3
user12457
  • Prova una VPN. hidemyass.com è un'opzione semplice e gratuita
  • Prendi in prestito un altro computer
0

Parola di avvertimento sulle VPN, controlla attentamente i loro Termini e Condizioni perché lo scraping che li usa va contro la loro politica dell'utente (Uno di questi esempi sarebbe Astrill). Ho provato uno strumento di scraping e ho bloccato il mio account

0
Thomas meriaux

Se hai IP pubblici. Aggiungili sulla tua interfaccia e se stai usando Linux usa Iptables per cambiare gli IP pubblici.

Iptables regole di esempio per due IP

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.2

iptables -t nat -A POSTROUTING -m statistic --mode random --probability 0.5 -j SNAT --to-source 192.168.0.3

Se si hanno 4 IP, allora la probabilità diventerà 0,25.

Puoi anche creare il tuo proxy con semplici passaggi. 

Queste regole consentiranno al server proxy di cambiare l'IPS in uscita. 

0
Bilal Ali Jafri