Maison développement back-end Tutoriel Python Utilisation d'une adresse IP proxy et de stratégies anti-exploration dans le robot d'exploration Scrapy

Utilisation d'une adresse IP proxy et de stratégies anti-exploration dans le robot d'exploration Scrapy

Jun 23, 2023 am 11:24 AM
代理ip 反爬虫策略 scrapy

Utilisez 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.

  1. 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,
}
Copier après la connexion
  1. 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
Copier après la connexion

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'
Copier après la connexion

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.

  1. 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)
Copier après la connexion

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']
Copier après la connexion
  1. 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.

  1. 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
Copier après la connexion

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)
Copier après la connexion

Parmi eux, les paramètres COOKIES sont les suivants :

COOKIES = {
    'cookie1': 'value1',
    'cookie2': 'value2',
    ...
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Scrapy implémente l'exploration et l'analyse des articles du compte public WeChat Scrapy implémente l'exploration et l'analyse des articles du compte public WeChat Jun 22, 2023 am 09:41 AM

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 Analyse de cas Scrapy : Comment explorer les informations de l'entreprise sur LinkedIn Jun 23, 2023 am 10:04 AM

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 Méthode d'implémentation de chargement asynchrone Scrapy basée sur Ajax Jun 22, 2023 pm 11:09 PM

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é Conseils d'optimisation Scrapy : Comment réduire l'exploration des URL en double et améliorer l'efficacité Jun 22, 2023 pm 01:57 PM

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 Pratique du robot d'exploration Scrapy : exploration des données de l'espace QQ pour l'analyse des réseaux sociaux Jun 22, 2023 pm 02:37 PM

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 ? Utilisation approfondie de Scrapy : Comment explorer les données HTML, XML et JSON ? Jun 22, 2023 pm 05:58 PM

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 implémente-t-il la conteneurisation et le déploiement Docker ? Jun 23, 2023 am 10:39 AM

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 Comment Scrapy améliore la stabilité et l'efficacité de l'exploration Jun 23, 2023 am 08:38 AM

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

See all articles