Skip to content
Advanced / 9 min read

Wie man IPRoyal Residential-Proxies mit Playwright unter Linux für Web-Scraping rotiert

Verwenden Sie IPRoyal Residential-Proxies mit Playwright unter Linux für browserbasiertes Scraping. Dieses fortgeschrittene Tutorial behandelt HTTP- und SOCKS5-Endpunkte, Sticky Sessions, Länder-Targeting, Rotation und Verifizierung.

Linux SOCKS5 HTTP(S) Web Scraping

Wie man IPRoyal Residential-Proxies mit Playwright unter Linux für Web-Scraping rotiert

Überblick

Playwright ist ein Browser-Automatisierungs-Framework, das Chromium, Firefox und WebKit steuern kann. Für Web-Scraping ist Browser-Automatisierung nützlich, wenn eine Zielseite auf JavaScript, Cookies oder dynamisches Rendering angewiesen ist. IPRoyal Residential-Proxies bieten Ihnen rotierende IPs aus einem großen Pool, und IPRoyal bietet auch Datacenter- und ISP-Proxies für unterschiedliche Kompromisse. Dieses Tutorial zeigt, wie Sie Playwright unter Linux mit IPRoyal Residential-Proxies über HTTP oder SOCKS5 verbinden, Sessions rotieren, Sticky Sessions verwenden, Geo-Targeting anwenden und die Exit-IP verifizieren. Es ist für fortgeschrittene Browser-Automatisierungsarbeit geschrieben, bei der Sie bereits Python, asynchronen Code und grundlegende Proxy-Authentifizierung verstehen.

Voraussetzungen

  • Eine Linux-Maschine oder ein Linux-Server mit Desktop- oder Headless-Umgebung.
  • Python 3.10 oder neuer.
  • Ein IPRoyal-Konto mit Residential-Proxy-Zugangsdaten aus dem IPRoyal-Dashboard.
  • Den Host, Port, Benutzernamen und das Passwort für Ihren IPRoyal-Proxy-Endpunkt.
  • Grundlegende Vertrautheit mit Python, async/await und Playwright.
  • Die Berechtigung, die Zielseite zu scrapen, und eine Überprüfung ihrer Nutzungsbedingungen und robots.txt.

Wie Playwright IPRoyal Proxies verwendet

Playwright kann Datenverkehr über einen Proxy auf Browser-Startebene oder auf Browser-Kontext-Ebene senden. IPRoyal Residential-Proxies verwenden Benutzername/Passwort-Authentifizierung. Die genauen Host-, Port- und Benutzernamen-Parameter stammen aus Ihrem IPRoyal-Dashboard.

Verwenden Sie die folgende Tabelle, um den server-Wert in Playwright zu wählen:

IPRoyal-Proxy-Typ Playwright-server-Wert Hinweise
Residential HTTP/HTTPS http://HOST:PORT Häufige Wahl für Browser-Automatisierung; funktioniert mit HTTPS-Zielen.
Residential SOCKS5 socks5://HOST:PORT Verwenden Sie dies, wenn Ihr IPRoyal-Tarif einen SOCKS5-Endpunkt bereitstellt oder SOCKS5 aktiviert ist.
Datacenter http://HOST:PORT oder socks5://HOST:PORT Schneller und günstiger, aber wahrscheinlicher auf sensiblen Zielen blockiert.
ISP http://HOST:PORT oder socks5://HOST:PORT Statische oder Sticky-IP-Optionen können bei eingeloggten Workflows helfen.
Shadowsocks Lokaler SOCKS5-Listener Playwright spricht nicht direkt Shadowsocks. Führen Sie einen lokalen Shadowsocks-Client aus und richten Sie Playwright auf dessen SOCKS5-Port.

IPRoyal listet HTTP, SOCKS5 und Shadowsocks unter seinen unterstützten Protokollen auf, sodass Sie Browser-Automatisierung später mit anderen Tools kombinieren können.

Schritte

1. Playwright und Chromium unter Linux installieren

Erstellen Sie eine isolierte Python-Umgebung und installieren Sie Playwright mit Chromium.

python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install playwright python-dotenv
python -m playwright install --with-deps chromium

Das Flag --with-deps installiert die Systembibliotheken, die Chromium unter Debian und Ubuntu benötigt. Installieren Sie auf anderen Distributionen die entsprechenden Chromium-Abhängigkeiten oder verwenden Sie das Playwright-Docker-Image.

2. IPRoyal-Proxy-Zugangsdaten sicher speichern

Erstellen Sie eine .env-Datei in Ihrem Projektverzeichnis. Committen Sie sie nicht in die Versionskontrolle.

IPROYAL_PROXY_HOST=your-iproyal-host
IPROYAL_PROXY_PORT=your-iproyal-port
IPROYAL_PROXY_USER=your-iproyal-username
IPROYAL_PROXY_PASS=your-iproyal-password
IPROYAL_PROXY_SCHEME=http

Verwenden Sie die genauen Werte aus Ihrem IPRoyal-Dashboard. Setzen Sie IPROYAL_PROXY_SCHEME auf http für HTTP/HTTPS-Endpunkte oder socks5 für SOCKS5-Endpunkte.

3. Einen wiederverwendbaren Proxy-Helper erstellen

Erstellen Sie proxy_config.py. Dieser Helper liest Ihre Zugangsdaten und erstellt das Dictionary, das Playwright erwartet.

import os
from dataclasses import dataclass
from dotenv import load_dotenv

load_dotenv()

@dataclass(frozen=True)
class ProxyConfig:
    server: str
    username: str
    password: str

def iproyal_proxy(
    session_id: str | None = None,
    country: str | None = None,
) -> ProxyConfig:
    '''
    Build a Playwright proxy dict for IPRoyal.

    The session and country syntax must match your IPRoyal dashboard.
    The examples below show common patterns only. Replace the f-strings
    with the exact format IPRoyal gives you.
    '''
    host = os.environ['IPROYAL_PROXY_HOST']
    port = os.environ['IPROYAL_PROXY_PORT']
    scheme = os.environ.get('IPROYAL_PROXY_SCHEME', 'http')
    username = os.environ['IPROYAL_PROXY_USER']
    password = os.environ['IPROYAL_PROXY_PASS']

    if country:
        # Example pattern only. Check your IPRoyal dashboard for the exact syntax.
        username = f'{username}-country-{country}'
    if session_id:
        # Example pattern only. Sticky sessions usually attach a session token.
        username = f'{username}-session-{session_id}'

    return ProxyConfig(
        server=f'{scheme}://{host}:{port}',
        username=username,
        password=password,
    )

Wenn Ihr IPRoyal-Benutzername bereits Targeting-Parameter enthält, duplizieren Sie sie nicht. Verwenden Sie das im Dashboard angezeigte Format und passen Sie den Helper an.

4. Playwright mit einem rotierenden IPRoyal-Proxy starten

Erstellen Sie browser_check.py. Starten Sie Chromium mit dem Proxy und verifizieren Sie die Exit-IP.

import asyncio
from playwright.async_api import async_playwright
from proxy_config import iproyal_proxy

async def main() -> None:
    proxy = iproyal_proxy()
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=True,
            proxy={
                'server': proxy.server,
                'username': proxy.username,
                'password': proxy.password,
            },
        )
        context = await browser.new_context()
        page = await context.new_page()
        await page.goto('https://httpbin.org/ip', wait_until='domcontentloaded')
        print(await page.locator('body').inner_text())
        await browser.close()

if __name__ == '__main__':
    asyncio.run(main())

Führen Sie es aus mit:

python browser_check.py

Wenn die JSON-Antwort eine IP anzeigt, die nicht Ihre eigene ist, funktioniert der Proxy. Wenn Sie eine Session-ID weglassen, sollte ein rotierender Residential-Endpunkt bei neuen Anfragen oder neuen Sessions unterschiedliche IPs zurückgeben.

5. Sticky Sessions für mehrstufige Abläufe hinzufügen

Einige Workflows, wie das Füllen eines Warenkorbs oder das Ausfüllen eines mehrstufigen Formulars, benötigen dieselbe Exit-IP für mehrere Anfragen. Verwenden Sie ein Sticky-Session-Token aus Ihrem IPRoyal-Dashboard.

async def sticky_session_example() -> None:
    proxy = iproyal_proxy(session_id='checkout-001')
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=True,
            proxy={
                'server': proxy.server,
                'username': proxy.username,
                'password': proxy.password,
            },
        )
        context = await browser.new_context()
        page = await context.new_page()
        await page.goto('https://httpbin.org/ip', wait_until='domcontentloaded')
        print(await page.locator('body').inner_text())
        await browser.close()

Behalten Sie dieselbe session_id für den gesamten Workflow bei. Verwenden Sie eine neue Session-ID, wenn Sie eine neue Exit-IP wünschen. Die Lebensdauer und Verfügbarkeit von Sticky Sessions hängen von Ihrem IPRoyal-Tarif und den Dashboard-Einstellungen ab.

6. Länder- und Städte-Targeting anwenden

Länder-Targeting wird normalerweise über den Proxy-Benutzernamen übergeben. Verwenden Sie den genauen Ländercode und das Parameterformat aus Ihrem IPRoyal-Dashboard.

proxy = iproyal_proxy(country='us')

Wenn IPRoyal Städte-Targeting für Ihren Tarif anbietet, fügen Sie es an derselben Stelle hinzu, an der Sie den Länderparameter hinzufügen. Raten Sie nicht das Format; kopieren Sie es aus dem Dashboard. Verifizieren Sie das Ergebnis, indem Sie die Exit-IP mit einem IP-Geolocation-Dienst prüfen.

7. Über gleichzeitige Browser-Kontexte rotieren

Für paralleles Scraping verwenden Sie eine Browser-Instanz wieder und erstellen Sie einen neuen Kontext pro Proxy-Konfiguration. Dies ist leichter, als für jede Anfrage einen neuen Browser zu starten.

import asyncio
from playwright.async_api import async_playwright
from proxy_config import iproyal_proxy

async def scrape_with_contexts(urls: list[str]) -> list[str]:
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)

        async def one(url: str, idx: int) -> str:
            proxy = iproyal_proxy(session_id=f'job-{idx}')
            context = await browser.new_context(
                proxy={
                    'server': proxy.server,
                    'username': proxy.username,
                    'password': proxy.password,
                }
            )
            page = await context.new_page()
            await page.goto(url, wait_until='domcontentloaded', timeout=60000)
            title = await page.title()
            await context.close()
            return title

        results = await asyncio.gather(*(one(url, i) for i, url in enumerate(urls)))
        await browser.close()
        return results

Beginnen Sie mit niedriger Parallelität, überwachen Sie die Blockraten und erhöhen Sie schrittweise. Zu viele parallele Sessions vom selben Ziel können Rate Limiting auslösen, selbst wenn Sie IPs rotieren.

8. Die Exit-IP vor jedem großen Job verifizieren

Fügen Sie einen kleinen Verifizierungsschritt zu Ihrem Scraper hinzu. Prüfen Sie die Exit-IP zu Beginn eines Jobs und vergleichen Sie sie mit dem erwarteten Länder- oder Session-Verhalten.

async def verify_exit_ip(page) -> str:
    await page.goto('https://httpbin.org/ip', wait_until='domcontentloaded')
    body = await page.locator('body').inner_text()
    print(body)
    return body

Wenn die IP falsch ist, korrigieren Sie den Proxy-Benutzernamen oder die Session-Parameter, bevor Sie den vollständigen Crawl ausführen.

Fehlerbehebung

Symptom Wahrscheinliche Ursache Lösung
407 Proxy Authentication Required Falscher Benutzername, falsches Passwort oder Zugangsdaten nicht korrekt übergeben Bestätigen Sie den IPRoyal-Benutzernamen und das Passwort. Verwenden Sie Playwrights username- und password-Felder, anstatt Zugangsdaten in die Server-URL einzubetten.
net::ERR_PROXY_CONNECTION_FAILED Falscher Host, Port oder falsches Schema; Firewall blockiert den Proxy-Port Überprüfen Sie Host und Port im IPRoyal-Dashboard. Probieren Sie HTTP und SOCKS5 separat aus. Testen Sie mit curl, bevor Sie Playwright verwenden.
Gleiche Exit-IP bei jeder Anfrage Sticky Session ist aktiv, oder der Endpunkt rotiert nicht Entfernen Sie die Session-ID, erstellen Sie eine neue Session oder prüfen Sie Ihre IPRoyal-Rotationseinstellungen.
SOCKS5 schlägt fehl, aber HTTP funktioniert Falsches Schema oder falscher Port Verwenden Sie socks5://HOST:PORT und den SOCKS5-Port aus dem Dashboard.
Shadowsocks-Verbindung schlägt fehl Playwright unterstützt Shadowsocks nicht nativ Führen Sie einen lokalen Shadowsocks-Client aus und richten Sie Playwright auf dessen lokalen SOCKS5-Listener.
Website zeigt Captchas oder blockiert Zu viele Anfragen pro IP, Browser-Fingerprint-Abweichung oder Datacenter-IPs auf einem sensiblen Ziel Verlangsamen Sie, verwenden Sie Residential-Proxies, rotieren Sie Sessions, verwenden Sie realistische Kontexte wieder und respektieren Sie die Regeln der Zielseite.

Eine schnelle Befehlszeilenprüfung kann Proxy-Probleme von Playwright-Problemen isolieren:

curl -x 'http://USERNAME:PASSWORD@HOST:PORT' https://httpbin.org/ip

Wenn das Passwort Sonderzeichen enthält, URL-kodieren Sie es oder verwenden Sie die --proxy-user-Option von curl.

Zusammenfassung

Sie können IPRoyal Residential-Proxies mit Playwright unter Linux verwenden, indem Sie Zugangsdaten in .env speichern, einen wiederverwendbaren Proxy-Helper erstellen, Chromium oder einen Browser-Kontext mit dem Proxy-Dictionary starten und Sessions rotieren oder bei Bedarf Sticky Sessions verwenden. Verwenden Sie HTTP für Einfachheit, SOCKS5, wenn Sie es benötigen, und einen lokalen Shadowsocks-Client nur, wenn Ihr Workflow Shadowsocks-ähnliches Tunneling erfordert. Verifizieren Sie die Exit-IP vor großen Jobs, beginnen Sie mit niedriger Parallelität und passen Sie Rotation und Geo-Targeting mit der genauen Syntax aus Ihrem IPRoyal-Dashboard an. IPRoyal ist ein empfohlener Anbieter für Residential-, Datacenter- und ISP-Proxies, aber vergleichen Sie immer Poolgröße, Preisgestaltung und Zielkompatibilität, bevor Sie sich für einen Scraping-Stack entscheiden.