Chronione witryny

Nowoczesne strony internetowe stosują zaawansowane systemy wykrywania botów. Ten przewodnik wyjaśnia, jak FourA pobiera stronę w serwisach weryfikujących tożsamość klienta oraz jak zwiększyć wskaźnik sukcesu.

Jak działa wykrywanie botów

Strony internetowe stosują kilka warstw ochrony:

  • Reputacja IP: Adresy centrów danych i znanych proxy są blokowane
  • Fingerprinting warstwy sieciowej: Każdy klient HTTP ma unikalną sygnaturę handshake, którą strony mogą wykryć
  • Fingerprinting przeglądarki: JavaScript sprawdza wskaźniki działania przeglądarki headless
  • Analiza behawioralna: Wzorce requestów, timing oraz przepływ nawigacji
  • Strony weryfikacyjne: zadanie wizualne, które odwiedzający musi wykonać

W odpowiedzi podana jest nazwa systemu, który przeprowadził weryfikację; sekcja Site checks zawiera ich listę.

Najszybsza ścieżka: Auto

Jeśli poziom ochrony nie jest jeszcze znany, wywołaj /api/auto/ z podciągiem validate.data.accept, który zawiera wyłącznie właściwa strona. Tryb Auto przechodzi przez zoptymalizowaną pod kątem kosztów ścieżkę (rotowane proxy, następnie przeglądarka przez proxy; z forceProxy: false najpierw wykonywana jest tania bezpośrednia próba oraz bezpośrednie renderowanie w przeglądarce) i zatrzymuje się na pierwszym etapie, który zwróci response spełniający Twoje reguły. Przy kolejnych wywołaniach do tego samego hosta odtwarzana jest rozgrzana sesja, dzięki czemu drugie zapytanie jest tanie.

curl -X POST https://eu.api.foura.ai/api/auto/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
  }'

Auto rozpoznaje typowe strony challenge i kontynuuje ponawianie prób po ich napotkaniu. Twój ciąg validate.data.accept wyłapuje resztę: nierozpoznaną stronę weryfikacji, login wall lub stronę bez potrzebnej zawartości. Zobacz przewodnik po Smart Fetch, aby zapoznać się z pełnym opisem.

Jak FourA pomaga na każdej warstwie

Realistyczne żądania na poziomie sieci

Pojedynczy endpoint (POST /api/single/) generuje charakterystykę handshake zgodną z prawdziwą przeglądarką. Strony odpowiadają na niego tak samo jak na przeglądarkę, bez narzutu związanego z jej uruchamianiem.

Włącz unblocker, aby wstrzykiwać również realistyczne nagłówki przeglądarki (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker jest domyślnie włączone; ustaw false tylko wtedy, gdy chcesz wysłać czystą sygnaturę klienta.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Renderowanie w prawdziwej przeglądarce

Endpoint browser (POST /api/browser/) uruchamia pełną instancję przeglądarki Chrome. Wykonuje JavaScript strony dokładnie tak, jak przeglądarka użytkownika. unblocker w Browser rozwiązuje weryfikacje wymagane przez stronę przed jej załadowaniem (Turnstile i podobne bramki); pozostaw tę opcję włączoną, chyba że chcesz otrzymać surową stronę z wyzwaniem.

Rotacja proxy

Endpoint proxy (POST /api/proxy/) automatycznie rotuje adresy IP z puli residential oraz data center. Jeśli jedno IP zostanie zablokowane, kolejna próba użyje innego. Użyj ignoreProxies w kolejnym wywołaniu, aby pominąć wykorzystane już węzły wyjściowe; użyj maxTries (domyślnie 5, maks. 90), aby kontrolować liczbę prób.

Węzły wyjściowe ograniczone do kraju

Przekaż exitCountries w /api/proxy/, aby ograniczyć wybór do proxy, których widoczny dla celu kraj jest zgodny ze ścisłą listą dozwolonych. Wartości to dwuliterowe kody (["CZ", "GB"]), oczyszczone z białych znaków, przekonwertowane na wielkie litery i pozbawione duplikatów. FourA nigdy nie przełącza się awaryjnie na niezażądany kraj; jeśli w bieżącej puli brakuje dopasowania, response zwraca code: "no_eligible_proxy" ze znormalizowanym zakresem w details.exitCountries, co pozwala ponowić próbę później bez łagodzenia wymagań. Ograniczanie do kraju jest dostępne od planu Startup wzwyż. W planie bez tej funkcji wywołanie wysyłające exitCountries zostanie odrzucone z kodem 403 i X-FourA-Limit: plan_limit_feature.

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "exitCountries": ["CZ", "GB"],
    "request": {"method": "GET", "url": "https://target.example/pricing"}
  }'

Odpowiedź zawiera exitCountry, gdy żądano określenia zakresu (scoping). Przed zaufaniem payloadowi zweryfikuj, czy należy on do Twojej allowlisty, a następnie użyj zwróconego identyfikatora proxy w kolejnym wywołaniu Browser, aby renderowanie JavaScript odbyło się przez ten sam węzeł wyjściowy.

FourA informuje, co Cię zablokowało

Nie musisz zgadywać, który system zablokował request. Gdy cel uruchamia weryfikację botów, odpowiedź wskazuje jego nazwę.

  • POST /api/single/ i POST /api/proxy/ zwracają obiekt defense: defense.vendor to system, defense.solved określa, czy weryfikacja zakończyła się sukcesem, a defense.present wymienia wszystko rozpoznane w tej odpowiedzi.
  • POST /api/browser/ zwraca defenseSolved oraz defenses.present i defenses.cleared.
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

Wynikają z tego dwie zasady:

  1. solved: false oznacza, że body może być wyzwaniem (challenge), a nie stroną docelową. FourA nigdy nie zwraca strony wyzwania jako właściwej treści, więc sprawdź tę flagę przed parsowaniem.
  2. Rozwiązanie zapewnia clearance. Gdy obecny jest nagłówek defense.cookie, odeślij go jako nagłówek Cookie na tym samym węźle wyjściowym (exit) z tym samym User-Agent, a kolejne requesty całkowicie pominą weryfikację.

FourA rozpoznaje popularne systemy weryfikacji, w tym mechanizmy własne serwisów eBay, Reddit, Amazon i Google Search. Rozpoznawanie ma szerszy zakres niż omijanie (clearing): system, który potrafimy zidentyfikować, ale którego nie potrafimy ominąć, jest raportowany i nigdy nie zwiększa kosztu requestu. Gdy zwrócona strona jest stroną weryfikacyjną takiego systemu, nawet przy kodzie HTTP 200, request nie jest rozliczany, a nagłówek X-FourA-Check-Page wskazuje nazwę systemu. Zobacz Weryfikacje stron, aby poznać wszystkie pola, bieżący podział na omijanie i wykrywanie oraz przykład powtórzenia requestu.

Strategia według poziomu ochrony

Nieznana ochrona

Użyj auto. Najpierw wykonuje tanie próby i eskaluje metody tylko do poziomu wymaganego przez cel, więc koszt rozpoznania ponosisz raz na hosta.

Niska ochrona (większość stron)

Użyj pojedynczego endpointu z unblocker. Dopasowanie na poziomie sieci w zupełności wystarcza.

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'

Średni: strona z wyzwaniem lub podstawowy firewall

Użyj endpointu browser, aby przejść weryfikacje JavaScript:

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'

Wysoki: weryfikacja zachowania i fingerprintu

Uzyj endpointu proxy z wieloma probami ponowienia:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 10,
    "request": {
      "method": "GET",
      "url": "https://heavily-protected.com/prices",
      "unblocker": true
    }
  }'

W przypadku stron z sekwencją zabezpieczeń ("Just a moment", punkt kontrolny bezpieczeństwa), gdzie wymagana jest wyrenderowana strona po przejściu weryfikacji, zobacz Przepisy MCP. Przepis "Protected page: proxy first, browser when JavaScript is needed" pokazuje dokładne przekazanie sesji z proxy do przeglądarki.

Dobre praktyki

  1. Zacznij od trybu auto dla nieznanych celów. Przekaż regułę validate, pozwól mechanizmowi wybrać najtańszy poziom, a następnie odczytaj meta.rung w odpowiedzi, aby sprawdzić, który silnik zadziałał. Gdy już to wiesz, wywołuj ten silnik bezpośrednio dla kolejnych żądań.

  2. Używaj ponownie działającej sesji. Po wywołaniu auto zwrócony obiekt session (proxy ID + cookies + userAgent) może zostać ponownie użyty w /api/single/ lub /api/browser/ dla kolejnych stron na tym samym hoście, w cenie właściwej dla danego endpointu: 2 kredyty w Single z unblocker, 5 w Browser (10 dla strony interaktywnej).

  3. Przestrzegaj limitów rate limit. Nawet przy rotacji proxy wysyłanie setek żądań na sekundę do jednej witryny wywoła detekcję behawioralną. Zachowaj odstęp co najmniej 1 do 2 sekund między żądaniami.

  4. Zostaw unblocker włączone. W Single i Proxy parametr unblocker: true (wartość domyślna) wysyła realistyczny profil przeglądarki i nagłówki. W Browser włącza solver zabezpieczeń. Wyłączaj go tylko wtedy, gdy celowo potrzebujesz czystego profilu klienta lub surowej strony z wyzwaniem.

  5. Monitoruj wskaźniki sukcesu. Sprawdzaj metryki w Panelu, aby śledzić wskaźnik sukcesu w czasie. Nagły spadek oznacza zazwyczaj, że docelowa witryna zaktualizowała swoje zabezpieczenia.

  6. Pomiń spalone węzły wyjściowe. Jeśli wywołanie /api/proxy/ lub /api/auto/ zwróciło proxy ID, które następnie zaczęło zawodzić, przekaż je w ignoreProxies przy następnym wywołaniu, aby FourA wybrało inny węzeł wyjściowy.

  7. Odczytaj defense przed ponowieniem próby. Nazwa dostawcy zabezpieczeń wskazuje, czy warto wypróbować inny profil przeglądarki, czy potrzebujesz pełnego renderowania, czy też weryfikacja wymaga zewnętrznej usługi rozwiązywania.

  8. Zmień profil emulowanej przeglądarki. Niektóre cele akceptują jedną przeglądarkę, a odrzucają inną. Ustaw browser, os lub version w Single oraz Proxy i sprawdź GET /api/profiles dla aktualnego katalogu. Szczegóły znajdują się w dokumentacji endpointów.

Ograniczenia

Niektóre scenariusze wymagają dodatkowej obsługi poza API:

  • Treści chronione logowaniem: FourA nie zarządza długotrwałymi sesjami logowania. Endpoint browser akceptuje cookies dla każdego requestu; pliki cookie sesji należy przekazać we własnym zakresie.
  • Interaktywne zadania weryfikacyjne: FourA rozpoznaje zadania wizualne i zgłasza je w defense.present, ale ich nie rozwiązuje. Turnstile jest obsługiwany przez Browser.
  • Treści ograniczone do wybranych krajów: użyj exitCountries w /api/proxy/, aby ograniczyć wybór do dozwolonych krajów. Serwisy, które dodatkowo wprowadzają ograniczenia na poziomie ISP lub ASN (niektórzy licencjonowani bukmacherzy krajowi, niektóre usługi rządowe), mogą nadal blokować standardowe węzły wyjściowe residential; request zwraca no_eligible_proxy, gdy bieżąca pula nie zawiera pasującego węzła.
  • Serwisy z ograniczeniami prawnymi: Zawsze upewnij się, że zbieranie danych jest zgodne z regulaminem witryny docelowej oraz obowiązującymi przepisami prawa.

Następne kroki

Aktualizacja: 27 września 2026