puppeteer-extra-plugin-stealth to najpopularniejszy pakiet Anti-Detection dla Puppeteera. Wciąż zbiera 600K+ pobrań tygodniowo na npm. Jednocześnie od marca 2023 nie wyszła ani jedna aktualizacja. Wersja 2.11.2 to ostatni release i tak już zostanie: projekt jest porzucony, issues na GitHubie piętrzą się, a systemy Anti-Bot dawno poszły dalej.
TL;DR: Pluginy Stealth patchują sygnały detekcji przez nadpisywanie JavaScriptu na poziomie strony. W 2026 roku systemy Anti-Bot takie jak Cloudflare, Akamai i DataDome sprawdzają sygnały, do których JavaScript nie ma dostępu: TLS fingerprints, artefakty protokołu CDP i różnice renderowania na poziomie silnika. Rozwiązaniem nie jest lepszy plugin. To inna warstwa: patchowany driver ukrywający wycieki protokołu albo patchowana przeglądarka obsługująca fingerprints na poziomie silnika.
Co pluginy Stealth tak naprawdę robią
puppeteer-extra-plugin-stealth zawiera 11 modułów evasion uruchamianych przez evaluateOnNewDocument. Każdy moduł patchuje jedną powierzchnię detekcji:
| Moduł | Co patchuje |
|---|---|
webdriver |
Usuwa navigator.webdriver = true |
chrome.runtime |
Fałszuje obiekt chrome.runtime |
chrome.csi / chrome.app |
Dodaje brakujące stuby Chrome API |
navigator.plugins |
Fałszuje tablicę pluginów |
navigator.languages |
Nadpisuje ustawienia języka |
navigator.permissions |
Poprawia zachowanie permission query |
media.codecs |
Fałszuje wsparcie kodeków |
sourceurl |
Ukrywa //# sourceURL z wstrzykniętych skryptów |
iframe.contentWindow |
Poprawia detekcję cross-origin iframe |
webgl.vendor |
Fałszuje stringi WebGL vendor/renderer |
user-agent-override |
Ustawia realistyczny nagłówek User-Agent |
Te patche działały w 2021-2022, kiedy systemy Anti-Bot sprawdzały głównie właściwości JavaScript na poziomie strony. Przeciwko temu, co faktycznie sprawdzają nowoczesne systemy detekcji, są bezużyteczne.
Dlaczego pluginy Stealth nie działają w 2026
Detekcja Anti-Bot przeniosła się poniżej warstwy JavaScript. Sygnały, które teraz mają znaczenie, to te, do których evaluateOnNewDocument nie sięga.
Wycieki protokołu CDP
Kiedy Puppeteer łączy się z Chrome, wysyła komendy CDP takie jak Runtime.enable, Page.enable i Network.enable. Te komendy zostawiają artefakty w wewnętrznym stanie przeglądarki, które skrypty Anti-Bot potrafią wykryć. Plugin Stealth nie dotyka CDP, bo działa na poziomie strony, nie na poziomie protokołu.
Sam Runtime.enable wystarczy do zidentyfikowania sesji automatycznej. Żaden page-level patching nie ukryje faktu, że wydano komendy CDP.
TLS Fingerprinting
Cloudflare sprawdza TLS fingerprints (JA3/JA4) zanim w ogóle wyśle HTML. Jeśli TLS fingerprint się nie zgadza, sesja dostaje challenge albo zostaje zablokowana — zanim JavaScript pluginu Stealth zdąży się załadować. Plugin działa na poziomie strony i nie ma dostępu do warstwy TLS. Szczegółowe wyjaśnienie, jak TLS Fingerprinting działa w stosie detekcji, znajdziesz w sekcji o warstwie sieciowej w artykule Automatyzacja przeglądarki bez blokowania.
Detekcja nadpisań JavaScript
Skrypty Anti-Bot nie sprawdzają tylko wartości navigator.webdriver. Sprawdzają property descriptor. Prawdziwa przeglądarka ma webdriver zdefiniowany jako natywny getter na prototypie Navigator. Plugin Stealth nadpisuje go przez Object.defineProperty, co zmienia flagę configurable deskryptora i wynik toString() funkcji getter. Skrypty detekcji testują dokładnie te rozbieżności.
To samo dotyczy innych nadpisań. chrome.runtime, tablice pluginów i permission queries mają wykrywalne różnice, gdy ich natywne implementacje zastąpiono stubami JavaScript.
Różnice renderowania Headless
Nawet z --headless=new (nowszym trybem headless) Chrome renderuje nieco inaczej niż w trybie headed. Metryki fontów, wyjście Canvas z akceleracją GPU i API wymiarów ekranu zwracają inne wartości. Plugin Stealth patchuje niektóre właściwości navigator, ale nie zmieni sposobu, w jaki pracuje sam silnik renderowania.
Co zastąpiło pluginy Stealth
Ekosystem podzielił się na dwa podejścia: patchowane drivery (naprawiają warstwę protokołu) i patchowane przeglądarki (naprawiają warstwę silnika). Rozwiązują różne problemy.
Patchowane drivery: Rebrowser i Patchright
Rebrowser oferuje drop-in zamienniki dla Puppeteera i Playwrighta (rebrowser-puppeteer, rebrowser-playwright). Patche celują w artefakty protokołu CDP: modyfikują interakcję Runtime.enable i innych komend z przeglądarką, by uniknąć zostawiania wykrywalnych śladów. Zamieniasz nazwę pakietu w kodzie — reszta zostaje bez zmian.
// Before: detected
const puppeteer = require('puppeteer');
// After: CDP artifacts patched
const puppeteer = require('rebrowser-puppeteer');Patchright robi to samo dla Playwrighta, z naciskiem na Pythona. Patchuje wycieki Runtime.enable i jest aktywnie utrzymywany.
Ograniczenie: Patchowane drivery naprawiają protocol detection, ale nie adresują Browser Fingerprinting. Jeśli strona sprawdza Canvas, WebGL, AudioContext albo renderowanie fontów, wciąż jesteś widoczny. Patchowane drivery odpowiadają na pytanie "czy jesteś automatem?" — ale nie na "czy jesteś prawdziwym urządzeniem?"
Patchowane przeglądarki: silniki Anti-Detect
Patchowana przeglądarka modyfikuje samo Chromium tak, by sygnały fingerprint były spójne na poziomie silnika. Wyjście Canvas, renderowanie WebGL, dane AudioContext, metryki fontów, wymiary ekranu, strefa czasowa i locale raportują wartości odpowiadające jednemu realnemu profilowi urządzenia.
Dokładnie to robi Clawbrowser. To fork Chromium z patchami fingerprint na poziomie silnika obejmującymi 20+ powierzchni, wbudowanym proxy routing, ochroną przed wyciekami WebRTC i natywną obsługą CDP. Twój istniejący kod Puppeteer lub Playwright łączy się z nim po CDP:
from playwright.async_api import async_playwright
async def automate_without_detection():
async with async_playwright() as p:
# Connect to Clawbrowser instead of stock ChromeCo to obsługuje w porównaniu z pluginami Stealth:
- Spójność Canvas/WebGL/AudioContext na poziomie silnika (nie stuby JavaScript)
- TLS fingerprint pasujący do prawdziwej sesji Chrome
- Połączenie CDP bez artefaktów
Runtime.enable - Ochrona przed wyciekami WebRTC na poziomie przeglądarki
- Proxy routing z wbudowanym dopasowaniem geograficznym
Pełny przegląd sygnałów fingerprint znajdziesz w artykule Browser Fingerprinting: 20+ sygnałów używanych przez systemy Anti-Bot.
Jak wybrać odpowiednie rozwiązanie
Właściwe narzędzie zależy od tego, co cię wykrywa.
| Typ detekcji | Objaw | Rozwiązanie |
|---|---|---|
| Artefakty protokołu CDP | Natychmiastowa blokada przy ładowaniu strony, brak CAPTCHA | Patchowany driver (Rebrowser, Patchright) |
| Niezgodność Browser Fingerprint | CAPTCHA na każdej stronie lub ciche różnice w danych | Patchowana przeglądarka (Clawbrowser) |
| Niezgodność TLS Fingerprint | Blokada przed załadowaniem strony (403 przy pierwszym żądaniu) | Patchowana przeglądarka z proxy routing |
| Reputacja IP | Blokada z datacenter IP | Residential proxy (dowolne podejście) |
| Detekcja behawioralna | Blokada po 5-10 stronach | Timing i session management w kodzie |
Kiedy patchowane drivery wystarczą
Jeśli automatyzujesz strony z podstawową detekcją sprawdzającą artefakty CDP, ale nie tworzące głębokiego fingerprint przeglądarki, Rebrowser lub Patchright zadziałają. Obejmuje to wiele stron z lżejszymi konfiguracjami Anti-Bot.
Kiedy potrzebujesz patchowanej przeglądarki
Jeśli strona używa Cloudflare Bot Management, Akamai Bot Manager, DataDome lub PerimeterX, potrzebujesz spójności fingerprint na poziomie silnika. Page-level patche i driver-level patche nie wystarczą, gdy detekcja sprawdza 20+ powierzchni przeglądarki jednocześnie.
Clawbrowser to lokalny, darmowy, oparty na Chromium browser Anti-Detect z zarządzanymi fingerprintami, proxy routing, natywnym CDP i wbudowanym serwerem MCP. Obsługuje tożsamość przeglądarki i warstwę sieciową, więc twój kod zajmuje się tylko zachowaniem i session management.
Migracja z pluginów Stealth
Jeśli obecnie używasz puppeteer-extra-plugin-stealth lub playwright-stealth, migracja do Clawbrowser zajmie mniej niż pięć minut.
Przed (plugin Stealth)
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({ headless: false });Po (Clawbrowser)
const puppeteer = require('puppeteer-core');
// Connect to Clawbrowser over CDP
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222'Kluczowa różnica: usuwasz puppeteer-extra i puppeteer-extra-plugin-stealth z dependencies. Zero konfiguracji pluginów. Żadnego wyboru modułów evasion. Anti-detection dzieje się na poziomie przeglądarki, nie w twoim kodzie.
Wzorce specyficzne dla scrapingu (paginacja, session warming, bypass Cloudflare) znajdziesz w artykule Web Scraping bez wykrycia.
FAQ
Czy puppeteer-extra-stealth jest kompletnie bezużyteczny?
Wciąż działa na stronach bez komercyjnego systemu Anti-Bot. Jeśli docelowa strona sprawdza tylko navigator.webdriver i podstawowe właściwości JavaScript, plugin Stealth wystarczy. Ale każda strona z Cloudflare, Akamai, DataDome, PerimeterX lub media społecznościowe jak Facebook, Instagram, LinkedIn i X go wykryją.
Czy playwright-stealth ma te same problemy?
Tak. playwright-stealth stosuje to samo podejście: nadpisywanie JavaScript przez wstrzykiwanie na poziomie strony. Nie sięga do TLS fingerprints, artefaktów CDP ani renderowania na poziomie silnika. Ograniczenia detekcji są identyczne.
Czy mogę używać Rebrowser i Clawbrowser razem?
Nie musisz. Clawbrowser obsługuje zarówno warstwę protokołu, jak i warstwę fingerprint. Patche Rebrowser przydają się, gdy używasz standardowego Chrome i nie możesz przejść na przeglądarkę Anti-Detect. Z Clawbrowser artefakty CDP są już pokryte.
Dlaczego Stealth wciąż ma 600K pobrań tygodniowo?
Inercja. Większość tutoriali i odpowiedzi na Stack Overflow wciąż go poleca. Deweloperzy kopiują rozwiązania z 2022 roku, nie sprawdzając, czy pakiet jest nadal utrzymywany. Wysoka liczba pobrań nie oznacza skuteczności przeciwko nowoczesnej detekcji.
Przestań patchować, zacznij naprawiać
Pluginy Stealth były rozsądnym rozwiązaniem, gdy detekcja Anti-Bot opierała się na sprawdzaniu JavaScript. Detekcja przeniosła się na TLS fingerprints, analizę protokołu CDP i różnice renderowania na poziomie silnika. Patchowanie na poziomie strony tych sygnałów nie dosięgnie.
Zainstaluj Clawbrowser, żeby obsłużyć detekcję na poziomie przeglądarki: skopiuj prompt instalacyjny z clawbrowser.ai i wklej go do swojego agenta AI. Usuń puppeteer-extra i puppeteer-extra-plugin-stealth z dependencies. Podłącz swój istniejący kod Puppeteer lub Playwright po CDP. Anti-detection jest w przeglądarce, nie w twoim kodzie.
Model detekcji, na którym to bazuje, znajdziesz w artykule Automatyzacja przeglądarki bez blokowania: 4-warstwowy stos obrony.
Continue exploring
Ask AI how Clawbrowser helps
Czytaj dalej
Powiązane artykuły

Web scraping bez wykrycia: techniki, które nadal działają
Praktyczny przewodnik po web scrapingu: rozpoznanie, HTTP czy browser, ekstrakcja danych, paginacja, sesje i skala z Playwright.
Czytaj artykuł →
Automatyzacja przeglądarki bez blokad: 4 warstwy obrony
Dlaczego automatyzacja przeglądarki jest blokowana i jak to naprawić na każdej warstwie: tożsamość przeglądarki, sieć, zachowanie i zarządzanie sesją. Strukturalny przewodnik dla developerów.
Czytaj artykuł →