Zum Inhalt springen

So verwenden Sie Proxies mit Scrapy: Complete Guide

TL;DR

Erfahren Sie, wie Sie GProxy residential und datacenter proxies mit Scrapy für großflächiges web scraping konfigurieren. Behandelt middleware setup, proxy rotation und error handling.

Sprache: Python

Voraussetzungen

  • Python 3.8+ installiert
  • Scrapy 2.x installiert (pip install scrapy)
  • GProxy-Konto mit aktivem Proxy-Plan
  • Grundlegende Vertrautheit mit Scrapy-Spiders und -Einstellungen

Schritt-für-Schritt-Einrichtung

1

Scrapy installieren

Installieren Sie Scrapy und erstellen Sie ein neues Projekt

pip install scrapy
scrapy startproject myproject
cd myproject
2

Proxy in settings.py konfigurieren

Proxy-Einstellungen zur settings.py Ihres Projekts hinzufügen

# settings.py
HTTPPROXY_ENABLED = True
DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.GProxyMiddleware': 350,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
}
3

Proxy-Middleware erstellen

Erstellen Sie eine benutzerdefinierte Middleware in middlewares.py

class GProxyMiddleware:
    def process_request(self, request, spider):
        proxy = 'http://USER:PASS@proxy.gproxy.net:1000'
        request.meta['proxy'] = proxy
4

Rotation-Support hinzufügen

Für automatische IP-Rotation verwenden Sie den Backconnect-Endpunkt

class GProxyRotatingMiddleware:
    def process_request(self, request, spider):
        request.meta['proxy'] = 'http://USER-country-us:PASS@proxy.gproxy.net:1000'
    
    def process_exception(self, request, exception, spider):
        return request  # retry with new IP
5

Retry-Einstellungen konfigurieren

Retry-Konfiguration für Zuverlässigkeit hinzufügen

# settings.py
RETRY_ENABLED = True
RETRY_TIMES = 5
RETRY_HTTP_CODES = [403, 407, 429, 500, 502, 503]
DOWNLOAD_TIMEOUT = 30
6

Spider ausführen

Testen Sie die Proxy-Konfiguration

scrapy crawl myspider -o output.json

Codebeispiele

Einfacher Scrapy Spider mit GProxy · python
import scrapy

class ProxySpider(scrapy.Spider):
    name = 'proxy_spider'
    start_urls = ['https://httpbin.org/ip']

    custom_settings = {
        'DOWNLOADER_MIDDLEWARES': {
            'myproject.middlewares.GProxyMiddleware': 350,
        },
        'CONCURRENT_REQUESTS': 32,
        'DOWNLOAD_DELAY': 0.5,
        'DOWNLOAD_TIMEOUT': 30,
    }

    def parse(self, response):
        yield {'ip': response.json()['origin']}
Vollständige Rotating Proxy Middleware · python
import logging

logger = logging.getLogger(__name__)

class GProxyMiddleware:
    PROXY_URL = 'http://USER:PASS@proxy.gproxy.net:1000'

    @classmethod
    def from_crawler(cls, crawler):
        return cls()

    def process_request(self, request, spider):
        request.meta['proxy'] = self.PROXY_URL
        request.headers.pop('Proxy-Authorization', None)

    def process_response(self, request, response, spider):
        if response.status in [403, 407, 429]:
            logger.warning(f'Proxy error {response.status} for {request.url}')
            return request
        return response

    def process_exception(self, request, exception, spider):
        logger.error(f'Proxy exception: {exception}')
        return request
Geo-Targeted Spider · python
import scrapy

class GeoSpider(scrapy.Spider):
    name = 'geo_spider'
    
    custom_settings = {
        'CONCURRENT_REQUESTS': 16,
    }

    def start_requests(self):
        countries = ['us', 'de', 'gb', 'fr', 'jp']
        for country in countries:
            proxy = f'http://USER-country-{country}:PASS@proxy.gproxy.net:1000'
            yield scrapy.Request(
                url='https://httpbin.org/ip',
                meta={'proxy': proxy},
                cb_kwargs={'country': country},
            )

    def parse(self, response, country):
        yield {
            'country': country,
            'ip': response.json()['origin'],
        }

Warum Proxies mit Scrapy verwenden?

Scrapy ist das beliebteste Python Web Scraping Framework, das täglich Millionen von Crawl-Jobs antreibt. Beim Scraping in großem Maßstab werden Sie unweigerlich mit IP-Sperren, CAPTCHAs und Rate Limits konfrontiert. Der Residential proxy Pool von GProxy mit über 10M+ IPs in mehr als 150 Ländern löst diese Herausforderungen, indem er Ihre Exit-IP automatisch rotiert.

Proxy-Authentifizierungsmethoden

GProxy unterstützt zwei Authentifizierungsmethoden mit Scrapy: Benutzername/Passwort-Authentifizierung über die proxy URL und IP-Whitelist-Authentifizierung, bei der Sie die IP Ihres Servers im GProxy Dashboard hinzufügen. Beide funktionieren nahtlos mit der integrierten proxy Unterstützung von Scrapy.

Grundlegende Proxy-Konfiguration

Der einfachste Weg, GProxy Proxies zu Scrapy hinzuzufügen, ist über die settings.py Datei. Setzen Sie die HTTP_PROXY und HTTPS_PROXY Umgebungsvariablen oder konfigurieren Sie diese direkt in den Custom Settings Ihres Spiders. Für rotierende Proxies sollten Sie eine benutzerdefinierte Downloader Middleware verwenden, die pro Request eine neue proxy URL zuweist.

Benutzerdefinierte Proxy-Rotation-Middleware

Für das Scraping in der Produktion bietet eine benutzerdefinierte Middleware die volle Kontrolle über die proxy Zuweisung. Die Middleware fängt jeden Request ab, bevor er gesendet wird, weist einen proxy Endpunkt mit Rotationsparametern zu und verarbeitet proxy-bezogene Fehler wie Timeouts oder 407 Authentifizierungsfehler. Der Backconnect-Endpunkt von GProxy übernimmt die Rotation serverseitig, sodass jede Verbindung über denselben Endpunkt eine andere IP erhält.

Fehlerbehandlung und Retries

Robustes Scraping erfordert eine ordnungsgemäße Fehlerbehandlung. Konfigurieren Sie die Retry-Middleware von Scrapy so, dass sie mit Ihrem proxy Setup zusammenarbeitet: Wiederholen Sie den Vorgang bei den Statuscodes 403, 407, 429 und 503 und legen Sie eine angemessene Anzahl von Retries fest (3-5 Versuche). Die Sticky Sessions von GProxy ermöglichen es Ihnen, bei Bedarf dieselbe IP über Retries hinweg beizubehalten – nützlich für mehrstufige Flows.

Gleichzeitige Requests und Performance

Scrapy zeichnet sich durch gleichzeitiges Scraping aus, und die Infrastruktur von GProxy bewältigt hohe Nebenläufigkeit gut. Beginnen Sie mit CONCURRENT_REQUESTS = 32 und DOWNLOAD_DELAY = 0.5 und passen Sie dies basierend auf dem Verhalten der Zielseite an. Mit GProxy Residential Proxies können Sie in der Regel 50-100 gleichzeitige Requests ohne Probleme ausführen.

Geo-Targeting mit Scrapy

GProxy unterstützt Targeting auf Länder- und Stadtebene. Übergeben Sie das Zielland als Teil Ihrer proxy Anmeldedaten (z. B. user-country-us), um Requests über IPs an diesem Standort zu leiten. Dies ist unerlässlich für das Scraping von Inhalten mit Geo-Restriktionen oder lokalisierten Suchergebnissen.

Anwendungsfälle

E-commerce Preisüberwachung

Scrape Produktpreise über mehrere Einzelhändler hinweg mit geo-targeted Proxys, um lokalisierte Preise zu sehen.

SERP Tracking

Überwachen Sie Suchmaschinen-Rankings von verschiedenen Standorten aus unter Verwendung länderspezifischer residential IPs.

Lead-Generierung

Extrahieren Sie Brancheneinträge und Kontaktdaten in großem Umfang mit rotierenden IPs, um eine Erkennung zu vermeiden.

Content-Aggregation

Sammeln Sie Artikel, Bewertungen und Einträge aus mehreren Quellen mit zuverlässiger Proxy-Rotation.

Profi-Tipps
Verwenden Sie AUTOTHROTTLE_ENABLED = True für die automatische Ratenanpassung. Stellen Sie CONCURRENT_REQUESTS_PER_DOMAIN ein, um die Last pro Website zu begrenzen. Aktivieren Sie das HTTP-Caching während der Entwicklung, um den Verbrauch von proxy-Bandbreite zu vermeiden. Verwenden Sie das Paket scrapy-rotating-proxies für ein erweitertes Pool-Management.

FAQ

Unterstützt Scrapy SOCKS5 proxies? +
Scrapy unterstützt SOCKS5 nicht nativ. Verwenden Sie stattdessen die HTTP/HTTPS-Endpunkte von GProxy oder installieren Sie scrapy-splash oder pysocks für SOCKS5-Unterstützung.
Wie viele gleichzeitige Anfragen kann ich ausführen? +
GProxy bewältigt hohe Gleichzeitigkeit gut. Beginnen Sie mit 32 gleichzeitigen Anfragen und skalieren Sie auf 100+ hoch, abhängig von Ihrem Plan und der Zielseite.
Kann ich Sticky Sessions mit Scrapy verwenden? +
Ja. Verwenden Sie den session-Parameter von GProxy in der proxy-URL, um dieselbe IP über mehrere Anfragen hinweg beizubehalten — nützlich für Login-Flows oder Pagination.
Wie gehe ich mit CAPTCHAs um? +
Die Residential IPs von GProxy reduzieren die CAPTCHA-Raten erheblich. Für verbleibende CAPTCHAs integrieren Sie einen Solving-Service oder erhöhen Sie die Rotationsfrequenz.

Bereit loszulegen?

Starten Sie mit GProxy in Minuten — Residential-Proxies ab $0,85/GB, IPv6 ab $0,03/Proxy, nutzungsbasierte Abrechnung.

Weitere Integrationen

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.