Kiedyś scraping wystarczał "pobierz URL przez curl, dodaj User-Agent: Mozilla/5.0". W 2026 to działa może na 10% stron komercyjnych. Reszta ma anti-bot system który widzi twojego bota w 200ms. Ten przewodnik tłumaczy dlaczego.
Anti-bot detection nie patrzy CZY jesteś botem. Patrzy NA ILE wyglądasz na bota — i wystawia score. Powyżej threshold = block.
4 główni gracze
Większość anti-bot systemów to:
- Cloudflare Bot Management — domyślny dla 30%+ internetu. Każdy request idzie przez ich edge network, więc widzą wszystko. JS challenge ("Checking your browser…") to ich znak rozpoznawczy.
- Akamai Bot Manager — używany przez większość Fortune 500 (banki, telekomy, retail premium). Bardziej agresywny niż Cloudflare, częściej hard-bansuje.
- Datadome — francuski gracz, popularny w EU. Specjalizacja: e-commerce i ticketing.
- PerimeterX (HUMAN) — używany w sektorze sneakers, drops, gaming. Najtrudniejszy do obejścia.
Plus mniejsze: Imperva (Incapsula), Kasada, F5 Shape. Wszystkie używają podobnych technik, różnią się głównie agresywnością i ceną.
Co konkretnie sprawdzają (40+ sygnałów)
Każdy request niesie setki ujawnień. Anti-bot system patrzy na:
1. Network layer (~10 sygnałów)
- IP reputation (czy adres jest w blacklistach, czy to datacenter czy ISP)
- TLS fingerprint (kolejność cipher suites, supported extensions — różni się między curl, Python requests, Chrome)
- HTTP/2 fingerprint (pseudo-headers order, settings frame values)
- TCP fingerprint (window size, MSS, options order — OS leak)
2. Browser identification (~15 sygnałów)
- User-Agent + sec-ch-ua headers (klient header consistency)
- Headers order (Chrome wysyła w innej kolejności niż Python)
- Headers presence (sec-fetch-dest, sec-fetch-mode — bardzo trudno fake'ować)
- Accept-Language / Accept-Encoding details
3. JavaScript fingerprinting (~20 sygnałów)
- Canvas fingerprint — narysuj pixel pattern, hashuj rezultat. Różny per device.
- WebGL fingerprint — GPU vendor + renderer + supported extensions.
- Audio fingerprint — generuj sinusoidę, hashuj output.
- Fonts enumeration — jakie fonty są zainstalowane.
- Plugins / MimeTypes — wymierające ale wciąż używane.
- Screen resolution + colorDepth + pixelRatio
- Timezone + Intl.DateTimeFormat consistency vs IP geolocation.
4. Behavioral (~10 sygnałów)
- Mouse movement curves (humans = bezier-like, bots = linear)
- Typing rhythm na formularzach
- Scroll velocity i acceleration
- Time between page load and first interaction (boty = milisekundy, ludzie = sekundy)
Dlaczego curl / requests nie wystarczają
Python requests ma TLS fingerprint który widać z 100m. HTTP/2 nawet nie obsługuje. Pierwsze 3 sygnały = block. Tu nie pomoże User-Agent.
Headless Chrome bez modyfikacji ma navigator.webdriver = true. Inne quirks: brak chrome.runtime, niespójność navigator.plugins.length === 0 przy navigator.platform === "Win32". Wszystko sprawdzane.
Jak Playwright sobie z tym radzi
Playwright vanilla = headless Chrome = wykrywalny. Production scraping używa:
- playwright-extra + stealth plugin — patchuje 20+ flagów wykrywania headless
- Real fingerprints rotation — generator legit canvas/WebGL fingerprints
- Residential proxy pool — IP z prawdziwych ISP, nie datacenter
- Browser pool sharing — reuse sesji żeby look like returning user
- CDP-based interaction — mouse moves curve-based, typing speed varied
Plus context — request comes with sensible referer chain, accept-language matches IP geo, sessions live multiple page navigations.
Praktyczne wnioski
Co to znaczy dla biznesu zamawiającego scraping:
- "Cloudflare protected" nie znaczy "nie da się" — da się, ale 5-10× drożej niż niezabezpieczona strona.
- Datacenter proxy ($1-5/GB) wystarczą tylko dla najsłabszego anti-bot. Większe targety wymagają residential ($5-15/GB).
- PerimeterX targets (sneakers, top retail) — czasem economically infeasible dla małych projektów.
- Realistic accuracy dla protected sites: 70-95%. Nigdy 100%. Akceptuj retry logic.
- ToS violation enforcement rośnie — jeśli scraping jest na granicy legal, oceń ryzyko z prawnikiem.
Sedno
Anti-bot detection w 2026 to wieloletni wyścig zbrojeń. Strony chronią dane, scrapery używają coraz lepszych technik. Production scraping protected targets jest droższe ale możliwe. Jeśli twój dostawca obiecuje "100% accuracy na Cloudflare za $500" — kłamie albo nie rozumie problemu.
Sensowne expectations: 90-98% accuracy, retry logic, 3-15× wyższy infra cost niż niezabezpieczone targety, akceptacja że co kilka miesięcy parser updates są niezbędne. To realne, mierzalne, działa od lat.