← Wszystkie wpisy

Profile przeglądarek: wybierz wygląd swoich żądań

Wskaż przeglądarkę, system operacyjny i wersję dla każdego żądania z publicznego katalogu 79 zmierzonych profili. Gdy strona odrzuci dany profil, rotacja go zmieni.

Co nowego

Rotacja adresów wyjściowych to część, którą automatyzują wszyscy. Sygnatura przeglądarki pod nimi zazwyczaj w ogóle się nie zmienia.

Single i Proxy Finder przyjmują teraz cztery opcjonalne pola, które określają, jaką przeglądarkę prezentuje Twoje request: browser, os, version oraz profile. Stojący za nimi katalog jest publiczny pod adresem GET /api/profiles i nie wymaga klucza API. Obecnie zawiera 79 profili dla Chrome, Edge, Safari, Firefox i Tor na systemach Windows, macOS, Android oraz iOS.

Gdy nie wskażesz żadnego, Proxy Finder zmieni go za Ciebie. Zrobi to jednak dopiero wtedy, gdy witryna dwukrotnie potwierdzi, że odrzuca przesłany profil.

Jak to działa

Trzy z tych pól są przeznaczone dla ludzi, a jedno dla maszyn.

browser, os i version zawężają katalog, a przesłać możesz dowolny ich podzbiór. os dopasowuje według rodziny, więc wskazanie macOS akceptuje każde wydanie macOS na liście, podczas gdy podanie dokładnej etykiety wydania zawęża wybór do tej konkretnej wersji. Jeśli kryteria nadal spełnia kilka profili, wybierana jest najnowsza wersja, ponieważ bycie aktualnym jest kluczowe. To właśnie stare wersje major trafiają na listy blokowanych.

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://example.com/listing/42",
    "browser": "Safari",
    "os": "iOS"
  }'

To mapuje się na najnowszego Safari na iOS w katalogu i wysyła powiązany z nim User-Agent, client hints oraz kolejność nagłówków, dokładnie w tym porządku. Kolejność nagłówków sama w sobie stanowi sygnał, więc nic nie jest sortowane przy wysyłce.

profile to czwarte pole: dokładny identyfikator z katalogu, przeznaczony dla kodu, który musi wysyłać tego samego klienta po pojawieniu się nowszej wersji. Proxy Finder przyjmuje wszystkie cztery wewnątrz obiektu request. Pełna lista parametrów znajduje się w dokumentacji API, a Playground korzysta z tego samego katalogu, więc jego listy rozwijane oferują tylko to, o co może zapytać Twój kod. Te same cztery pola znajdują się wewnątrz foura_single i foura_proxy na serwerze MCP, dzięki czemu agent może ponowić próbę jako inna przeglądarka zamiast zwracać zwykły błąd 403.

Dwie rzeczy, których to rozwiązanie celowo nie robi.

Kombinacja, której katalog nie może zaoferować, powoduje błąd wskazujący dostępne opcje dla danej przeglądarki. Zastosowanie domyślnego profilu wysłałoby klienta, którego nie wybrano i którego nie widać w odpowiedzi. Wybór profilu z unblocker: false również jest odrzucany, ponieważ ta flaga odpowiada za przekazywanie nagłówków (co ta flaga faktycznie robi). Połowiczny profil jest gorszy niż żaden.

Sam katalog jest mierzony, a nie wpisywany ręcznie. Skrypt przepuszcza każdy profil przez rzeczywistą ścieżkę żądania i rejestruje to, co faktycznie trafia do sieci. Ma to większe znaczenie, niż mogłoby się wydawać: między dwoma ostatnimi głównymi wydaniami jednej przeglądarki zmienił się ciąg zastępczy marki i odwróciła się kolejność marek, a to dokładnie taki detal, jaki analizują systemy wykrywania.

Wpływ

Oto część, której się nie spodziewaliśmy.

Wartość domyślna jest wspólna dla wszystkich. Klient, którego prezentuje Twoje żądanie, gdy nie podasz żadnych parametrów, jest dokładnie tym samym, którego wysyła każde inne żądanie bez konfiguracji. Systemy ochronne szukające taniego punktu zaczepienia wykorzystują właśnie to. Taka blokada objawia się w unikalny sposób: strona, która odrzuca jedną przeglądarkę, odrzuca ją na każdym posiadanym przez Ciebie węźle wyjściowym. Cały budżet ponowień marnuje się na udowadnianie, że ten sam klient jest niemile widziany.

Zmierzyliśmy to trzykrotnie, u trzech dostawców, i za każdym razem schemat był taki sam.

Portal nieruchomości chroniony przez PerimeterX odrzucił dziewięć prób na domyślnej konfiguracji. Sama zmiana deklarowanej platformy (wszystko inne bez zmian, ta sama pula) zwróciła stronę sześć razy na sześć prób. Sklep z suplementami za Akamai odrzucił konfigurację domyślną i bez problemu obsłużył dwie inne rodziny przeglądarek. Portal wiadomości finansowych chroniony przez DataDome odpowiedział na domyślne żądanie błędem 401 i stroną pośrednią o rozmiarze 774 bajtów, podczas gdy trzy inne profile pobrały właściwą stronę, ważącą około 760 KB, dwanaście razy każdy. Wykonaliśmy ten test w obu kierunkach, aby upewnić się, że kolejność żądań nie miała wpływu na wynik.

Dlatego Proxy Finder rotuje teraz rodzinę przeglądarek, a nie tylko węzeł wyjściowy. Dwa niezależne węzły wyjściowe muszą zwrócić odmowę, zanim nastąpi zmiana, ponieważ jedna odmowa to tylko opinia pojedynczego węzła. Następnie mechanizm przechodzi przez sekwencję, która zaczyna się od najmniejszej możliwej zmiany, czyli platformy, a dopiero potem próbuje innych rodzin.

Nic to nie kosztuje. Rotacja zmienia to, co wysyła ponowna próba (retry), a nie to, czy w ogóle do niej dochodzi, więc liczba zapytań i kredytów na zadanie pozostaje dokładnie taka sama.

Dla zaawansowanych użytkowników

Rotacja nie wchodzi Ci w drogę, a rządzące nią zasady warto znać.

Nigdy się nie uruchamia, gdy samodzielnie wskażesz profil. Nie włącza się również wtedy, gdy wyślesz własny nagłówek user-agent lub cookie, i to jest kluczowa kwestia: cookie autoryzacyjne (clearance cookie) jest powiązane z klientem, który je uzyskał. Rotacja sygnatury w trakcie działającej sesji zepsułaby zapytanie, które normalnie zakończyłoby się sukcesem. Przypnij to, co chcesz, a pozostanie to nienaruszone.

Nie każdy błąd stanowi powód do zmiany profilu. Rozpoznany dostawca zabezpieczeń się liczy. Liczy się również sam status odmowy (401, 403, 429, 503) bez zidentyfikowanego dostawcy, co okazało się istotne. Jedno zadanie zwróciło osiem odrzuceń ze statusem błędu i bez rozpoznania żadnego dostawcy: były to rzeczywiste odmowy, które rotacja ignorowała, ponieważ ufała tylko detektorowi. Brakująca strona lub blokada regionalna się nie liczą. Są to odpowiedzi dotyczące Twojego URL i geolokalizacji, a nie Twojego klienta.

Wszystko to jest widoczne. Udana odpowiedź z Proxy Finder zawiera profile tylko wtedy, gdy to my dokonaliśmy wyboru, nigdy wtedy, gdy zrobiłeś to Ty. Nieudane zadanie zwraca attemptReport.profilesTried: listę wysłanych rodzin w kolejności ich użycia, z wartością default dla zapytania, które wyszło bez modyfikacji. Bez tego pola komunikaty "wypróbowaliśmy cztery przeglądarki i każda została odrzucona" oraz "nigdy nie zmieniliśmy przeglądarki" wyglądałyby z zewnątrz identycznie.

Warto wyrobić w sobie jeden nawyk: testując, czy dany profil pomaga, nie zmieniaj żadnych innych parametrów. Zestawienie narzędzi do testowania fingerprintingu od Scrapfly z 2026 roku (2026 rundown of fingerprint testing tools) dobrze to ujmuje: zmiana trzech zmiennych między próbami mówi Ci, że coś zadziałało, ale nie wskazuje, która zmiana miała znaczenie. Ten sam cel, ten sam węzeł wyjściowy, jedno zmienione pole. Dokładnie tak powstały wszystkie powyższe liczby.

Co dalej

Lista kandydatów rośnie wyłącznie na podstawie pomiarów, cel po celu. Rodzina zostaje dodana dopiero po tym, jak zaobserwujemy, że otwiera cel, którego domyślna konfiguracja nie była w stanie obsłużyć, a nie dlatego, że wydawała się dobrym pomysłem. Katalog jest mierzony na nowo przy każdej aktualizacji silnika, zamiast bezkrytycznie przepisywany.

Taka jest specyfika tego problemu. Najlepsza sygnatura klienta to ruchomy cel; jej śledzenie to ciągła praca, a nie jednorazowe wdrożenie, a to, co działało w zeszłym kwartale, dziś jest już zapewne na czyjejś liście blokad. Dlatego jest to pole, które konfigurujesz, i katalog, który możesz sprawdzić, a nie z góry narzucona przez nas wartość.