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/iPOST /api/proxy/zwracają obiektdefense:defense.vendorto system,defense.solvedokreśla, czy weryfikacja zakończyła się sukcesem, adefense.presentwymienia wszystko rozpoznane w tej odpowiedzi.POST /api/browser/zwracadefenseSolvedorazdefenses.presentidefenses.cleared.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
Wynikają z tego dwie zasady:
solved: falseoznacza, ż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.- Rozwiązanie zapewnia clearance. Gdy obecny jest nagłówek
defense.cookie, odeślij go jako nagłówekCookiena 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
Zacznij od trybu auto dla nieznanych celów. Przekaż regułę
validate, pozwól mechanizmowi wybrać najtańszy poziom, a następnie odczytajmeta.rungw odpowiedzi, aby sprawdzić, który silnik zadziałał. Gdy już to wiesz, wywołuj ten silnik bezpośrednio dla kolejnych żądań.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 zunblocker, 5 w Browser (10 dla strony interaktywnej).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.
Zostaw
unblockerwłączone. W Single i Proxy parametrunblocker: 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.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.
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 wignoreProxiesprzy następnym wywołaniu, aby FourA wybrało inny węzeł wyjściowy.Odczytaj
defenseprzed 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.Zmień profil emulowanej przeglądarki. Niektóre cele akceptują jedną przeglądarkę, a odrzucają inną. Ustaw
browser,oslubversionw Single oraz Proxy i sprawdźGET /api/profilesdla 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
cookiesdla 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
exitCountriesw/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 zwracano_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
- Smart Fetch (Auto): Szczegółowe omówienie
/api/auto/ - Wybór odpowiedniego endpointu: Przewodnik ułatwiający wybór endpointu
- Częste problemy: Rozwiązywanie błędów 403 i stron weryfikacyjnych
- Endpointy API: Pełna dokumentacja parametrów, w tym
exitCountries - Site checks: Pole
defense, lista systemów i odtwarzanie clearance - Szablony MCP: Szablony przepływów pracy, w tym łańcuch proxy-first-then-browser