Wyniki żądań
Każde żądanie do FourA API jest klasyfikowane do dokładnie jednego rezultatu (outcome), podobnie jak każdy tunel przez port proxy. Rezultat jest obliczany raz, na końcu wywołania, i zapisywany na koncie danych uwierzytelniających, które je wykonały. Twój panel, strumień aktywności i rozliczenia korzystają z tego samego pola.
Tylko success kosztuje kredyty. Ruch premium jest liczony niezależnie od kredytów i nie zależy od rezultatu: zobacz Billing Implications.
The Seven Outcomes
Oto siedem rezultatów, którymi może zakończyć się żądanie. Tunel używa pięciu z nich: zobacz sekcję Tunnels Use the Same Vocabulary poniżej.
| Outcome | Layer | What it means |
|---|---|---|
success |
n/a | Zwrócono poprawną odpowiedź. Wlicza się do rozliczanego limitu. |
application_error |
target | Cel zwrócił HTTP 200, ale treść zawierała pole błędu lub jest stroną weryfikacji botów rozpoznawaną przez FourA. |
application_fail |
target | Cel zwrócił kod inny niż 2xx, którego nie zaakceptowały Twoje reguły validate, lub nie zwrócił żadnej odpowiedzi, w tym gdy nazwa hosta docelowego nie może zostać rozwiązana. |
client_error |
caller | Twoje żądanie zostało odrzucone, zanim opuściło FourA. Błędne parametry, nieprawidłowa wartość proxy, URL zablokowany przez ochronę SSRF. |
rate_limit |
FourA | Żądanie zostało odrzucone przed uruchomieniem: przez jeden z limitów Twojego planu (403 dla endpointu lub parametru niedostępnego w planie, 429 po wyczerpaniu limitu) albo przez współdzielony limit RPM lub współbieżności platformy. |
service_error |
FourA | Silnik zwrócił błąd serwera lub treść odpowiedzi nie była poprawnym formatem JSON. |
service_fail |
FourA | Błąd własnej sieci FourA: silnik nie odpowiedział na czas, połączenie zostało zerwane lub nastąpiło rozłączenie z Twojej strony. |
Kolumna warstwy (layer) wskazuje stronę odpowiedzialną:
- Rezultaty target dotyczą wywoływanej witryny. Twoje żądanie dotarło do FourA poprawnie, a FourA poprawnie dotarło do celu. Błąd zwrócił sam cel.
- Rezultaty caller oznaczają, że Twoje żądanie nie miało szans na realizację. Popraw strukturę żądania.
- Rezultaty FourA leżą po naszej stronie. Ponów próbę, a jeśli błędy będą się powtarzać, sprawdź status page.
Gdy witryna docelowa zwraca 403, jest to application_fail, a nie client_error. Twoje wywołanie było poprawne. Witryna po prostu odmówiła dostępu.
Success Is validate-Aware
Bez validate API oznacza żądanie jako success tylko wtedy, gdy cel zwróci HTTP 200.
Przy użyciu validate sukces zależy od zadeklarowanych reguł. Jeśli wskażesz w API, że kody 200 i 403 są dopuszczalne dla danego żądania, kod 403 zostanie zwrócony jako success. Treść odpowiedzi nadal dotrze do Ciebie bez zmian.
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://target.example/feed",
"validate": {
"status": { "accept": [200, 403] }
}
}'
W tym wywołaniu odpowiedź 403 liczy się jako success i jest rozliczana jako jedno żądanie. Odpowiedź 500 liczy się jako application_fail i nie jest rozliczana.
Ta sama logika dotyczy validate.headers oraz validate.data. Każda odpowiedź zaakceptowana przez silnik zgodnie z Twoimi regułami jest zwracana jako success niezależnie od statusu HTTP.
Jedna odpowiedź nigdy nie jest success, z validate lub bez niego: kod HTTP 200, którego treść jest stroną weryfikacji botów rozpoznawaną przez FourA, na przykład zadaniem weryfikacji wizualnej lub stroną wymagającą jedynie uruchomienia kodu JavaScript przez przeglądarkę. Takie żądanie otrzymuje status application_error i nie jest rozliczane. Treść nadal dociera do Ciebie w niezmienionej postaci, a nagłówek X-FourA-Check-Page wskazuje stronę weryfikacyjną.
Konsekwencje dla rozliczeń
| Wynik | Płatne | Wlicza się do limitu |
|---|---|---|
success |
Tak | Tak |
application_error |
Nie | Nie |
application_fail |
Nie | Nie |
client_error |
Nie | Nie |
rate_limit |
Nie | Nie |
service_error |
Nie | Nie |
service_fail |
Nie | Nie |
Rozliczane są tylko te żądania, które dostarczyły żądane dane. Błędy po stronie FourA, po stronie celu lub po Twojej stronie są bezpłatne.
Tabela dotyczy kredytów. Ruch premium jest liczony niezależnie od nich: żądanie, w którym podjęto próbę przez węzeł wyjściowy premium, nalicza przesłany w tej próbie ruch, niezależnie od wyniku, ponieważ węzeł został wykorzystany. Próba, która wciąż trwała, gdy inny węzeł wyjściowy zwrócił odpowiedź, jest natychmiast przerywana, a przesłany do tego momentu ruch również się liczy.
Ruch standardowy również nie zależy od wyniku: w planie z limitem transferu ruch każdego żądania wlicza się do tego limitu. Żądanie odrzucone z powodu jednego z limitów Twojego planu nie nalicza żadnego ruchu.
Tunele używają tej samej terminologii
Tunel przez port proxy również kończy się jednym z tych wyników, więc jeden zestaw oznaczeń obejmuje oba produkty. Wystąpić może tylko pięć z siedmiu wyników, ponieważ oba wyniki target wymagają od FourA odczytania odpowiedzi celu, a odpowiedź tunelu to Twój własny zaszyfrowany ruch.
| Wynik | W przypadku tunelu oznacza to |
|---|---|
success |
Tunel został otwarty i Twoje narzędzie go otrzymało. |
client_error |
FourA nie otworzy tego tunelu: adres prywatny, zastrzeżony lub nieobsługiwany port. |
rate_limit |
Osiągnięto jedną z wartości granicznych planu (liczba jednocześnie otwartych tuneli, liczba otwarć tuneli na minutę, standardowy ruch w okresie, brak dostępnego ruchu premium) lub sam port osiągnął limit pojemności bądź częstotliwości otwierania. |
service_error |
FourA nie miało węzła wyjściowego spełniającego wymagania. Zazwyczaj problem tymczasowy. |
service_fail |
Cel nie był osiągalny przez żaden węzeł wyjściowy sprawdzony przez FourA: DNS, timeout, połączenie odrzucone. |
application_error |
Nigdy nie występuje w tunelu. |
application_fail |
Nigdy nie występuje w tunelu. |
Odmowa zawiera również krótki powód, a panel wyświetla go w Twoich własnych terminach zamiast naszych. Opcja, której FourA nie może obsłużyć, jest zwracana jako 400 na samym połączeniu i nie zapisuje żadnego wiersza, więc nigdy się tutaj nie pojawia.
| Powód na ekranie | Co się wyczerpało |
|---|---|
| port not in plan | Twój plan nie obejmuje tego portu proxy |
| tunnels at once | Wszystkie tunele dozwolone jednocześnie w Twoim planie były w użyciu |
| openings per minute | Limit otwarć tuneli w tej minucie dla Twojego planu został wyczerpany |
| traffic used up | Twój transfer danych dla tego okresu został wyczerpany |
| premium not available | Ruch premium nie jest obecnie dostępny w Twoim planie |
| port was full | Sam port osiągnął limit pojemności lub częstotliwości otwarć. Spróbuj ponownie za chwilę. |
| port not served | FourA nie otwiera tuneli do tego portu |
| private address | Adresy prywatne i zastrzeżone są nieosiągalne |
Żaden element tunelu nie jest rozliczany w kredytach, ponieważ tunel nie posiada żądania, do którego można by je przypisać. Zamiast tego port zlicza bajty. Zobacz How Your Plan Is Metered.
Reading Outcomes in the Dashboard
Każde żądanie wykonane przez Twój klucz API pojawia się w strumieniu Activity wraz z etykietą wyniku. Strony Metrics i Overview agregują to samo pole na potrzeby wykresów pierścieniowych i osi czasu.
Gdy filtrujesz aktywność według wyniku, możesz również skupić się na pojedynczym punkcie końcowym (Auto, Single, Proxy Finder, Browser), aby sprawdzić, czy dany typ błędu dotyczy tylko jednego z nich. Przełącz opcję Product na stronie na Proxy, a te same etykiety wyników przefiltrują Twoje tunele.
Retry Heuristics
Wstępna polityka ponawiania prób oparta na wynikach:
| Wynik | Ponawianie bezpieczne? | Kiedy |
|---|---|---|
success |
nd. | Masz odpowiedź. |
application_error |
Czasami | Odczytaj treść błędu celu. Niektóre są tymczasowe, większość nie. Jeśli ustawiono X-FourA-Check-Page, strona wyświetliła stronę weryfikacyjną: wyślij URL do Auto, który traktuje stronę weryfikacyjną jako krok do przejścia, a nie ostateczną odpowiedź. |
application_fail |
Czasami | Jeśli cel nakłada na Ciebie limit zapytań (rate limit), zwolnij. Jeśli Cię blokuje, przełącz się na punkt końcowy Proxy lub Browser. |
client_error |
Nie | Żądanie zakończy się niepowodzeniem ponownie w ten sam sposób. Popraw dane wejściowe. |
rate_limit |
Zależy | Uwzględnij czas oczekiwania podany w odpowiedzi: Retry-After, retry_after_seconds lub retryAfter. W przypadku plan_limit_browser_daily wstrzymaj do północy UTC; w przypadku plan_limit_credits lub plan_limit_bandwidth wstrzymaj do resets_at; w przypadku plan_limit_feature lub plan_limit_premium zmień żądanie. |
service_error |
Tak | Krótkie wykładnicze wycofywanie (exponential backoff). |
service_fail |
Tak | Tak samo jak service_error. |
Related
- API Errors: Błędy na poziomie HTTP
- Proxy Port: Kody statusu zwracane przy odrzuceniu tunelu
- Rate Limits: Co wyzwala
rate_limiti dwa formaty, w jakich jest zwracany - Metrics: Gdzie sprawdzić szczegółowy podział wyników
- Activity Log: Historia wyników dla pojedynczych requestów