web-dev-qa-db-fra.com

Changer l'adresse IP dynamiquement?

Considérez le cas, Je veux analyser des sites Web fréquemment, mais mon adresse IP a été bloquée après un jour/une limite.

Alors, comment peut changer mon adresse IP dynamiquement ou d'autres idées?

36
Magendran V

Une approche utilisant Scrapy utilisera deux composants RandomProxy et RotateUserAgentMiddleware et la modification de DOWNLOADER_MIDDLEWARES comme suit:

DOWNLOADER_MIDDLEWARS

Vous devrez insérer les nouveaux composants dans le 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 aléatoire:
Ce composant traitera les requêtes Scrapy en utilisant un proxy aléatoire de la liste pour éviter l’interdiction IP et améliorer la vitesse d’analyse. 

Plus de détails ici: ( https://github.com/aivarsk/scrapy-proxies ) Vous pouvez construire votre liste de proxy à partir d’une recherche Internet rapide. Copier les liens dans le fichier list.txt en fonction du format d’URL demandé.

Rotation de l'agent utilisateur 

Un agent utilisateur aléatoire sera utilisé à partir d'une liste que vous avez définie à l'avance pour chaque demande simplifiée.

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

Plus de détails ici: ( https://Gist.github.com/seagatesoft/e7de4e3878035726731d )

34
aberna

Vous pouvez essayer d’utiliser des serveurs proxy pour éviter d’être bloqués. Il existe des services fournissant des mandataires actifs. Le meilleur que j'ai essayé est https://gimmeproxy.com - ils vérifient souvent les proxies pour divers paramètres.

Pour obtenir un proxy d'eux, il vous suffit de faire la demande suivante:

https://gimmeproxy.com/api/getProxy

Ils fourniront une réponse JSON avec toutes les données de proxy que vous pourrez utiliser plus tard, si nécessaire:

{
  "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": {}
}

Vous pouvez l'utiliser comme ça avec Curl:

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

Si vous utilisez R, vous pouvez effectuer une exploration du Web dans TOR. Je pense que TOR réinitialise automatiquement son adresse IP toutes les 10 minutes (?). Je pense qu’il ya un moyen d’obliger TOR à modifier l’IP plus rapidement, mais cela n’a pas fonctionné pour moi. Au lieu de cela, vous pouvez configurer plusieurs instances de TOR, puis basculer d’une instance à l’autre (vous trouverez ici une explication détaillée de la configuration de plusieurs instances de TOR: https://tor.stackexchange.com/questions/2006/ comment-exécuter-plusieurs-navigateurs-tor-avec-différents-ips )

Après cela, vous pouvez faire ce qui suit dans R (utilisez les ports de vos navigateurs TOR indépendants et une liste d'utilisateurs). Chaque fois que vous appelez la fonction 'getURL', parcourez votre liste de ports/d'utilisateurs.

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

Certaines applications VPN vous permettent de modifier automatiquement votre adresse IP en une nouvelle adresse IP aléatoire à un intervalle défini tel que: toutes les 2 minutes. Les deux HMA! Les logiciels Pro VPN et VPN4ALL prennent en charge cette fonctionnalité. 

3
user12457
  • Essayez un VPN. hidemyass.com est une option simple et gratuite
  • Emprunter un autre ordinateur
0
Jonathan Epstein

Avertissement concernant les VPN, vérifiez attentivement leurs conditions d'utilisation, car leur utilisation est contraire à leur politique d'utilisation (par exemple, Astrill). J'ai essayé un outil de scraping et j'ai bloqué mon compte

0
Thomas meriaux

Si vous avez des adresses IP publiques. Ajoutez-les sur votre interface et, si vous utilisez Linux, utilisez Iptables pour commuter ces adresses IP publiques.

Exemple de règles Iptables pour deux adresses 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

Si vous avez 4 adresses IP, les probabilités deviendront 0,25.

Vous pouvez également créer votre propre proxy en quelques étapes simples. 

Ces règles permettront au serveur proxy de basculer son IPS sortant. 

0
Bilal Ali Jafri