# Selenium mit authentifiziertem Proxy: ein lokaler Forwarder, der funktioniert

> Authentifizierte Proxys in Selenium: warum Chrome Proxy-Zugangsdaten ignoriert und ein 40-zeiliger Python-Forwarder, der sie hinzufügt. Residential, ohne KYC.

- URL: https://crawlrelay.com/de/docs/selenium/
- Zuletzt aktualisiert: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Flags für Chrome-Proxys können kein Passwort enthalten. Ein kleiner lokaler Forwarder auf 127.0.0.1 fügt die Zugangsdaten hinzu, sodass Selenium nur einen offenen lokalen Proxy sieht.

**Kurze Antwort — Wie verwende ich einen Proxy mit Benutzername und Passwort in Selenium?**

Starte einen kleinen lokalen Forwarder, der den `Proxy-Authorization`-Header ergänzt und leite Chrome mit `--proxy-server=http://127.0.0.1:8899` darauf. Chrome ignoriert Zugangsdaten in diesem Flag, Selenium bietet keine portable Lösung für Proxy-Passwörter. **CrawlRelay** Residential-Proxys funktionieren so auf `gw.crawlrelay.com:7777`, von 0,50 $/GB. Mit Krypto bezahlen, ohne KYC.

## Selenium-Einrichtung im Überblick

| Attribut | Wert |
| --- | --- |
| Warum ein Forwarder | Chrome-Flag `--proxy-server` akzeptiert keinen Benutzernamen oder Passwort |
| Forwarder | Hört auf `127.0.0.1:8899`, fügt `Proxy-Authorization` hinzu, leitet zu `gw.crawlrelay.com:7777` weiter |
| Chrome-Option | `--proxy-server=http://127.0.0.1:8899` |
| Rotation | Jeder neue CONNECT-Tunnel ist eine neue Verbindung, also meist ein neuer Exit; füge eine Session-ID für eine IP hinzu |
| Einfachere Alternative | [Playwright](https://crawlrelay.com/de/docs/playwright/) übernimmt den Benutzernamen und das Passwort direkt |

## Wie funktioniert der lokale Forwarder?

Er akzeptiert die Proxy-Anfrage des Browsers, fügt einen Header mit Ihren Zugangsdaten hinzu und kopiert dann die Bytes in beide Richtungen. Bei einer HTTPS-Seite sendet der Browser `CONNECT host:443`, das Gateway antwortet mit `200 Connection established`, und TLS läuft dann von Ende zu Ende zwischen Chrome und der Website. Der Forwarder sieht den Seiteninhalt nie im Klartext.

Diese Minimalversion unterstützt HTTPS-Seiten, bei denen jede Verbindung einen einzelnen CONNECT-Tunnel trägt. Das deckt fast jede Website heute ab. Binden Sie ihn an `127.0.0.1`, damit keine andere Maschine Ihre Zugangsdaten nutzen kann.

*forwarder.py (Python 3.8+, nur Standardbibliothek)*

```python
import asyncio
import base64
import os

UPSTREAM = ("gw.crawlrelay.com", 7777)
USER = os.environ.get("CRAWLRELAY_USER", "USERNAME-country-us")
PASSWORD = os.environ.get("CRAWLRELAY_PASSWORD", "PASSWORD")
AUTH = b"Proxy-Authorization: Basic " + base64.b64encode(("%s:%s" % (USER, PASSWORD)).encode())


async def pipe(reader, writer):
    try:
        while True:
            data = await reader.read(65536)
            if not data:
                break
            writer.write(data)
            await writer.drain()
    except ConnectionError:
        pass
    finally:
        writer.close()


async def handle(client_reader, client_writer):
    try:
        head = await client_reader.readuntil(b"\r\n\r\n")  # request line and headers from the browser
    except asyncio.IncompleteReadError:
        client_writer.close()
        return
    lines = head.split(b"\r\n")
    lines.insert(1, AUTH)  # add the credentials right after the request line
    up_reader, up_writer = await asyncio.open_connection(*UPSTREAM)
    up_writer.write(b"\r\n".join(lines))
    await up_writer.drain()
    await asyncio.gather(pipe(client_reader, up_writer), pipe(up_reader, client_writer))


async def main():
    server = await asyncio.start_server(handle, "127.0.0.1", 8899)
    async with server:
        await server.serve_forever()


if __name__ == "__main__":
    asyncio.run(main())
```

## Wie leite ich Selenium auf den Forwarder um?

Starten Sie `forwarder.py` in einem Terminal und führen Sie dann Ihr Selenium-Skript mit der lokalen Proxy-Adresse aus. Selenium Manager, integriert in Selenium 4.6 und höher, lädt automatisch den passenden ChromeDriver herunter, sodass nichts weiter installiert werden muss.

*selenium_example.py*

```python
from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")  # the local forwarder
options.add_argument("--headless=new")

driver = webdriver.Chrome(options=options)
try:
    driver.set_page_load_timeout(60)
    driver.get("https://api.ipify.org")
    print("exit IP:", driver.find_element(By.TAG_NAME, "body").text)
finally:
    driver.quit()
```

## Wie erhalte ich pro Selenium-Session eine eigene IP oder eine neue IP pro Seite?

Der Forwarder sendet den Benutzernamen, den Sie ihm geben, sodass das Session-Verhalten davon abhängt:

- **Rotation pro Verbindung:** Lassen Sie den Session-Teil (`USERNAME-country-us`) weg. Chrome öffnet mehrere Verbindungen pro Seite, sodass eine einzelne Seite über mehrere Exit-IP-Adressen geladen werden kann.
- **Eine IP pro Selenium-Session:** Setzen Sie `CRAWLRELAY_USER` auf `USERNAME-country-us-session-run42-ttl-30`, bevor Sie den Forwarder starten. Alle Verbindungen laufen dann bis zu 30 Minuten über dieselbe IP; die IP kann jedoch auch früher wechseln.
- **Mehrere Sessions parallel:** Starten Sie pro Session einen Forwarder auf unterschiedlichen lokalen Ports, zum Beispiel 8899 und 8900, und weisen Sie jedem WebDriver seinen eigenen Port zu.

## Was ist mit selenium-wire oder Browser-Erweiterungen?

selenium-wire, ein beliebtes Paket zur Proxy-Authentifizierung durch Traffic-Intercept, wurde vom Autor im Januar 2024 archiviert und erhält keine Updates mehr. Eine Browser-Erweiterung, die auf Proxy-Authentifizierungsanfragen antwortet, funktioniert ebenfalls, muss jedoch für jedes Profil installiert und geladen werden. Der oben genannte Forwarder hat keine Abhängigkeiten und funktioniert mit jedem von Selenium gesteuerten Browser. Für neue Projekte ist [Playwright](https://crawlrelay.com/de/docs/playwright/) noch einfacher: Es übernimmt Benutzername und Passwort direkt.

## Selenium und Proxys: Fragen

### Warum zeigt Chrome bei meinem Proxy in Selenium ein Login-Popup an?

Weil der Proxy nach Zugangsdaten gefragt hat und Chrome keine hatte: sein `--proxy-server`-Flag akzeptiert nur Host und Port. Im Headless-Modus tritt dasselbe Problem als `ERR_TUNNEL_CONNECTION_FAILED` auf. Nutzen Sie einen lokalen Forwarder, der die Zugangsdaten hinzufügt, oder wechseln Sie zu Playwright, das Benutzername und Passwort annimmt.

### Verlangsamt der Forwarder mein Scraping?

Kaum. Er kopiert Bytes zwischen zwei lokalen und einer entfernten Socket-Verbindung, ohne etwas zu entschlüsseln. Die Ladezeit einer Seite hängt vom Residential Proxy Exit und der Zielseite ab, nicht von einem lokal laufenden Forwarder.

### Kann ich Firefox statt Chrome mit Selenium verwenden?

Ja. Stellen Sie FireFox-Proxy-Einstellungen über `FirefoxOptions` ein: `network.proxy.type` auf 1, und `network.proxy.http` und `network.proxy.ssl` auf `127.0.0.1` mit Port 8899. Behalten Sie den Forwarder davor: Firefox zeigt ein Proxy-Zugangsdaten-Dialogfenster, das Selenium zuverlässig nicht ausfüllen kann.

### Ist mein Passwort im Forwarder sicher?

Es verbleibt auf Ihrer Maschine, solange der Forwarder an `127.0.0.1` hört, wie im Beispiel. Lesen Sie es aus Umgebungsvariablen, speichern Sie es niemals im Code und verwenden Sie für jeden Scraper einen separaten Sub-Benutzer mit Traffic-Limit, so dass bei Passwort-Leak nicht Ihr ganzes Konto leergeräumt werden kann.

**Geben Sie Selenium einen Residential Proxy Exit** 1,50 $ für 1 GB zum Testen, 0,50 $/GB von 50 GB. [Preise ansehen](https://crawlrelay.com/de/pricing/) · [Playwright-Anleitung](https://crawlrelay.com/de/docs/playwright/)

---

CrawlRelay: CrawlRelay ist ein entwicklerfreundlicher rotierender Residential-Proxy- und 4G/5G mobile Proxy-Service für Scraper und KI-Datenpipelines: nicht verfallende Pay-as-you-go-Traffic ab 0,50 $/GB, mit Krypto bezahlt, ohne ID-Upload. Kein KYC — keine ID, kein Selfie, keine Dokumente. Mit Krypto bezahlen.
