Najważniejsze informacje
W tym tygodniu wdrożyliśmy Auto na produkcję. Skieruj je na dowolny URL, a przejdzie ono przez zoptymalizowaną pod kątem kosztów ścieżkę (probe, znalezienie węzła wyjściowego, rozwiązanie w przeglądarce, tani replay) i zwróci treść wraz z sesją, która ją pobrała. Zimne sprawdzenie Turnstile na minfin.bg zajmuje około 5 sekund przez Auto; kolejne wywołanie wykonuje replay przez Single za 2 kredyty. Dodaliśmy również 6 języków na blogu, w dokumentacji i na portalu aktualizacji, zwiększając ich liczbę z 7 do 13.
Co nowego
Auto: jeden endpoint, cztery produkty, optymalizacja kosztów
POST /api/auto działa na produkcji. Przekazujesz URL, a system wybiera odpowiedni produkt (Single, Proxy Finder lub Browser), obsługuje wyzwania Cloudflare, gdy się pojawią, i zwraca odpowiedź wraz z obiektem session zawierającym ID proxy, pliki cookie oraz User-Agent, które zadziałały. Użyj ponownie zwróconej sesji przy następnym wywołaniu, a Auto wykona replay przez Single za 2 kredyty zamiast powtarzać pełny proces rozwiązywania.
Każda odpowiedź zawiera teraz ślad meta, dzięki czemu widać, który etap zadziałał, czy zabezpieczenie zostało rozwiązane, ile podwywołań było potrzebnych i ile łącznie kredytów zużyto. Zdefiniuj własne reguły validate, a Auto wymusi je na każdym etapie, nie tylko na ostatnim, więc strona z blokadą regionalną zwrócona z kodem transportowym 200 nie jest już traktowana jako sukces, jak miało to miejsce wcześniej.
Playground w Dashboardzie zyskał zakładkę Auto z obsługą timeout_ms, ignoreProxies, returnSession oraz forceProxy, więc możesz przetestować Auto z poziomu formularza przed wdrożeniem go w kodzie.
6 nowych języków
Hiszpański, francuski, japoński, koreański, brazylijski portugalski i rosyjski dołączyły do bloga, dokumentacji i portalu aktualizacji, co zwiększa liczbę języków w naszych publicznych serwisach z 7 do 13. Treść jest tłumaczona przez pipeline uwzględniający role UI: etykiety nawigacji korzystają z promptu stawiającego zwięzłość nad dosłowność, aby pasek boczny pozostał krótki, a treści wpisów zachowują strukturę Markdown, dzięki czemu bloki kodu i nagłówki pozostają nienaruszone.
Przełącznik języków również został przebudowany. Flagi zostały usunięte (flaga Hiszpanii wyklucza pozostałe 20 krajów hiszpańskojęzycznych, a ta sama logika dotyczy portugalskiego, arabskiego i angielskiego). Wybór opiera się teraz na nazwach rodzimych, a każda opcja pokazuje również swoją nazwę w aktywnym języku interfejsu, więc możesz znaleźć "Deutsch" jako "niemiecki" w polskiej przeglądarce. Wpisz frazę w polu wyszukiwania u góry, aby przefiltrować 13 lokalizacji do tej wybranej, użyj strzałek do nawigacji i naciśnij enter, aby przełączyć. Każda opcja to prawdziwy <a href> z hreflang i lang, dzięki czemu wyszukiwarki i roboty AI mogą indeksować każdą wersję językową.
Obsługa Cloudflare: co dokładnie zostało naprawione
Auto obsługuje teraz cztery scenariusze Cloudflare, które wcześniej zwracały nieprawidłową odpowiedź:
- Ekran pośredni "Just a moment" zwracany z kodem transportowym 200 nie jest już traktowany jako sukces. Auto eskaluje do poziomu rozwiązywania zamiast przekazywać stronę z wyzwaniem.
- Wyzwania nieinteraktywne (automatyczne przejście "Checking your browser" na marathonbet) renderują się po stronie klienta po uzyskaniu clearance. Przeglądarka odpytuje aktywny DOM i kończy działanie w momencie pojawienia się
cf_clearance, zamiast kończyć się błędem timeoutu na pustej odpowiedzi najwyższego poziomu. - Prawdziwy status po clearance jest respektowany. Ograniczenie regionalne zwrócone po zaliczeniu weryfikacji daje kod 451, a nie 200 z podejrzaną zawartością body.
- Interaktywny Turnstile (minfin.bg) jest rozwiązywany w pełni automatycznie. Auto najpierw próbuje rozwiązać wyzwanie w przeglądarce przez bezpośredni egress (zaufany endpoint egress przechodzi Turnstile tam, gdzie darmowe wyjścia z datacenter dostają eskalację wyzwania), a w razie niepowodzenia wraca do rotacji proxy.
MCP: foura_auto i publiczne discovery
Serwer MCP otrzymał narzędzie foura_auto, które odzwierciedla /api/auto. Przekaż mu URL, a otrzymasz zawartość oraz sesję. Discovery (narzędzia, prompty, możliwości) działa teraz bez uwierzytelniania, więc agenci mogą przeglądać zasoby przed autoryzacją, a mapa /llms.txt jest proxowana w katalogu głównym. Strona główna została przeniesiona pod adres foura.ai/mcp ze względu na link equity, a subdomena przekierowuje przeglądarki kodem 301.
Pod maską
Wzmocniliśmy ochronę przed SSRF wokół fetcherów. Firewall egress na poziomie jądra blokuje dwóm usługom wykonującym żądania otwieranie połączeń do zakresów prywatnych, CGNAT, link-local oraz metadanych chmurowych. Weryfikacja na poziomie aplikacji obejmowała już sam URL, a teraz również niższe warstwy sieciowe niczego nie przepuszczą. Pole proxy w żądaniu jest traktowane tak samo: podany przez klienta host proxy, który rozwiązuje się do adresu prywatnego, jest odrzucany przed wysłaniem żądania.
Dziennik aktywności nie zapisuje już surowego adresu URL proxy, nawet jeśli klient taki przesłał. Zwracana odpowiedź zawsze zawiera nieprzejrzysty identyfikator proxy w formacie base36, a zapisany payload jest z nią zgodny. Usunęliśmy także nagłówek x-powered-by ze wszystkich odpowiedzi API.
Liczby
- Interaktywne rozwiązanie Turnstile na minfin.bg: kod 200 z zawartością serwisu ministerstwa w około 5 sekund, następnie 2 kredyty za każde ponowne odtworzenie z wykorzystaniem sesji z pamięci podręcznej.
- Przy współbieżnym obciążeniu celu z limitami rate limit, Auto rozkłada ruch na wiele węzłów wyjściowych (4 różne węzły wyjściowe użyte na hoście o stałym wyjściu, 21 z 24 powtórzeń po 2 kredyty), zamiast kierować wszystkie żądania przez jeden węzeł.
- 13 języków wdrożonych na blogu, w dokumentacji i aktualizacjach.
Auto to docelowy kształt API, do którego dążyliśmy przez cały kwartał. Wskaż URL, odbierz odpowiedź, zachowaj sesję. Najciekawsza praca toczy się teraz na stykach systemów: mierzymy, jak skutecznie kosztowa drabina eskalacji amortyzuje się na realnym ruchu, oraz szukamy reguł walidacji, które wyłapują fałszywie pozytywne sukcesy, o których nikt nie myśli.