Changer d'adresse IP dynamiquement?
prenons le cas, Je veux parcourir les sites Web fréquemment, mais mon adresse IP a été bloquée après un certain jour / limite.
alors, comment changer mon adresse IP dynamiquement ou toute autre idée?
7 réponses
une approche utilisant Scrapy fera usage de deux composants a RandomProxy
et a 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,
}
Aléatoire Proxy:
Cette composante permettra de processus Les requêtes Scrapy utilisant un proxy aléatoire de la liste pour éviter l'interdiction IP et améliorer la vitesse de rampement.
plus de détails ici: ( https://github.com/aivarsk/scrapy-proxies ) Vous pouvez créer votre liste de mandataires à partir d'une recherche rapide sur internet. Copier les liens dans la liste.fichier txt en fonction de l'url demandée format.
Rotation de l'agent utilisateur
pour chaque requête scrapy un agent d'utilisateur aléatoire sera utilisé à partir d'une liste que vous définissez à l'avance
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 )
si vous utilisez R, Vous pouvez faire le Web en rampant à travers TOR. Je pense que TOR réinitialise son adresse IP Toutes les 10 minutes(?) automatiquement. Je pense qu'il y a un moyen de forcer TOR à changer L'IP à intervalles plus courts, mais ça n'a pas marché pour moi. Au lieu de cela, vous pouvez configurer plusieurs instances de TOR et ensuite basculer entre les instances indépendantes (ici vous pouvez trouver une bonne explication de la façon de configurer plusieurs instances de TOR: https://tor.stackexchange.com/questions/2006/how-to-run-multiple-tor-browsers-with-different-ips )
après cela, vous pouvez faire quelque chose comme ce qui suit dans R (Utilisez les ports de vos navigateurs Tor indépendants et une liste d'utilisateurs. Chaque fois que vous appelez le cycle 'getURL' - fonction à travers votre liste de ports / agents 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)
Vous pouvez essayer d'utiliser des serveurs proxy pour éviter d'être bloqué. Il y a des services qui fournissent des procurations. Le mieux que j'ai essayé est https://gimmeproxy.com - ils vérifient souvent des mandataires pour divers paramètres.
pour obtenir un mandataire de leur part, vous n'avez qu'à faire la demande suivante:
https://gimmeproxy.com/api/getProxy
ils fourniront la réponse JSON avec toutes les données proxy que vous pouvez 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 ceci avec Curl:
curl -x socks5://179.162.22.82:36915 http://example.com
certaines applications VPN vous permettent de changer 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 supportent cette fonctionnalité.
- essayez un VPN. hidemyass.com est une option libre et facile
- emprunter un autre ordinateur
mot de mise en garde sur VPN, vérifier leurs Termes et Conditions soigneusement parce que le raclage les utiliser va à l'encontre de leur politique d'utilisateur ( un tel exemple serait Astrill). J'ai essayé un outil de raclage et j'ai eu mon compte bloqué
si vous avez des pi publiques. Ajoutez - les sur votre interface et si vous utilisez Linux utilisez Iptables pour changer ces IPs publics.
Iptables des exemples de règles pour les deux IPs
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 IPs alors la probabilité deviendra 0.25.
vous pouvez également créer votre propre mandataire avec des étapes simples.
ces règles permettront au serveur mandataire de changer son adresse IP sortante.