Резултати от заявки
Всяка заявка към FourA API се класифицира точно в един резултат (outcome), както и всеки тунел през proxy порта. Резултатът се изчислява веднъж, в края на извикването, и се записва към идентификационните данни (credential), които са го направили. Вашето табло за управление, потокът от дейности и таксуването четат едно и също поле.
Само success струва кредити. Premium трафикът се отчита отделно от кредитите и не зависи от резултата: вижте Billing Implications.
The Seven Outcomes
Това са седемте възможни изхода за една заявка. Един тунел използва пет от тях: вижте Tunnels Use the Same Vocabulary по-долу.
| Outcome | Layer | What it means |
|---|---|---|
success |
n/a | Доставен е валиден отговор. Отчита се към вашата платена квота. |
application_error |
target | Целевият сайт върна HTTP 200, но тялото съдържаше поле за грешка, или тялото е страница за проверка за ботове (bot-check), която FourA разпознава. |
application_fail |
target | Целевият сайт върна код, различен от 2xx, който вашите validate правила не приемат, или въобще нямаше отговор, включително целеви хост адрес, който не може да бъде резолвнат. |
client_error |
caller | Вашата заявка беше отхвърлена, преди да напусне FourA. Невалидни параметри, неправилно форматирана proxy стойност, URL с блокиран SSRF. |
rate_limit |
FourA | Заявката беше отказана преди изпълнението: от лимит на вашия план (403 за endpoint или параметър, който планът не включва, 429 за изчерпан лимит) или от споделения лимит на платформата за RPM или едновременни заявки (concurrency). |
service_error |
FourA | Системата отговори със сървърна грешка или тялото не беше валиден JSON. |
service_fail |
FourA | Мрежата на FourA се провали: системата не отговори навреме, връзката прекъсна или вие прекратихте връзката. |
Колоната layer показва кой носи отговорност:
- target резултатите се отнасят за сайта, който сте извикали. Вашата заявка е стигнала успешно до FourA, и FourA е достигнал успешно до целта. Самият целеви сайт е върнал грешка.
- caller резултатите означават, че заявката ви изобщо не е имала шанс. Коригирайте структурата на заявката.
- FourA резултатите са по наша вина. Опитайте отново и проверете status page, ако продължават.
Целеви сайт, който връща 403, е application_fail, а не client_error. Вашето извикване беше правилно форматирано. Сайтът просто отказа достъп.
Success Is validate-Aware
Без validate, API маркира заявка като success само когато целта върне HTTP 200.
С validate, успехът следва правилата, които сте дефинирали. Ако укажете на API, че 200 и 403 са приемливи за дадена заявка, 403 се връща като success. Тялото все пак достига до вас непроменено.
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] }
}
}'
При това извикване отговор 403 се счита за success и се таксува като една заявка. Отговор 500 се счита за application_fail и не се таксува.
Същата логика важи за validate.headers и validate.data. Всеки отговор, който енджинът приеме според вашите правила, се връща като success независимо от HTTP статуса.
Един отговор никога не е success, със или без validate: HTTP 200, чието тяло е страница за проверка на ботове, разпозната от FourA, като например задача за визуална верификация или страница, която само изисква от браузъра да изпълни JavaScript. Тази заявка е application_error и не се таксува. Тялото все пак достига до вас непроменено, а заглавката X-FourA-Check-Page посочва страницата за проверка.
Последици за таксуването
| Резултат | Таксува се | Зачита се към квотата |
|---|---|---|
success |
Да | Да |
application_error |
Не | Не |
application_fail |
Не | Не |
client_error |
Не | Не |
rate_limit |
Не | Не |
service_error |
Не | Не |
service_fail |
Не | Не |
Таксуват се само заявки, които са доставили заявените от вас данни. Неуспешните заявки от страна на FourA, от страна на целта или от ваша страна са напълно безплатни.
Таблицата се отнася за кредитите. Премиум трафикът се отчита отделно от тях: заявка, която е опитала премиум изходна точка, отчита трафика, пренесен при този опит, независимо от резултата, тъй като изходната точка е била използвана във всеки случай. Опит, който все още се изпълнява, когато друга изходна точка върне отговор, се прекратява незабавно, като трафикът, пренесен до този момент, също се отчита.
Стандартният трафик също не зависи от резултата: при план с лимит на честотната лента трафикът на всяка заявка се зачита към него. Заявка, отхвърлена от някое от ограниченията на вашия собствен план, не отчита никакъв трафик.
Тунелите използват същата терминология
Тунел през proxy порта също завършва с един от тези резултати, така че един и същ набор от етикети покрива и двата продукта. Само пет от седемте могат да възникнат, тъй като двата резултата target изискват FourA да е видял отговора на целта, а отговорът на тунела е вашият собствен криптиран трафик.
| Резултат | За тунел това означава |
|---|---|
success |
Тунелът се отвори и вашият инструмент го получи. |
client_error |
FourA няма да отвори този тунел: частен или резервиран адрес или порт, който не се обслужва. |
rate_limit |
Достигнат е някой от лимитите на вашия план (едновременно отворени тунели, отваряния на тунели за минута, стандартният трафик за периода, премиум трафик, с какъвто не разполагате) или самият порт е достигнал своя капацитет или лимит за скорост на отваряне. |
service_error |
FourA няма налична изходна точка за това, което сте поискали. Обикновено е временно. |
service_fail |
Целта не можа да бъде достигната през нито една от изходните точки, опитани от FourA: DNS грешка, изтичане на времето за изчакване, отхвърлена връзка. |
application_error |
Никога не възниква при тунел. |
application_fail |
Никога не възниква при тунел. |
Отказът също носи кратка причина, а таблото я показва според вашите условия, а не според нашите. Опция, която FourA не може да изпълни, получава отговор 400 на самата връзка и не записва ред, така че изобщо не се показва тук.
| Причина на екрана | Какво е изчерпано |
|---|---|
| port not in plan | Вашият план не включва прокси порта |
| tunnels at once | Всеки тунел, разрешен от плана ви едновременно, е бил в употреба |
| openings per minute | Отварянията на тунели по вашия план за тази минута са изчерпани |
| traffic used up | Трафикът по вашия план за този период е изчерпан |
| premium not available | Premium трафикът в момента не е наличен за вашия план |
| port was full | Самият порт е достигнал капацитета или лимита на скоростта на отваряне. Опитайте отново след малко. |
| port not served | FourA не отваря тунели към този порт |
| private address | До частни и резервирани адреси не може да бъде осъществен достъп |
Нищо свързано с тунел не се таксува в кредити, тъй като тунелът няма заявка, за която да бъде начислена такса. Вместо това портът отчита байтове. Вижте Как се отчита вашият план.
Разчитане на резултатите в таблото за управление
Всяка заявка, направена от вашия API ключ, се показва в потока Активност с нейния етикет за резултат. Страниците Метрики и Преглед обобщават същото поле за кръгови диаграми и времеви линии.
Когато филтрирате Активност по резултат, можете също да се фокусирате върху единичен endpoint (Auto, Single, Proxy Finder, Browser), за да проверите дали даден клас грешка е специфичен за някой от тях. Превключете Продукт на страницата на Proxy и същите филтри за резултати ще филтрират вашите тунели.
Евристика за повторни опити
Базова политика за повторни опити според резултатите:
| Резултат | Безопасен повторен опит? | Кога |
|---|---|---|
success |
n/a | Имате отговора. |
application_error |
Понякога | Прочетете тялото на грешката от целевия сайт. Някои са временни, повечето не са. Ако е зададен X-FourA-Check-Page, сайтът е върнал страница за проверка: изпратете URL адреса към Auto, който третира страницата за проверка като стъпка за преминаване, а не като отговор. |
application_fail |
Понякога | Ако целевият сайт ви налага rate limit, забавете заявките. Ако ви блокира, превключете към endpoint Proxy или Browser. |
client_error |
Не | Заявката ще се провали отново по същия начин. Коригирайте входните данни. |
rate_limit |
Зависи | Спазете времето за изчакване, посочено в отговора: Retry-After, retry_after_seconds или retryAfter. При plan_limit_browser_daily спрете до полунощ UTC; при plan_limit_credits или plan_limit_bandwidth спрете до resets_at; при plan_limit_feature или plan_limit_premium променете заявката. |
service_error |
Да | Кратък експоненциален backoff. |
service_fail |
Да | Същото като service_error. |
Свързани
- API Errors: Грешки в отговорите на HTTP ниво
- Proxy Port: Кодовете за статус, с които се връща отказът на тунела
- Rate Limits: Какво задейства
rate_limitи двата формата, под които се връща - Metrics: Къде да намерите разбивка на резултатите
- Activity Log: История на резултатите за всяка заявка