Mit Stand 7. Oktober 2026 verfügt Shifter über den größten Pool an aktiven US-IPs, mehr als Oxylabs und Bright Data, und das zu einem Bruchteil der Kosten.Shifter hat jetzt den größten Pool aktiver US-IPs

Benchmarks ansehen

Scraping-Frameworks mit integriertem Proxy-Management: Was jedes davon übernimmt

Scrapy, Crawlee, Colly, Playwright, Puppeteer und Selenium im Vergleich hinsichtlich Proxy-Unterstützung: Rotation, Sessions und Zugangsdaten, und was ein rotierendes Gateway verändert.

Engineering · Aktualisiert am 9. November 2026 · 7 Min. Lesezeit
FestlegenrotierenSitzungCrawleeScrapyCollyPlaywrightPuppeteerSelenium
Sechs Tools, drei Proxy-Aufgaben. Die blau Zellen werden für Sie erledigt.
Wissen
Auf dieser Seite
  1. Die kurze Antwort
  2. Crawlee: Proxys als verwaltete Ressource
  3. Scrapy: ein Proxy pro Anfrage, Rotation liegt bei Ihnen
  4. Colly: ein einfacher Round-Robin-Switcher
  5. Playwright und Puppeteer: Isolation pro Kontext
  6. Selenium: browserweit, und umständlich bei Passwörtern
  7. Was ein rotierendes Gateway ändert
  8. Die Verdrahtung
  9. Welches Tool wählen
  10. Quellen und Referenzen

Fast jedes Scraping-Framework erlaubt es, einen Proxy zu setzen. Deutlich weniger verwalten Proxys auch für Sie: sie rotieren sie, ziehen gesperrte aus dem Verkehr und halten eine Session auf einer IP. Wenn Sie residential proxies verwenden, spart es viel Klebe-Code zu wissen, welchen Teil das Framework übernimmt und welchen das Gateway.

Dieser Leitfaden vergleicht sechs gängige Tools anhand von drei Fragen: wie Sie den Proxy setzen, ob das Tool selbst Proxys rotiert und ob es eine Session an einen Proxy bindet. Anschließend zeigt er, wie wenig Code jedes davon hinter einem rotierenden Gateway benötigt.

Die kurze Antwort

ToolSpracheWie Sie den Proxy setzenRotiert von selbstBindet eine Session an einen Proxy
CrawleeNode.jsProxyConfigurationJa: Round Robin, eigene Funktion, StufenJa, über seinen Session-Pool
ScrapyPythonrequest.meta["proxy"] oder UmgebungsvariablenNein, benötigt eigene MiddlewareNein
CollyGoSetProxy oder SetProxyFuncJa: Round-Robin-SwitcherNein
PlaywrightNode.js, Python, Java, .NETBeim Start oder pro Browser-KontextNeinPro Kontext
PuppeteerNode.jsStart-Flag oder pro Browser-KontextNeinPro Kontext
SeleniumVieleBrowserweite OptionNeinNein

Crawlee ist das einzige Tool, das Proxys als etwas behandelt, das verwaltet werden muss, statt als bloße Einstellung. Die Browser-Tools bieten Isolation pro Kontext, was der Baustein für Sessions ist, aber die Rotationslogik liegt bei Ihnen.

Crawlee: Proxys als verwaltete Ressource

Crawlees ProxyConfiguration nimmt eine Liste von Proxy-URLs entgegen und rotiert durch sie “in a round-robin fashion”. Statt einer Liste können Sie eine Funktion übergeben, die den Proxy für jede Anfrage auswählt. Ein dritter Modus, gestufte Proxys, beginnt mit der günstigsten Stufe (oft gar kein Proxy), wechselt eine Stufe höher, wenn eine Website den Crawler blockiert, und fällt zurück, sobald die niedrigere Stufe wieder funktioniert.

Der wichtigste Teil sind Sessions. Wenn der Crawler mit seinem Session-Pool läuft, behält jede Session denselben Proxy: in den Worten der Dokumentation geben spätere Aufrufe “with the same sessionId” immer dieselbe “proxyUrl” zurück. Wenn Crawlee entscheidet, dass eine Session blockiert ist, zieht es sie zurück, und die nächste Session erhält einen anderen Proxy. Cookies folgen der Session, sodass IP und Cookies zusammenbleiben.

Scrapy: ein Proxy pro Anfrage, Rotation liegt bei Ihnen

Scrapys HttpProxyMiddleware liest den Proxy aus request.meta["proxy"] und greift sonst auf die Umgebungsvariablen http_proxy und https_proxy zurück. Zugangsdaten können in der URL stehen, wie in http://username:password@host:port. Das ist alles, was sie tut. Für jede Anfrage einen anderen Proxy auszuwählen, Sperren zu erkennen und tote Proxys ruhen zu lassen, bleibt Ihnen überlassen oder einer Erweiterung wie scrapy-rotating-proxies, die eine Liste von Proxys einliest und standardmäßig Antworten ohne 200 oder leere Antworten als Sperren behandelt.

Unser Scrapy-Integrationsleitfaden deckt die Grundeinrichtung ab, und der Beitrag über rotierende residential proxies in Scrapy geht tiefer auf Middleware ein.

Colly: ein einfacher Round-Robin-Switcher

Colly, das Go-Framework, hat SetProxy für einen Proxy und SetProxyFunc für eine Funktion, die pro Anfrage einen auswählt. Sein proxy-Paket enthält RoundRobinProxySwitcher, das “rotates ProxyURLs on every request” und http-, https- und socks5-URLs akzeptiert. Es gibt kein Session-Konzept: Wenn zwei Anfragen sich eine IP teilen müssen, entscheiden Sie das in Ihrer eigenen Funktion.

Playwright und Puppeteer: Isolation pro Kontext

Browser-Automatisierungstools rotieren nichts, aber sie erlauben jedem Browser-Kontext, seinen eigenen Proxy zu verwenden, womit Sie viele separate Sessions in einem Browser betreiben können.

  • Playwright nimmt eine proxy-Option mit server, username und password, entweder beim Start für den gesamten Browser oder bei newContext() für einen einzelnen Kontext. Siehe unseren Playwright-Integrationsleitfaden für die vollständige Einrichtung.
  • Puppeteer setzt einen Proxy mit dem Start-Flag --proxy-server oder pro Kontext mit createBrowserContext({ proxyServer }). Keines von beiden nimmt Zugangsdaten entgegen: Sie beantworten die Login-Abfrage des Proxys mit page.authenticate().

Geben Sie jedem Kontext seine eigene Session, und Sie erhalten eine IP und ein Cookie-Set pro Kontext, was ein eingeloggter Ablauf benötigt.

Selenium: browserweit, und umständlich bei Passwörtern

Selenium setzt den Proxy über Browser-Optionen, sodass er für den gesamten Browser gilt. Bei Chrome ist der übliche Weg der Schalter --proxy-server, der keinen Platz für Benutzername und Passwort bietet. Die üblichen Umgehungen sind eine kleine Browser-Erweiterung, die die Login-Abfrage beantwortet, oder ein lokaler Weiterleitungsproxy ohne Passwort, der den Traffic mit Zugangsdaten an Ihren Anbieter weiterreicht. Selenium Wire, einst die beliebte Lösung, wurde im Januar 2024 archiviert und wird nicht mehr gepflegt.

Was ein rotierendes Gateway ändert

Framework-Rotation wurde für Proxy-Listen entwickelt: hundert IP:Port-Paare, die Sie durchlaufen, testen und aussortieren. Ein rotierendes residential Gateway arbeitet anders. Sie verbinden sich mit einem Host und Port, und das Gateway wählt die Austritts-IP. Das verlagert den größten Teil der Arbeit aus Ihrem Code heraus:

  • Rotation geschieht am Gateway, sodass eine einzige Proxy-URL ausreicht. Eine Round-Robin-Liste mit einem Eintrag ist nur eine Einstellung.
  • Sessions werden über den Benutzernamen angefordert. Bei Shifter fügen Sie sid-<id> hinzu, um eine Austritts-IP beizubehalten, und ttl-<seconds>, um festzulegen, wie lange sie gehalten werden soll, wie in sticky vs. rotierende Proxys erklärt.
  • Standort ist ebenfalls Teil des Benutzernamens, sodass ein Crawler pro Anfrage ein Land oder eine Stadt ansteuern kann, ohne eine zweite Proxy-Liste.

Damit schrumpft die Aufgabe des Frameworks auf eine Sache: die eigene Vorstellung von einer Session auf die Session-ID im Proxy-Benutzernamen abzubilden.

Die Verdrahtung

Crawlee. Übergeben Sie eine Funktion, die den Benutzernamen aus Crawlees Session-ID aufbaut. Session-IDs können Zeichen wie Unterstriche enthalten, also behalten Sie nur Buchstaben und Ziffern:

import { CheerioCrawler, ProxyConfiguration } from 'crawlee';

const proxyConfiguration = new ProxyConfiguration({
  newUrlFunction: (sessionId) => {
    const sid = sessionId
      ? `-sid-${String(sessionId).replace(/[^a-zA-Z0-9]/g, '')}-ttl-600`
      : '';
    return `http://customer-USERNAME${sid}:PASSWORD@p.shifter.io:443`;
  },
});

const crawler = new CheerioCrawler({
  proxyConfiguration,
  useSessionPool: true,
  persistCookiesPerSession: true,
  async requestHandler({ request, $ }) {
    console.log(request.url, $('title').text());
  },
});

await crawler.run(['https://example.com/']);

Wenn Crawlee eine blockierte Session zurückzieht, liefert die nächste Session-ID von selbst eine neue sticky IP.

Scrapy. Eine kleine Downloader-Middleware setzt den Proxy, bevor Scrapys eigene Proxy-Middleware läuft. Anfragen, die einen session-Wert in meta tragen, teilen sich eine IP, der Rest rotiert:

# middlewares.py
class GatewayProxyMiddleware:
    def process_request(self, request, spider):
        sid = request.meta.get("session")
        user = "customer-USERNAME"
        if sid:
            user += f"-sid-{sid}-ttl-600"
        request.meta["proxy"] = f"http://{user}:PASSWORD@p.shifter.io:443"

# settings.py
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.GatewayProxyMiddleware": 350,
}

Playwright. Ein Kontext pro Session:

const context = await browser.newContext({
  proxy: {
    server: 'http://p.shifter.io:443',
    username: 'customer-USERNAME-sid-cart1-ttl-600',
    password: 'PASSWORD',
  },
});

Welches Tool wählen

Wählen Sie das Framework nach der Website und dem Team, nicht nach seinen Proxy-Funktionen. Crawlee ist die stärkste Wahl, wenn Sie Blockierung, Sessions und Proxy-Stufen in Node.js für sich erledigt haben möchten. Scrapy bleibt der schnellste Weg, um große Mengen einfacher HTML-Seiten in Python zu crawlen, und seine Proxy-Lücke ist eine zehnzeilige Middleware. Playwright oder Puppeteer sind die richtigen Werkzeuge, wenn Seiten einen echten Browser brauchen, und Kontexte liefern Ihnen saubere Sessions. Selenium funktioniert ebenfalls, mit mehr Aufwand rund um Zugangsdaten.

Hinter einem rotierenden Gateway reduzieren sich alle sechs auf dasselbe Muster: eine Proxy-URL und eine Session-ID im Benutzernamen überall dort, wo Anfragen sich eine IP teilen müssen. Mehr dazu, wie man dies in einen Produktions-Crawler einbaut, finden Sie in unserem Web-Scraping-Anwendungsfall.

Quellen und Referenzen

Häufig gestellte Fragen

Welches Scraping-Framework hat die vollständigste eingebaute Proxy-Verwaltung?

Crawlee. Seine ProxyConfiguration rotiert eine Liste von Proxys, kann pro Request mit einer eigenen Funktion einen Proxy auswählen, kann durch Stufen von Proxys aufsteigen, wenn eine Seite anfängt zu blockieren, und bindet jede Session an einen Proxy, sodass Cookies und IP zusammenbleiben. Scrapy, Playwright, Puppeteer und Selenium akzeptieren einen Proxy, überlassen die Rotation aber dir.

Rotiert Scrapy Proxys von sich aus?

Nein. Scrapys HttpProxyMiddleware schickt jeden Request über den Proxy in request.meta['proxy'] oder die Umgebungsvariablen http_proxy und https_proxy. Für die Rotation zwischen Proxys brauchst du eine eigene Middleware oder eine Drittanbieter-Erweiterung wie scrapy-rotating-proxies.

Brauche ich die Proxy-Rotation des Frameworks, wenn mein Anbieter mir ein rotierendes Gateway gibt?

Meistens nicht. Ein rotierendes Residential-Gateway wechselt die Exit-IP für dich hinter einem einzigen Host und Port. Was du vom Framework trotzdem brauchst, ist die Session-Verwaltung: dieselbe Session-ID im Proxy-Benutzernamen für jeden Request zu senden, der sich eine IP teilen muss, etwa bei einem Login oder einem Checkout.

Warum kann ich keinen Benutzernamen und kein Passwort in Chromes Proxy-Flag angeben?

Chromes Switch --proxy-server nimmt nur Host und Port entgegen. Puppeteer beantwortet die Login-Abfrage des Proxys mit page.authenticate, und Playwright nimmt einen Benutzernamen und ein Passwort in seiner proxy-Option entgegen. Selenium hat dafür kein eingebautes Äquivalent für Chrome, daher nutzen Leute eine kleine Browser-Erweiterung oder einen lokalen Forwarding-Proxy.

Bereit, loszulegen?

Testen Sie Shifters Residential-Proxys, 205M+ IPs, 195+ Länder, ab 0,75 $/GB.

Jetzt starten