>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
JavaScript

Jak sprawdzić, jaką ochronę strona stosuje i jakie dane o Tobie zbiera

Scrapfly Anti-bot Detector banner

Każdy, kto kiedykolwiek pisał parser lub konfigurował testy end-to-end na prawdziwych stronach internetowych, spotkał się z sytuacją, w której skrypt nagle otrzymuje status 403 lub zostaje przekierowany w pętli do pustej strony. Siedząc w DevTools, przechodzisz przez zakładki Network i Application, próbując odgadnąć: czy Cloudflare zablokował żądanie, czy DataDome wcisnął niewidzialną listę kontrolną, a może skrypt strony cicho pobrał odcisk palca Canvas i WebGL?

Zespół Scrapfly wydał rozszerzenie Chrome typu open-source o nazwie Scrapfly Anti-bot Detector. To narzędzie dla badaczy bezpieczeństwa, pentesterów i programistów parserów, które analizuje strony w czasie rzeczywistym i pokazuje, które systemy ochrony są aktywne oraz które techniki fingerprintingu są uruchamiane w danym momencie.

Detection overview

Co rozszerzenie potrafi wykryć

Rozszerzenie działa na Manifest V3 i nie wysyła danych na zewnętrzne serwery. Cała analiza odbywa się lokalnie w przeglądarce.

Klasyfikuje wykryte mechanizmy ochrony w trzy kategorie:

  • Systemy ochrony przed botami. Wykrywa Cloudflare, Akamai, DataDome, PerimeterX, Imperva, Kasada, Shape Security i AWS WAF.
  • CAPTCHA. Znajduje reCAPTCHA, hCaptcha, FunCaptcha, GeeTest i Cloudflare Turnstile.
  • Techniki cyfrowego fingerprintingu. Śledzi 21 metod fingerprintingu, w tym Canvas, WebGL, AudioContext, czcionki, WebRTC, Performance API, właściwości Navigator i Storage.

| Detection | History | Rules Editor | |---|---|---| | Detection | History | Rules |

Jak działa wielowarstwowa detekcja

Systemy anty-bot rzadko ujawniają się jawnym nagłówkiem odpowiedzi. Zazwyczaj rozprowadzają swoją logikę między skrypty, ciasteczka i obiekty globalne. Rozszerzenie wykorzystuje pięć warstw analizy jednocześnie.

Po pierwsze, sprawdza DOM. Rozszerzenie szuka charakterystycznych elementów znaczników, nazw klas i połączonych zewnętrznych skryptów.

Równolegle service worker monitoruje żądania sieciowe, filtrując nagłówki, ciasteczka, adresy URL żądań i treści przesyłanych payloadów.

Najciekawsza część polega na przechwytywaniu wywołań API przeglądarki. Zanim skrypty strony zaczną się wykonywać (na etapie document_start), rozszerzenie wstrzykuje hooki do głównego kontekstu strony (MAIN world). Jeśli skrypt ochrony próbuje narysować ukryty element na canvasie lub pobrać parametry kontekstu audio, hook rejestruje wywołanie, zbiera parametry wywołania i przekazuje je przez izolowany mostek do modułu detektora.

Hooki nie pozostają aktywne bezterminowo: są automatycznie usuwane po dwóch sekundach braku aktywności lub 8 sekundach od startu strony.

| Data extraction tools | Settings | |---|---|---| | Advanced Tools | Settings |

Wbudowane narzędzia do głębokiej analizy

Oprócz prostej listy wykrytych dostawców, rozszerzenie zawiera sekcję Advanced Tools. Rozwiązuje praktyczny problem: wyodrębnianie parametrów potrzebnych do debugowania automatyzacji.

  • Dla reCAPTCHA, hCaptcha i Turnstile moduł znajduje SiteKey, selektory kontenerów i zarejestrowane wywołania zwrotne JS.
  • Dla Akamai i DataDome narzędzie przechwytuje generowane dane sensorów i analizuje ważność ciasteczek ochronnych.
  • Dla FunCaptcha i GeeTest parsuje klucze publiczne i parametry wyzwania.
  • Dla Imperva i Shape Security skanuje specyficzne nagłówki i powiązane skrypty walidacji.

Narzędzie może przechwytywać dane z pośrednich stron wyzwania przed tym, jak przeglądarka wykona ostateczne przekierowanie do strony docelowej.

Architektura projektu i brak kroku kompilacji

Kod źródłowy jest napisany w czystym nowoczesnym JavaScript bez bundlerów, Webpacka ani TypeScript. Aby uruchomić projekt lokalnie, wystarczy sklonować repozytorium i załadować folder do Chrome w trybie dewelopera.

Struktura repozytorium jest podzielona na wyraźne warstwy:

core/
├── manifest.json              # Конфигурация Manifest V3
├── background.js              # Service Worker, сетевой анализ
├── content.js                 # Content script в ISOLATED world
├── content-main-world.js      # JS-хуки в MAIN world
├── detectors/                 # Правила детекции в формате JSON
   ├── antibot/              # Cloudflare, Akamai, DataDome, Imperva
   ├── captcha/              # reCAPTCHA, Turnstile, hCaptcha
   └── fingerprint/          # Canvas, WebGL, Audio, Storage
└── modules/                   # Менеджеры состояния и обработчики

Wszystkie sygnatury detekcji i reguły są wyodrębnione do plików JSON w katalogu detectors/. Możesz je edytować bezpośrednio w interfejsie rozszerzenia przez wbudowany edytor reguł, dodając własne wyrażenia regularne, sprawdzanie zmiennych globalnego obiektu window lub niestandardowe sygnatury ciasteczek.

Do optymalizacji wydajności autorzy użyli cache LRU dla skompilowanych wyrażeń regularnych, co eliminuje ryzyko zawieszeń spowodowanych przez ReDoS, oraz 12-godzinnego cache wyników z wczesnym wyjściem przy dopasowaniach o wysokim stopniu pewności.

Testy są napisane na wbudowanym runnerze node:test i nie wymagają zewnętrznych zależności. Możesz uruchomić sprawdzanie składni i testy jednym poleceniem:

npm run verify

Do jakich zadań to się przyda

Przede wszystkim rozszerzenie oszczędza czas programistom crawlerów i analitykom danych. Zamiast ręcznie przeszukiwać zminifikowany kod i logi sieciowe, możesz w kilka sekund dokładnie zrozumieć, z kim masz do czynienia i jakie sygnatury środowiska strona sprawdza.

Drugi scenariusz to audyt własnej ochrony. Jeśli konfigurujesz WAF lub moduł anty-bot w produkcji, rozszerzenie wyraźnie pokaże, czy zewnętrzny obserwator może zobaczyć twoje reguły i czy wyzwania działają poprawnie.

Na koniec to doskonały materiał edukacyjny dla każdego, kto chce poznać, jak działa Manifest V3, bezpieczny transfer danych między kontekstami MAIN i ISOLATED oraz pasywne metody fingerprintingu. Projekt jest licencjonowany na NPOSL-3.0 i jest dostępny w Chrome Web Store.

Powiązane projekty