Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung von Proxy-IP- und Anti-Crawling-Strategien im Scrapy-Crawler

Verwendung von Proxy-IP- und Anti-Crawling-Strategien im Scrapy-Crawler

PHPz
PHPzOriginal
2023-06-23 11:24:292040Durchsuche

Verwenden Sie Proxy-IP und Anti-Crawler-Strategie im Scrapy-Crawler.

Mit der Entwicklung des Internets müssen in den letzten Jahren immer mehr Daten über Crawler abgerufen werden, und die Anti-Crawler-Strategie für Crawler ist immer strenger geworden . In vielen Szenarien sind die Verwendung von Proxy-IP- und Anti-Crawler-Strategien zu wesentlichen Fähigkeiten für Crawler-Entwickler geworden. In diesem Artikel besprechen wir, wie Proxy-IP- und Anti-Crawling-Strategien in Scrapy-Crawlern verwendet werden, um die Stabilität und Erfolgsrate beim Crawlen von Daten sicherzustellen.

1. Warum Sie Proxy-IP verwenden müssen

Wenn Crawler dieselbe Website besuchen, werden sie häufig mit derselben IP-Adresse identifiziert, die leicht blockiert oder eingeschränkt werden kann. Um dies zu verhindern, muss eine Proxy-IP verwendet werden, um die tatsächliche IP-Adresse zu verbergen und so die Identität des Crawlers besser zu schützen.

2. So verwenden Sie Proxy-IP

Die Verwendung von Proxy-IP in Scrapy kann durch Festlegen des Attributs DOWNLOADER_MIDDLEWARES in der Datei „settings.py“ erreicht werden. 🔜 py-Datei Pfad zur Proxy-IP-Liste:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'your_project.middlewares.RandomUserAgentMiddleware': 400,
    'your_project.middlewares.RandomProxyMiddleware': 410,
}
    Beim Durchführen des Crawlings wählt Scrapy zufällig eine Proxy-IP für den Zugriff aus und stellt so die Verschleierung der Identität und die Erfolgsquote des Crawlings sicher.
  1. 3. Über Anti-Crawler-Strategien
    Heutzutage sind Anti-Crawler-Strategien für Websites weit verbreitet und reichen von der einfachen User-Agent-Beurteilung bis hin zu komplexeren Verifizierungscodes und Schiebebalkenverifizierung. Im Folgenden besprechen wir den Umgang mit mehreren gängigen Anti-Crawling-Strategien in Scrapy-Crawlern.
User-Agent-Anti-Crawler

Um den Crawler-Zugriff zu verhindern, ermitteln Websites häufig das User-Agent-Feld. Wenn der User-Agent nicht die Methode des Browsers ist, wird er abgefangen. Daher müssen wir im Scrapy-Crawler einen zufälligen User-Agent festlegen, um zu verhindern, dass der User-Agent als Crawler erkannt wird.

Unter middlewares.py definieren wir die RandomUserAgentMiddleware-Klasse, um die zufällige User-Agent-Funktion zu implementieren:

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

Gleichzeitig legen wir die User-Agent-Liste in der Datei „settings.py“ fest:

PROXY_LIST_PATH = 'path/to/your/proxy/list'
  1. IP-Anti-Crawler

Um eine große Anzahl von Anfragen von derselben IP-Adresse zu verhindern, kann die Website den Zugriff auf Anfragen von derselben IP-Adresse einschränken oder verbieten. In dieser Situation können wir Proxy-IP verwenden, um IP-Anti-Crawler durch zufälliges Wechseln der IP-Adressen zu vermeiden.

Cookies und Session Anti-Crawler

    Websites können die Identität der Anfrage durch das Setzen von Cookies und Session usw. identifizieren. Diese Methoden sind oft an Konten gebunden und begrenzen auch die Häufigkeit von Anfragen für jedes Konto. Daher müssen wir Cookies und Sitzungen im Scrapy-Crawler simulieren, um zu vermeiden, dass sie als illegale Anfragen identifiziert werden.
  1. In der Datei „settings.py“ von Scrapy können wir Folgendes konfigurieren:
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)

Gleichzeitig definieren Sie die CookieMiddleware-Klasse in der Datei middlewares.py, um die Cookies-Funktion zu simulieren:

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']
    Unter diesen sind die COOKIES-Einstellungen wie folgt folgt:
  1. COOKIES_ENABLED = True
    COOKIES_DEBUG = True
  2. Cookies sollten zum Cookie-Feld der Anfrage hinzugefügt werden, bevor die Anfrage gesendet wird. Wenn die Anfrage keine Cookies enthält, wird sie von der Website wahrscheinlich als illegale Anfrage identifiziert.

IV. Zusammenfassung

Das Obige ist eine Einführung in die Verwendung von Proxy-IP- und Anti-Crawler-Strategien in Scrapy-Crawlern. Die Verwendung von Proxy-IP- und Anti-Crawler-Strategien ist ein wichtiges Mittel, um zu verhindern, dass Crawler eingeschränkt werden. Natürlich tauchen immer wieder Anti-Crawler-Strategien auf, und wir müssen uns entsprechend mit unterschiedlichen Anti-Crawler-Strategien befassen.

Das obige ist der detaillierte Inhalt vonVerwendung von Proxy-IP- und Anti-Crawling-Strategien im Scrapy-Crawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn