Lors de l'écriture d'un robot pour explorer des données, en particulier lors de l'exploration d'une grande quantité de données, étant donné que de nombreux sites Web ont des mesures anti-crawler, il est facile de bloquer leur adresse IP et de ne pas pouvoir continuer à explorer. Cet article résume quelques contre-mesures sur la façon de résoudre ce problème. Ces mesures peuvent être utilisées seules ou en même temps pour de meilleurs résultats.
Définissez l'agent utilisateur dans l'en-tête de la demande sur l'agent utilisateur dans le navigateur pour simuler l'accès au navigateur. Par exemple :
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'} resp = requests.get(url,headers = headers)
# 比如: time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3] # 或: time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)
Si vous pouvez y accéder normalement depuis la page du navigateur, vous peut copier les cookies dans le navigateur et les utiliser, tels que :
cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd') resp = requests.get(url,cookies = cookies)
# 把浏览器的cookies字符串转成字典 def cookies2dict(cookies): items = cookies.split(';') d = {} for item in items: kv = item.split('=',1) k = kv[0] v = kv[1] d[k] = v return d
Remarque : Après avoir utilisé les cookies du navigateur pour lancer une demande, si la fréquence des demandes est trop fréquente, l'adresse IP sera toujours bloqué. Vous pouvez effectuer la vérification manuelle correspondante sur le navigateur (par exemple en cliquant sur l'image de vérification, etc.), puis vous pouvez continuer à utiliser le cookie pour lancer des demandes normalement.
vous permet d'utiliser plusieurs adresses IP proxy pour l'accès afin d'empêcher la même adresse IP d'initier trop de requêtes et de bloquer l'adresse IP, par exemple :
proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'} resp = requests.get(url,proxies = proxies) # 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/
【 Cours recommandé : Tutoriel vidéo Python]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!