


Utilisation d'une adresse IP proxy et de stratégies anti-exploration dans le robot d'exploration Scrapy
Jun 23, 2023 am 11:24 AMUtilisez l'IP proxy et la stratégie anti-crawler dans Scrapy crawler
Ces dernières années, avec le développement d'Internet, de plus en plus de données doivent être obtenues via les robots d'exploration, et la stratégie anti-crawler pour les robots d'exploration est devenue de plus en plus stricte . Dans de nombreux scénarios, l’utilisation d’IP proxy et de stratégies anti-crawler sont devenues des compétences essentielles pour les développeurs de robots. Dans cet article, nous verrons comment utiliser l'IP proxy et les stratégies anti-exploration dans les robots Scrapy pour garantir la stabilité et le taux de réussite des données d'exploration.
1. Pourquoi devez-vous utiliser une IP proxy
Lorsque les robots visitent le même site Web, ils sont souvent identifiés comme la même adresse IP, qui peut facilement être bloquée ou restreinte. Pour éviter que cela ne se produise, une adresse IP proxy doit être utilisée pour masquer la véritable adresse IP, protégeant ainsi mieux l'identité du robot.
2. Comment utiliser l'IP proxy
L'utilisation de l'IP proxy dans Scrapy peut être réalisée en définissant l'attribut DOWNLOADER_MIDDLEWARES dans le fichier settings.py.
- Ajoutez le code suivant dans le fichier settings.py :
DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1, 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 'your_project.middlewares.RandomUserAgentMiddleware': 400, 'your_project.middlewares.RandomProxyMiddleware': 410, }
- Définissez la classe RandomProxyMiddleware dans le fichier middlewares.py pour implémenter la fonction IP proxy aléatoire :
import requests import random class RandomProxyMiddleware(object): def __init__(self, proxy_list_path): with open(proxy_list_path, 'r') as f: self.proxy_list = f.readlines() @classmethod def from_crawler(cls, crawler): settings = crawler.settings return cls(settings.get('PROXY_LIST_PATH')) def process_request(self, request, spider): proxy = random.choice(self.proxy_list).strip() request.meta['proxy'] = "http://" + proxy
Qui doit être définie dans les paramètres. py file Chemin d'accès à la liste d'adresses IP du proxy :
PROXY_LIST_PATH = 'path/to/your/proxy/list'
Lors de l'exécution de l'exploration, Scrapy sélectionnera au hasard une adresse IP de proxy pour l'accès, assurant ainsi la dissimulation de l'identité et le taux de réussite de l'exploration.
3. À propos des stratégies anti-crawler
À l'heure actuelle, les stratégies anti-crawler pour les sites Web sont très courantes, allant du simple jugement de l'agent utilisateur à des codes de vérification plus complexes et à la vérification à barre coulissante. Ci-dessous, nous verrons comment gérer plusieurs stratégies anti-exploration courantes dans les robots Scrapy.
- Anti-crawler User-Agent
Afin d'empêcher l'accès des robots, les sites Web déterminent souvent le champ User-Agent. Si le User-Agent n'est pas la méthode du navigateur, il sera intercepté. Par conséquent, nous devons définir un agent utilisateur aléatoire dans le robot d'exploration Scrapy pour éviter que l'agent utilisateur ne soit reconnu comme un robot d'exploration.
Sous middlewares.py, nous définissons la classe RandomUserAgentMiddleware pour implémenter la fonction User-Agent aléatoire :
import random from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware class RandomUserAgentMiddleware(UserAgentMiddleware): def __init__(self, user_agent): self.user_agent = user_agent @classmethod def from_crawler(cls, crawler): s = cls(crawler.settings.get('user_agent', 'Scrapy')) crawler.signals.connect(s.spider_closed, signal=signals.spider_closed) return s def process_request(self, request, spider): ua = random.choice(self.user_agent_list) if ua: request.headers.setdefault('User-Agent', ua)
En même temps, définissez la liste User-Agent dans le fichier settings.py :
USER_AGENT_LIST = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36']
- IP anti-crawler
Pour éviter un grand nombre de requêtes provenant de la même adresse IP, le site Web peut restreindre ou interdire l'accès aux requêtes provenant de la même adresse IP. Dans cette situation, nous pouvons utiliser une IP proxy pour éviter les anti-crawlers IP en changeant d'adresse IP de manière aléatoire.
- Cookies et anti-crawler de session
Les sites Web peuvent identifier l'identité de la demande en définissant des cookies et une session, etc. Ces méthodes sont souvent liées aux comptes et limiteront également la fréquence des demandes pour chaque compte. Par conséquent, nous devons simuler les cookies et la session dans le robot Scrapy pour éviter d'être identifiés comme des demandes illégales.
Dans le fichier settings.py de Scrapy, nous pouvons configurer les éléments suivants :
COOKIES_ENABLED = True COOKIES_DEBUG = True
En même temps, définir la classe CookieMiddleware dans le fichier middlewares.py pour simuler la fonction Cookies :
from scrapy.exceptions import IgnoreRequest class CookieMiddleware(object): def __init__(self, cookies): self.cookies = cookies @classmethod def from_crawler(cls, crawler): return cls( cookies=crawler.settings.getdict('COOKIES') ) def process_request(self, request, spider): request.cookies.update(self.cookies)
Parmi eux, les paramètres COOKIES sont les suivants :
COOKIES = { 'cookie1': 'value1', 'cookie2': 'value2', ... }
Les cookies doivent être ajoutés au champ cookies de la demande avant l'envoi de la demande. Si la demande ne contient pas de cookies, elle est susceptible d'être identifiée comme une demande illégale par le site Internet.
IV.Résumé
Ce qui précède est une introduction à l'utilisation des stratégies IP proxy et anti-crawler dans les robots Scrapy. L'utilisation de stratégies IP proxy et anti-crawler est un moyen important pour empêcher les robots d'exploration d'être restreints et interdits. Bien sûr, les stratégies anti-crawler émergent à l’infini, et nous devons gérer différentes stratégies anti-crawler en conséquence.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Scrapy implémente l'exploration et l'analyse des articles du compte public WeChat

Analyse de cas Scrapy : Comment explorer les informations de l'entreprise sur LinkedIn

Méthode d'implémentation de chargement asynchrone Scrapy basée sur Ajax

Conseils d'optimisation Scrapy : Comment réduire l'exploration des URL en double et améliorer l'efficacité

Pratique du robot d'exploration Scrapy : exploration des données de l'espace QQ pour l'analyse des réseaux sociaux

Utilisation approfondie de Scrapy : Comment explorer les données HTML, XML et JSON ?

Comment Scrapy implémente-t-il la conteneurisation et le déploiement Docker ?

Comment Scrapy améliore la stabilité et l'efficacité de l'exploration
