Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rebrowser-patches — Sammlung von Patches für Puppeteer und Playwright, um Automatisierungserkennung und Lecks zu vermeiden. Hilft, Cloudflare- und DataDome-CAPTCHA-Seiten zu umgehen. Einfach zu patchen/entpatchen, kann bei Bedarf aktiviert/deaktiviert werden. | Kitploit
Tools/GitHubGitHub/rebrowser/rebrowser-patches
CrawlerAnti-BotCAPTCHA-Umgehung
GitHubrebrowser/rebrowser-patches

rebrowser-patches

Sammlung von Patches für Puppeteer und Playwright, um Automatisierungserkennung und Lecks zu vermeiden. Hilft, Cloudflare- und DataDome-CAPTCHA-Seiten zu umgehen. Einfach zu patchen/entpatchen, kann bei Bedarf aktiviert/deaktiviert werden.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite
1.4k79vor 1 JahrVon Kitploit geprüft

🪄 Patches für unentdeckbare Browser-Automatisierung

Dieses Repository enthält Patches zur Verbesserung beliebter Web-Automatisierungsbibliotheken. Konkret richtet es sich an die Pakete puppeteer und playwright.

Einige Aspekte von Automatisierungsbibliotheken oder des Browserverhaltens lassen sich nicht über Einstellungen oder Befehlszeilenoptionen anpassen. Daher beheben wir diese Probleme, indem wir den Quellcode der Bibliothek patchen. Dieser Ansatz ist zwar fragil und kann brechen, wenn sich der Quellcode der Bibliotheken im Laufe der Zeit ändert, aber das Ziel ist es, dieses Repository mit Hilfe der Community zu pflegen, um die Patches aktuell zu halten.

Brauche ich wirklich Patches?

Von Haus aus bringen Puppeteer und Playwright einige erhebliche Leaks mit, die leicht zu erkennen sind. Egal wie gut deine Proxys, Fingerprints und Verhaltensskripte sind – wenn du es nicht gepatcht hast, bist du für jede große Website nur eine große rote Flagge.

🕵️ Du kannst dein Automatisierungs-Setup mit rebrowser-bot-detector ganz einfach auf gängige moderne Erkennungen testen (Quellen und Details)

Vor den Patches 👎Nach den Patches 👍
vorhernachher

Gibt es einen einfachen Drop-in-Ersatz?

Wenn du dich nicht mit den Patches und allen möglichen Fehlern herumschlagen willst, gibt es eine Drop-in-Lösung für dich. Diese Pakete haben einfach rebrowser-patches auf den ursprünglichen Code angewendet, nichts weiter.

Puppeteer: rebrowser-puppeteer (src) und rebrowser-puppeteer-core (src)

Playwright (Node.js): rebrowser-playwright (src) und rebrowser-playwright-core (src)

Playwright (Python): rebrowser-playwright (src)

Der einfachste Weg, es zu nutzen, ist, deine package.json anzupassen, sodass du neue Pakete verwendest, aber den alten Namen als Alias behältst. So musst du keinen Quellcode deiner Automatisierung ändern. So geht's:

  1. Öffne package.json und ersetze "puppeteer": "^23.3.1" und "puppeteer-core": "^23.3.1" durch "puppeteer": "npm:rebrowser-puppeteer@^23.3.1" und "puppeteer-core": "npm:rebrowser-puppeteer-core@^23.3.1". Hinweis: 23.3.1 ist nur ein Beispiel – prüfe die neueste Version auf npm.
  2. Führe npm install aus (oder yarn install)

Eine andere Möglichkeit ist, tatsächlich die neuen Pakete anstelle der ursprünglichen zu verwenden. Folge dazu diesen Schritten:

  1. Öffne package.json und ersetze die Pakete puppeteer und puppeteer-core durch rebrowser-puppeteer und rebrowser-puppeteer-core. Ändere nicht die Versionen der Pakete, ersetze nur die Namen.
  2. Führe npm install aus (oder yarn install)
  3. Suche in deinen Skripten alle Erwähnungen von puppeteer und puppeteer-core und ersetze sie durch rebrowser-puppeteer und rebrowser-puppeteer-core

🚀 Das war's! Besuche einfach die Seite rebrowser-bot-detector und teste deinen gepatchten Browser.

Unser Ziel ist es, diese Drop-in-Ersatzpakete mit den neuesten Versionen zu pflegen und zu unterstützen, aber wir konzentrieren uns hauptsächlich auf frische Versionen. Wenn du also immer noch puppeteer 13.3.7 aus den frühen 90ern verwendest, könnte es an der Zeit sein, zu aktualisieren. Die Wahrscheinlichkeit ist hoch, dass dabei nichts kaputtgeht, da die API im Laufe der Zeit recht stabil ist.

Verfügbare Patches

Runtime.Enable-Leak beheben

Beliebte Automatisierungsbibliotheken verlassen sich auf den CDP-Befehl Runtime.Enable, der den Empfang von Ereignissen aus der Domäne Runtime. ermöglicht. Dies ist entscheidend für die Verwaltung von Ausführungskontexten, die zum Ausführen von JavaScript auf Seiten verwendet werden – eine Schlüsselfunktion für jeden Automatisierungsprozess.

Es gibt jedoch eine Technik, die die Verwendung dieses Befehls erkennt und aufdeckt, dass der Browser von Automatisierungssoftware wie Puppeteer oder Playwright gesteuert wird. Diese Technik wird von allen großen Anti-Bot-Systemen wie Cloudflare, DataDome und anderen eingesetzt.

Wir haben einen ausführlichen Artikel über unsere Untersuchung zu diesem Leak vorbereitet, den du in unserem Blog lesen kannst.

Weitere Details zu dieser Technik findest du im Blogbeitrag von DataDome: How New Headless Chrome & the CDP Signal Are Impacting Bot Detection. Kurz gesagt: Es handelt sich um ein paar Zeilen JavaScript auf der Seite, die automatisch aufgerufen werden, wenn Runtime.Enable verwendet wurde.

Unser Fix deaktiviert den automatischen Runtime.Enable-Befehl in jedem Frame. Stattdessen erstellen wir manuell Kontexte mit unbekannten IDs, wenn ein Frame erstellt wird. Wenn dann Code ausgeführt werden muss, gibt es mehrere Möglichkeiten, die Kontext-ID zu erhalten.

1. Eine neue Bindung in der Hauptwelt erstellen, sie aufrufen und ihre Kontext-ID speichern.

🟢 Vorteile: Der ultimative Ansatz, der den Zugriff auf die Hauptwelt beibehält und mit Web Workern und Iframes funktioniert. Du musst nichts an deiner bestehenden Codebase ändern.

🔴 Nachteile: Bisher wurden keine entdeckt.

2. Einen neuen isolierten Kontext über Page.createIsolatedWorld erstellen und seine ID speichern.

🟢 Vorteile: Dein gesamter Code wird in einer separaten isolierten Welt ausgeführt, wodurch verhindert wird, dass Seiten-Skripte deine Änderungen über MutationObserver und andere Techniken erkennen.

🔴 Nachteile: Du kannst nicht auf Variablen und Code des Hauptkontexts zugreifen. Während dies für einige Anwendungsfälle notwendig ist, funktioniert der isolierte Kontext für die meisten Szenarien in der Regel einwandfrei. Außerdem erlauben Web Worker nicht das Erstellen neuer Welten, sodass du deinen Code nicht in einem Worker ausführen kannst. Das ist ein Nischen-Anwendungsfall, kann aber in manchen Situationen relevant sein. Es gibt einen Workaround für dieses Problem – lies dazu bitte How to Access Main Context Objects from Isolated Context in Puppeteer & Playwright.

3. Runtime.Enable aufrufen und dann sofort Runtime.Disable aufrufen.

Dies löst Runtime.executionContextCreated-Ereignisse aus, sodass wir die richtige Kontext-ID abfangen können.

🟢 Vorteile: Du hast vollen Zugriff auf den Hauptkontext.

🔴 Nachteile: Es besteht eine geringe Chance, dass die Seite in diesem kurzen Zeitfenster Code aufruft, der zu dem Leak führt. Das Risiko ist gering, da Erkennungscode normalerweise bei bestimmten Aktionen wie CAPTCHA-Seiten oder Login-/Registrierungsformularen aufgerufen wird, in der Regel direkt nach dem Laden der Seite. Deine Geschäftslogik wird normalerweise etwas später aufgerufen.

🎉 Unsere Tests zeigen, dass alle diese Ansätze derzeit von Cloudflare oder DataDome nicht erkennbar sind.

Hinweis: Du kannst die Einstellungen für diesen Patch zur Laufzeit über eine Umgebungsvariable ändern. Das ermöglicht dir, je nach Geschäftslogik einfach zwischen gepatchten und nicht gepatchten Versionen zu wechseln.

  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=addBinding — addBinding-Technik (Standard)
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=alwaysIsolated — alle Skripte immer im isolierten Kontext ausführen
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=enableDisable — Enable/Disable-Technik verwenden
  • REBROWSER_PATCHES_RUNTIME_FIX_MODE=0 — Fix für diesen Leak komplett deaktivieren
  • REBROWSER_PATCHES_DEBUG=1 — einige Debug-Meldungen aktivieren

Denke daran, dass du diese Variablen auf verschiedene Weise setzen kannst, zum Beispiel im Code:

root@kitploit:~
process.env.REBROWSER_PATCHES_RUNTIME_FIX_MODE = "alwaysIsolated"

oder über die Befehlszeile:

root@kitploit:~
REBROWSER_PATCHES_RUNTIME_FIX_MODE=alwaysIsolated node app.js

sourceURL in einen generischen Skriptnamen ändern

Standardmäßig fügt Puppeteer //# sourceURL=pptr:... zu jedem Skript in page.evaluate() hinzu. Eine entfernte Website kann dieses Verhalten erkennen und Alarm schlagen. Dieser Patch ändert es zu //# sourceURL=app.js. Du kannst es auch über eine Umgebungsvariable anpassen:

root@kitploit:~
# use any generic filename
REBROWSER_PATCHES_SOURCE_URL=jquery.min.js
# use 0 to completely disable this patch
REBROWSER_PATCHES_SOURCE_URL=0

Methode für den Zugriff auf die Browser-CDP-Verbindung

Manchmal kann es sehr nützlich sein, auf Browser-Ebene auf eine CDP-Sitzung zuzugreifen. Zum Beispiel, wenn du einen benutzerdefinierten CDP-Befehl implementieren möchtest. Es gibt eine Methode page._client(), die die CDP-Sitzung für die aktuelle Seiteninstanz zurückgibt, aber für die Browserinstanz gibt es keine solche Methode. Dieser Patch fügt der Browser-Klasse eine neue Methode _connection() hinzu, sodass du sie wie folgt verwenden kannst:

root@kitploit:~
browser._connection().on('Rebrowser.addRunEvent', (params) => { ... })

Hinweis: Es ist für externe Website-Skripte nicht erkennbar, es dient nur deiner Bequemlichkeit.

Standardnamen der Utility World ändern

Der Standardname der Utility World ist '__puppeteer_utility_world__' + packageVersion. Manchmal möchtest du ihn vielleicht in etwas anderes ändern. Dieser Patch ändert ihn zu util und ermöglicht es dir, ihn über eine Umgebungsvariable anzupassen:

root@kitploit:~
REBROWSER_PATCHES_UTILITY_WORLD_NAME=customUtilityWorld
# use 0 to completely disable this patch
REBROWSER_PATCHES_UTILITY_WORLD_NAME=0

Diese Umgebungsvariable kann nicht zur Laufzeit geändert werden; du musst sie setzen, bevor du dein Skript ausführst, da sie in dem Moment verwendet wird, in dem das Modul importiert wird.

Vor dem Patch 👎Nach dem Patch 👍
vorhernachher

Hinweis: Es ist für externe Website-Skripte nicht erkennbar, aber Google könnte diese Informationen in ihrem proprietären Chrome verwenden; man weiß nie.

Verwendung

Dieses Paket ist dafür gedacht, gegen eine installierte Bibliothek ausgeführt zu werden. Installiere die Bibliothek, rufe dann den Patcher auf, und schon ist es einsatzbereit.

Führe im Stammordner deines Projekts Folgendes aus:

root@kitploit:~
npx rebrowser-patches@latest patch --packageName puppeteer-core

Du kannst alle Änderungen einfach mit diesem Befehl rückgängig machen:

root@kitploit:~
npx rebrowser-patches@latest unpatch --packageName puppeteer-core

Du kannst ein Paket auch patchen, indem du den vollständigen Pfad zu seinem Ordner angibst, zum Beispiel:

root@kitploit:~
npx rebrowser-patches@latest patch --packagePath /web/app/node_modules/puppeteer-core-custom

Du kannst alle Befehlszeilenoptionen sehen, indem du npx rebrowser-patches@latest --help ausführst. Derzeit gibt es jedoch nur einen Patch für eine Bibliothek, sodass du nichts konfigurieren musst.

⚠️ Beachte, dass nach der Ausführung von npm install oder yarn install in deinem Projektordner alle Änderungen der Patches überschrieben werden können. Du musst den Patcher erneut ausführen, um die Patches beizubehalten.

Wie aktualisiere ich die Patches?

Wenn dein Paket bereits gepatcht ist und du auf die neueste Version von rebrowser-patches aktualisieren möchtest, ist der einfachste Weg, node_modules/puppeteer-core zu löschen, dann npm install oder yarn install --check-files auszuführen und anschließend npx rebrowser-patches@latest patch auszuführen.

Wie patche ich Java-/Python-/.NET-Versionen von Playwright?

Alle diese Versionen sind nur Wrapper um die Node.js-Version von Playwright. Du musst den Ordner driver in deinem Playwright-Paket finden und diesen Patch mit --packagePath=$yourDriverFolder/$yourPlatform/package ausführen.

Puppeteer-Unterstützung

✅ Neueste vollständig getestete Version: 24.8.1 (veröffentlicht am 06.05.2025)

Playwright-Unterstützung

Die Playwright-Patches umfassen:

  • Runtime.enable-Leak: addBinding- und alwaysIsolated-Modi.
  • Möglichkeit, den Namen der Utility World über die Umgebungsvariable REBROWSER_PATCHES_UTILITY_WORLD_NAME zu ändern.
  • Weitere Patches sind in Arbeit – gib dem Repo einen Stern und folge ihm.

Wichtig: Die Methode page.pause() funktioniert nicht mit aktiviertem Fix; sie erfordert weitere Untersuchungen. Du kannst den Fix beim Debuggen einfach vollständig deaktivieren, indem du die Umgebungsvariable REBROWSER_PATCHES_RUNTIME_FIX_MODE=0 verwendest.

Diese Patches funktionieren derzeit nur für Chrome. Wenn du sie wirklich mit WebKit oder Firefox verwenden möchtest, erstelle bitte ein neues Issue.

✅ Neueste vollständig getestete Version: 1.52.0 (veröffentlicht am 17.04.2025)

Wie verwende ich rebrowser-puppeteer mit puppeteer-extra?

Verwende die Methode addExtra, hier ist das Beispiel:

root@kitploit:~
// before
import puppeteer from 'puppeteer-extra'

// after
import { addExtra } from 'puppeteer-extra'
import rebrowserPuppeteer from 'rebrowser-puppeteer-core'
const puppeteer = addExtra(rebrowserPuppeteer)

Folge dem Projekt

Wir entwickeln derzeit weitere Patches, um die Transparenz der Web-Automatisierung zu verbessern; diese werden bald in diesem Repository veröffentlicht. Bitte unterstütze das Projekt, indem du auf den ⭐️-Stern- oder Watch-Button klickst.

💭 Wenn du Ideen, Gedanken oder Fragen hast, kannst du dich gerne per E-Mail an unser Team wenden oder den Bereich Issues nutzen.

Der Fix hilft nicht, ich werde immer noch blockiert 🤯

⚠️ Es ist wichtig zu wissen, dass dieser Fix allein deinen Browser nicht kugelsicher und unerkennbar machen wird. Du musst dich um viele andere Aspekte kümmern, wie Proxys, korrekte User-Agents und Fingerprints (Canvas, WebGL) und mehr.

Denke immer daran: Je weniger du über JS-Injektionen in die Browser-Interna eingreifst, desto besser. Es gibt Möglichkeiten zu erkennen, dass interne Objekte wie console, navigator und andere durch Proxy-Objekte oder Object.defineProperty beeinflusst wurden. Das ist knifflig, aber es ist immer ein Katz-und-Maus-Spiel.

Wenn du alles versucht hast und immer noch Probleme hast, versuche, eine Frage im Issues-Bereich zu stellen, oder denke über die Cloud-Lösungen von Rebrowser nach.

Was ist Rebrowser?

Dieses Paket wird von Rebrowser gesponsert und gepflegt. Wir ermöglichen es dir, deine Browser-Automatisierung und dein Web Scraping mit Hunderten einzigartiger Fingerprints in der Cloud zu skalieren.

Unsere Cloud-Browser haben großartige Erfolgsquoten und bieten nützliche Funktionen wie Benachrichtigungen, wenn deine Bibliothek während der Ausführung Runtime.Enable verwendet oder andere rote Flaggen aufweist, die verbessert werden könnten. Erstelle noch heute ein Konto, um eine Einladung zum Testen unserer hochmodernen Plattform zu erhalten und dein Automatisierungsgeschäft auf die nächste Stufe zu bringen.

Automatische Warnungen

Patch-Befehl unter Windows

Wenn du versuchst, diesen Patcher auf einem Windows-Rechner auszuführen, wirst du wahrscheinlich auf einen Fehler stoßen, weil der Patch-Befehl nicht gefunden wird. Um das zu beheben, musst du Git installieren, das patch.exe enthält. Nach der Installation musst du es zu deinem PATH hinzufügen:

root@kitploit:~
set PATH=%PATH%;C:\Program Files\Git\usr\bin\

Du kannst überprüfen, ob patch.exe korrekt installiert ist, indem du den folgenden Befehl verwendest:

root@kitploit:~
patch -v

Besonderer Dank

zfcsoftware/puppeteer-real-browser - allgemeine Ideen und Beitrag zur Automatisierungs-Community

Kaliiiiiiiiii-Vinyzu/patchright - eine Reihe von Patches zur Behebung von Playwright-Leaks

kaliiiiiiiiii/brotector - einige moderne Tests, Algorithmus zur Unterscheidung von CDP und devtools

prescience-data/harden-puppeteer - einer der Pioniere der Ausführung in einer isolierten Welt

puppeteer-extra-plugin-stealth - wo alles begann, großer Respekt an alle Mitwirkenden und die Community 🙏 berstend und Co. sind die Größten

Haftungsausschluss

Es wird keine Verantwortung für die Nutzung dieser Software übernommen. Diese Software dient ausschließlich zu Bildungs- und Informationszwecken. Nutzer sollten diese Software auf eigenes Risiko verwenden. Die Entwickler der Software können nicht für Schäden haftbar gemacht werden, die aus der Nutzung dieser Software entstehen. Diese Software ist nicht dazu bestimmt, Sicherheitsmaßnahmen zu umgehen, einschließlich, aber nicht beschränkt auf CAPTCHAs, Anti-Bot-Systeme oder andere von Websites eingesetzte Schutzmechanismen. Die Software darf nicht für böswillige Zwecke verwendet werden. Durch die Nutzung dieser Software stimmst du diesem Haftungsausschluss zu und bestätigst, dass du die Software verantwortungsbewusst und in Übereinstimmung mit allen geltenden Gesetzen und Vorschriften verwendest.
Tool herunterladen