
invisible_playwright v0.7.0
Kostenloser Antidetect-Browser-Stealth für Playwright: unerkannter Headless-Firefox-Fingerprint. Python-Scraping, Umgehung von reCAPTCHA und Bot-Erkennung. Open Source
Kostenlose Antidetect-Browser-Tarnung für Playwright: unerkannte Firefox-Fingerabdruck, headless oder mit Fenster.
Python-Web-Scraping und Captcha-Umgehung. Open Source und besteht jeden Bot-Erkennungstest.

So funktioniert es
Anti-Bots stellen zwei Fragen, und reCAPTCHA, hCaptcha und Cloudflare Turnstile bewerten die Antworten. invisible_playwright beantwortet beide mit Ja.
1. Ist das ein echtes Browser? Ja. Es ist Firefox, gepatcht auf C++-Quellcode-Ebene.
- Der Browser-Fingerabdruck wird innerhalb der Engine gesetzt, nicht in die Seite injiziert: navigator, screen, GPU/WebGL, canvas, Schriften, Audio, WebRTC, Zeitzone, Netzwerk. Headless oder mit Fenster, die Werte sind in beiden Fällen identisch.
- Kein JS-Shim, kein Override, keine Naht zum Auslesen.
2. Nutzt eine echte Person es? Ja. Die Aktionen werden im Treiber humanisiert.
- Jeder Klick, jedes Hover und Ziehen folgt einem natürlichen Mauspfad mit menschlichem Timing, kein teleportierender Cursor.
- Jede Eingabe ist byte-identisch zu einer echten Maus: echte Eingabequelle, Druck, vertrauenswürdige Ereignisse.
Angetrieben von der Standard-Playwright-API. Vollständige Aufschlüsselung: feder-cr/firefox_antidetect_patch.
Siehst du immer noch Captchas oder Anti-Bot? Es liegt am Proxy.
Sobald der Browser behandelt ist, ist er nicht mehr die Variable. Wenn du immer noch herausgefordert wirst, liegt das Signal nicht mehr am Browser, sondern an der IP, von der du kommst. Etwa 90 % der Proxys sind öffentlich: Jeder kann dieselbe Adresse mieten, also ist sie bereits bekannt und steht auf den blockierten IP-Listen, die Websites prüfen. Ein perfekter Browser auf einer bekannten IP verliert trotzdem.
Installation
pip install invisible-playwright
python -m invisible_playwright fetch # einmaliger ~238 MB Download (~544 MB entpackt), sha256-verifiziert
Unterstützte Plattformen: Windows x86_64, Linux x86_64 / arm64. macOS wird nicht mehr unterstützt (Veröffentlichungen endeten bei firefox-20); auf einem Mac verweigert das Paket beim Start mit einer klaren Meldung, anstatt ein Binärpaket herunterzuladen, das es nicht mehr gibt.
Verwendung
Zufälliger Fingerabdruck pro Sitzung
100 % Playwright-kompatibel - synchron und asynchron, alle Methoden, null API-Änderungen. Wenn du bereits Playwright verwendest, ist der Wechsel zwei Zeilen:
- from playwright.sync_api import sync_playwright
- with sync_playwright() as p:
- browser = p.firefox.launch()
+ from invisible_playwright import InvisiblePlaywright
+ with InvisiblePlaywright() as browser:
Jede Sitzung erhält einen eindeutigen Fingerabdruck (GPU, Audio, Schriften, Bildschirm, ~200 Felder) und Bezier-Kurven-Mausbewegung.
Synchron
from invisible_playwright import InvisiblePlaywright
with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
page = browser.new_page()
page.goto("https://example.com")
page.click("#submit") # Maus bewegt sich auf einer Bezier-Kurve zum Button
Asynchron
from invisible_playwright.async_api import InvisiblePlaywright
async with InvisiblePlaywright(proxy={"server": "socks5://...", "username": "u", "password": "p"}) as browser:
page = await browser.new_page()
await page.goto("https://example.com")
await page.click("#submit")
Das browser-Objekt ist ein playwright.sync_api.Browser / playwright.async_api.Browser - jede Playwright-Methode funktioniert unverändert.
Protokolliere den Seed, um einen Lauf zu wiederholen:
sf = InvisiblePlaywright()
with sf as browser:
print("seed =", sf.seed)
# ...
Reproduzierbarer Fingerabdruck
with InvisiblePlaywright(seed=42) as browser:
... # gleiche GPU, gleicher Canvas-Hash, gleicher Audio-Kontext, bei jedem Lauf
Proxys
proxy = {
"server": "socks5://gate.example.com:1080",
"username": "user",
"password": "pass",
}
with InvisiblePlaywright(proxy=proxy) as browser:
...
Unterstützte Schemata: socks5, socks4, http, https. DNS wird standardmäßig durch den Proxy geleitet, kein lokales Leck.
Zeitzone
Die Browser-Zeitzone folgt timezone=:
# Standard: Zeitzone wird automatisch aus der Egress-IP abgeleitet (Proxy-Egress, wenn
# ein Proxy gesetzt ist, sonst die eigene öffentliche IP des Hosts)
with InvisiblePlaywright(proxy=proxy) as browser:
...
# explizite IANA-Zone gewinnt immer, der einzige Weg, eine bestimmte Zone zu erzwingen
with InvisiblePlaywright(proxy=proxy, timezone="America/New_York") as browser:
...
Festlegen bestimmter Fingerabdruck-Felder
Standardmäßig kommt alles aus seed. Um bestimmte Werte zu erzwingen, während der Rest seed-abgeleitet bleibt:
with InvisiblePlaywright(
seed=42,
pin={
"gpu.renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 4090 Direct3D11)",
"gpu.vendor": "Google Inc. (NVIDIA)",
"screen.width": 2560,
"screen.height": 1440,
"hardware.concurrency": 16,
},
) as browser:
...
Die vollständige Liste der festlegbaren Schlüssel, wie das Festlegen mit dem Bayes'schen Sampler interagiert, und gängige Muster findest du in docs/pinning.md.
CLI
Der installierte Befehl ist invisible-playwright, mit Bindestrich. python -m invisible_playwright funktioniert identisch und benötigt nichts im PATH.
invisible-playwright fetch # Engine herunterladen, falls fehlend, jeden gecachten
# gegen das Siegel prüfen, Pfad ausgeben
invisible-playwright version # Wrapper-, Kern- und Engine-Versionen, und wo die
# Engine gecacht ist
Dokumentation, Anleitungen und Vergleiche
Alles liest sich besser und ist durchsuchbar in dem Wiki, organisiert in vier Abschnitte statt einer flachen Liste:
- Dokumentation - Installation, der Zwei-Zeilen-Wechsel von normalem Playwright, Proxy-/Zeitzonen- Konfiguration, Festlegen bestimmter Felder, die CLI.
- Anleitungen - wie Erkennung tatsächlich funktioniert, in sieben Gruppen: Browser-Identität, Canvas/WebGL/Schriften/ Audio, Netzwerk und WebRTC, die Automatisierungsebene, KI-Agenten, die Detektoren selbst aus dem Quellcode erklärt, und Tests.
- Vergleiche - gegen Camoufox, Patchright, nodriver und playwright-stealth, und das Argument für Firefox gegenüber Chromium allgemein.
- Integrationen - Scrapy, Crawlee, Robot Framework, CodeceptJS, Test-Runner, Playwright MCP, und die Frameworks, für die es nicht passt, namentlich.
Wenn du nicht weißt, wo du anfangen sollst: Drei Möglichkeiten, Playwright unerkannt zu machen ist die Karte, auf die die meisten anderen Seiten verlinken, Playwright auf einer Website als Bot erkannt ist die Fehlerbehebungs-Reihenfolge, und navigator.webdriver ist nicht das Signal, das du denkst erklärt die berühmteste Eigenschaft in diesem Bereich und warum das alleinige Patchen dir fast nichts bringt.
- crawl4ai-Tarnung und benutzerdefinierte Browser-Engines - browser_type akzeptiert firefox, aber es gibt kein executable_path; wo die Adapter-Naht ist
- Warum Headless-Browser andere Schriften rendern - die drei Ursachen, die pro-Plattform-Schriftsätze, und warum die Lösung nicht das Installieren weiterer Schriften ist
- Wie man Linux und macOS echte Windows-Schriften melden lässt - ein Manifest, drei Schrift-Backends überzeugt, den Host nicht zu fragen, und die vier noch offenen Nähte
- measureText und TextMetrics als Fingerabdruck-Oberfläche - zehn-plus Zahlen aus einem Aufruf ohne Berechtigungsabfrage, und die zwei Fehler, die wir bei der Behebung gemacht haben
- Was privacy.resistFingerprinting wirklich tut - und warum dieses Projekt es absichtlich auf false setzt
- Die ChromeDriver-cdc_-Variable - warum Umbenennen nicht Entfernen ist, und was das verallgemeinert
- Was bot.sannysoft.com tatsächlich prüft - Zeile für Zeile, und der Canvas-in-iframe-Test, den niemand liest
- Wie CreepJS entscheidet, dass du lügst - vier Erkennungstechniken, und warum das Blockieren des Probes selbst aufgezeichnet wird
- Firefox-Einstellungen, die stillschweigend nichts tun - fünf Gründe, beginnend mit dem, der uns einen echten Bug gekostet hat
- Was BotD tatsächlich erkennt - zwanzig Detektoren, und warum die meisten nichts mit Bots zu tun haben
- Warum sich eine FingerprintJS-Besucher-ID ändert - es ist ein Hash aus 41 Komponenten, also bewegt sich alles, wenn sich eine bewegt
Verwandte Projekte
Die Open-Source-Nachbarn und wofür jedes einzelne gedacht ist.
Auf der Firefox-Seite
- Camoufox - ein Antidetect-Firefox, der ebenfalls auf C++-Ebene patcht. Es deckt eine breitere Oberfläche ab und bringt seine eigene Fingerabdruck-Datenbank mit; dieses Projekt leitet einen Fingerabdruck aus einem Seed mit einem Bayes'schen Sampler ab, sodass eine Zahl eine Maschine reproduziert. Vollständiger Vergleich.
- LibreWolf - ein Firefox-Fork mit Datenschutz-Standardeinstellungen. Es liefert ein konfiguriertes Binärpaket zum Browsen; dieses liefert Quellcode-Patches plus einen Automatisierungs-Wrapper.
- arkenfox/user.js - Firefox-Härtung über Einstellungen. Wo eine Einstellung ausreicht, verwende sie; dieses Projekt patcht C++, wo eine nicht ausreicht.
Auf der Chromium-Seite
- Patchright - ein gepatchter Playwright-Fork, sodass die Tarnarbeit im Treiber statt im Browser-Binärpaket landet. Vollständiger Vergleich.
- nodriver - der Nachfolger von
undetected-chromedriver, der Chrome direkt über CDP steuert und die WebDriver-artigen Signale entfernt. Vollständiger Vergleich. - playwright-stealth - ein Init-Script-Patch, der vor dem Laden der Seite angewendet wird. Sein eigener Maintainer nennt es einen Proof-of-Concept; vollständiger Vergleich.
- puppeteer-extra-plugin-stealth - der Ursprung dieser Init-Script-Linie, immer noch weitgehend empfohlen. Der letzte substanzielle Commit des Repositorys stammt aus Mitte 2024; was das in der Praxis bedeutet.
- selenium-stealth - derselbe Ansatz auf Selenium/CDP. Der letzte Commit des Repositorys stammt aus Dezember 2021; was das in der Praxis bedeutet.
- pyppeteer - der inoffizielle Python-Port von Puppeteer. Sein eigenes README sagt, es sei ungepflegt, und verweist auf
playwright-python; worauf diese Empfehlung tatsächlich abzielt. - rebrowser-patches - behebt das
Runtime.enable-CDP-Leck auf Chromium und konvergiert unabhängig auf fast denselben Fix, den Patchright verwendet. Vollständiger Vergleich. - fingerprint-suite - erzeugt einen kohärenten Fingerabdruck mit einem Bayes'schen Netzwerk, nahe am eigenen Erzeugungsansatz dieses Projekts, und injiziert ihn dann in eine Playwright- oder Puppeteer-Seite auf Chromium oder Firefox. Vollständiger Vergleich.
- playwright-with-fingerprints - injiziert Fingerabdruckwerte von einem entfernten kostenpflichtigen Dienst, nur Windows, an einen bestimmten Chromium-Build gebunden. Vollständiger Vergleich.
Welches davon passt, hängt von der Ebene ab, auf der dein Problem liegt, und davon, ob du Firefox oder Chromium benötigst. Drei Möglichkeiten, Playwright unerkannt zu machen arbeitet durch, was jede Ebene erreichen kann und was nicht, einschließlich dessen, was dieses hier kostet.
Wenn du zwischen Engines statt Werkzeugen wählst, beachte, dass ein großer Teil der KI-Agenten-Frameworks Chromium über CDP steuert, was die Frage für dich entscheidet: KI-Browser-Agenten und Tarnung.
Lizenz
MIT - siehe LICENSE. Das gepatchte Firefox-Binärpaket wird unter der MPL-2.0 (Firefox-Upstream-Lizenz) verteilt. Die C++-Patches gegen mozilla-central, die dieses Binärpaket erzeugen, befinden sich unter feder-cr/firefox_antidetect_patch.
Haftungsausschluss
Dieses Projekt dient nur Bildungszwecken. Es wird wie besehen ohne jegliche Garantien bereitgestellt. Ich übernehme keine Verantwortung für seine Verwendung. Verwende es auf eigenes Risiko und in Übereinstimmung mit den Gesetzen deiner Rechtsordnung.
Erstellt von Federico Elia