Najważniejsze informacje
Wyłącz jeden z naszych serwerów, a Twoje kolejne żądanie trafi na inny. API, port proxy, serwer MCP, logowanie i strona działają teraz także na serwerach zapasowych, a ruch przełącza się automatycznie. Rate limity przestały też karać za drobne przekroczenia: otrzymujesz swój limit, a odrzucany jest tylko nadmiar.
Co nowego
Serwery zapasowe na każdym kroku
Jeśli główne serwery przestaną odpowiadać, Twój ruch przełączy się na serwery zapasowe bez żadnych zmian po Twojej stronie. Te same klucze, te same hosty, ci sami użytkownicy proxy.
Żądanie, które trafi na serwer niemogący go w danej chwili obsłużyć, zostaje przekazane do takiego, który może to zrobić, zamiast zwracać błąd. Twoje wywołania na pozostałych serwerach nie zwalniają w trakcie tego procesu.
Rate limity przycinają nadmiar zamiast blokować dostęp
Gdy nieznacznie przekroczysz minutowy limit swojego planu w Single lub Proxy Finder, otrzymasz pełną przysługującą pulę, a odrzucony zostanie wyłącznie nadmiar, ponieważ odrzucone żądania nie wliczają się już do limitu na daną minutę. Nagłówek Retry-After informuje, kiedy przejdzie kolejne z nich.
Zbyt agresywne ponawianie prób spowoduje chwilową pauzę. Gdy liczba odrzuceń w ciągu minuty przekroczy dwukrotność Twojego limitu, odpowiedzią będzie 30 sekund oczekiwania oznaczone jako cooldown: true. Ponieważ odrzucenia w tym czasie nie są zliczane, blokada ustępuje samoczynnie, nawet jeśli Twój klient nadal wysyła zapytania. Nowe połączenia z portem proxy podlegają tej samej regule: próba, która nie przekształciła się w tunel, nie wlicza się do limitu minutowego.
import time
import requests
def single(url, key, tries=5):
for _ in range(tries):
r = requests.post(
"https://api.foura.ai/api/single",
headers={"X-API-Key": key},
json={"url": url},
)
if r.headers.get("X-FourA-Limit") != "plan_limit_rate":
return r
# same header on the 30-second pause; the body adds "cooldown": true
time.sleep(int(r.headers.get("Retry-After", "1")))
return r
Każde pole znajduje się na stronie limitów zapytań.
Auto poddaje się szybciej na stronach odrzucających każdy ruch
Gdy strona odrzuca każdy węzeł wyjściowy sprawdzany przez Auto, w tym Browser, wywołanie kończy się teraz po kilku próbach zamiast zużywać cały budżet. Na stronach obsługiwanych wcześniej przez Proxy Finder, Auto najpierw odpytuje Proxy Finder o stronę według Twojej reguły validate, a to wyszukiwanie jest bezpłatne, jeśli zwróci pusty wynik.
Dwie kolejne zmiany utrzymują Auto w ramach przydzielonych zasobów. Wywołanie oczekujące na zajętą sesję lub na inne żądanie przetwarzające już tę samą stronę kończy się teraz w ramach Twojego parametru timeout_ms z błędem time budget exhausted, co pozwala ponowić próbę lub zwiększyć limit (szczegóły opisano w sekcji częste problemy). Z kolei strona JSON zwracana jest w polu data jako tekst bez względu na użytą trasę, więc jeden parser obsługuje każde wywołanie.
Żadna z tych zmian nie wpływa na przeznaczenie Auto. Narzędzie znajduje trasę; po jej znalezieniu ponów zwrócone session w /api/single lub /api/browser i tam skieruj ruch.
Strony wymagające dodatkowego kroku
Browser radzi sobie teraz z kolejnym typem stron przejściowych: krótkimi ekranami pośrednimi, które uruchamiają skrypt i przeładowują się do właściwej treści, zwracając stronę docelową. Auto przekazuje takie strony do Browser na tym samym węźle wyjściowym, dzięki czemu wywołanie kończy się pobraniem docelowej treści witryny.
Część stron produktów Amazon wymaga najpierw kliknięcia "Continue shopping". Single oraz Browser klikają teraz ten przycisk na tym samym węźle wyjściowym i zwracają stronę produktu. Identycznie działają wywołania przez Proxy Finder i Auto.
Browser podąża również za stronami przekierowującymi na inny adres po załadowaniu, zamiast czekać na wyczerpanie timeoutu. Odsyłane cookies o nazwach __Secure- lub __Host- otrzymują atrybuty wymagane przez ich prefiksy, dzięki czemu strona widzi kompletną zapisaną sesję.
Proxy Finder i dwa bardziej precyzyjne błędy
Żądania czystego HTTP przesyłane przez Proxy Finder otwierają teraz bezpośrednie połączenie z witryną, tak jak działo się to zawsze w przypadku HTTPS. Serwer proxy, który odpowiada własną stroną lub zwraca to samo body dla niepowiązanych witryn, jest pomijany, a żądanie przechodzi do następnego węzła.
Przekazanie własnego URL proxy do Single lub Browser z nierozwiązywalną nazwą hosta zwraca kod status 0 wraz z błędem wskazującym dany host, dokładnie tak samo jak w przypadku celu. Żądanie skierowane bezpośrednio na api.foura.ai lub eu.api.foura.ai od razu kończy się kodem 400, zanim jakiekolwiek zasoby zostaną pobrane lub naliczone opłaty. Treść błędu wskazuje typową przyczynę: link rozwiązany względem URL API zamiast strony, z której pochodzi.
Panel, rejestracja i rozliczenia
- Rejestracja rozpoczęta na foura.ai prowadzi teraz do Twojego Dashboardu, gdzie Overview prowadzi Cię do pierwszego wyniku: utwórz klucz API, a następnie wyślij request z terminala lub Playground. Na telefonie kroki zaczynają się w Playground, a port proxy otrzymuje własne kroki oparte na użytkowniku proxy.
- Na telefonie lub w wąskim oknie Playground przewija widok do response, gdy tylko zostanie odebrana.
- Usage by Domain i by Client IP sortuje każdy wiersz w danym okresie przed podzieleniem go na strony, więc pierwsza strona zawiera rzeczywistą czołówkę.
- Karty Overview dostosowują się do wybranego okresu jeszcze w trakcie ładowania, okno wyboru okresu otwiera się na aktualnie przeglądanym, a w menu bocznym w sekcji Tools dodano link Docs.
- Faktury wystawiane ręcznie pojawiają się teraz na stronie Billing obok automatycznych. Faktura z unijnym podatkiem VAT stosuje stawkę obowiązującą w dniu sprzedaży, wliczając wcześniej ogłoszone zmiany.
Każda z tych zmian ma swój własny wpis na updates.foura.ai.
Under the Hood
Port proxy zlicza na żywo Twoje otwarte tunele, a tunel zakończony przez restart jednej z naszych instancji znika z licznika w ciągu kilku sekund. Limit współbieżności w Twoim planie odpowiada więc temu, co rzeczywiście otrzymujesz.
Najlepszy failover to taki, o którym dowiadujesz się dopiero z podsumowania.