Чести проблеми
Решения за най-често срещаните проблеми при използване на FourA API.
Празно или непълно съдържание
Симптом: API връща статус 200, но полето data е празно или липсва очакваното съдържание.
Причина: Целевата страница използва JavaScript за рендиране на съдържанието след първоначалното зареждане.
Решение: Превключете от single endpoint към browser endpoint. Използвайте checkText, за да потвърдите, че съдържанието е заредено:
curl -X POST https://eu.api.foura.ai/api/browser/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/products",
"timeout_ms": 15000,
"checkText": "product-list"
}'
Забележка: browser endpoint връща съдържанието в полето body (а не в data).
403 Forbidden или Captcha страници
Симптом: API връща HTML, съдържащ captcha предизвикателство или страница за отказан достъп.
Причина: Целевият сайт е засякъл заявката като автоматизирана и я е блокирал.
Решение: Използвайте proxy endpoint за автоматична ротация на IP адреси:
curl -X POST https://eu.api.foura.ai/api/proxy/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"maxTries": 5,
"request": {
"method": "GET",
"url": "https://example.com/prices",
"unblocker": true
}
}'
Ако проблемът продължава, увеличете maxTries, за да дадете повече опити за ротация на proxy.
Timeout грешки
Симптом: Заявките се провалят с timeout грешка.
Причина: Целевата страница се зарежда по-бавно от конфигурирания timeout.
Решение: Увеличете timeout_ms (по подразбиране е 15s за single, 30s за browser, 45s за proxy):
curl -X POST https://eu.api.foura.ai/api/browser/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://slow-site.com",
"timeout_ms": 60000
}'
За browser заявки също така проверете дали стойността на checkText действително се появява на страницата. Печатна грешка винаги ще доведе до timeout.
429 Too Many Requests (RPM лимит)
Симптом: API връща статус 429 със съобщение "rate limit exceeded".
Причина: Надвишили сте лимита си за заявки в минута (RPM). Това е различно от лимитите за едновременност (вижте 503 по-долу).
Решение: Използвайте полето retryAfter от отговора, за да изчакате необходимото време преди нов опит:
import time
import requests
def make_request(endpoint_url, payload, retries=3):
for i in range(retries):
resp = requests.post(
endpoint_url,
headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json=payload
)
if resp.status_code == 429:
body = resp.json()
wait = body.get("retryAfter", 2 ** i)
time.sleep(wait)
continue
return resp
raise Exception("Rate limit not resolved after retries")
# Example: single request
make_request(
"https://eu.api.foura.ai/api/single/",
{"method": "GET", "url": "https://example.com"}
)
Проверете текущото си потребление в Dashboard, за да видите вашите rate limits.
503 Service Unavailable
Симптом: API връща статус 503.
Причина: Това се случва в два случая:
- Достигнат лимит за едновременност (concurrency). Имате твърде много работещи едновременни заявки. Това е различно от 429, което ограничава заявките в минута. При 503 не сте надвишили своя RPM, но сте достигнали максимума на заявките, които могат да се изпълняват едновременно.
- Временно деактивирана услуга. В момента се извършва техническа поддръжка.
И в двата случая в отговора се съдържа полето retryAfter.
Решение: Изчакайте retryAfter секунди, след което опитайте отново:
import time
import requests
def make_request_with_retry(endpoint_url, payload, retries=3):
for i in range(retries):
resp = requests.post(
endpoint_url,
headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json=payload
)
if resp.status_code in (429, 503):
body = resp.json()
wait = body.get("retryAfter", 2 ** i)
time.sleep(wait)
continue
return resp
raise Exception("Request not resolved after retries")
Ако редовно достигате лимитите за едновременност 503, намалете броя на паралелните заявки във вашия scraping процес или проверете лимита за едновременност на вашия план в Dashboard.
401 Грешки при автентификация
Симптом: Всяка заявка връща 401 Unauthorized.
Списък за проверка:
- Проверете дали header е
X-API-Key: YOUR_API_KEY(а неAuthorization: BearerилиApi-Key) - Проверете за излишни интервали или нови редове във вашия API key
- Създайте нов ключ от Dashboard, ако настоящият може да е компрометиран
Неочакван HTML вместо JSON
Симптом: Очаквали сте JSON от целевия сайт, но сте получили HTML.
Причина: Целевата страница може да предоставя различно съдържание в зависимост от изпратените headers.
Решение: Добавете Accept header и активирайте unblocker за реалистични browser headers:
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://api.example.com/data",
"headers": [["Accept", "application/json"]],
"unblocker": true
}'
Можете също така да зададете tryJsonData на true, за да може FourA автоматично да парсне JSON отговорите.
Все още имате затруднения?
Ако никое от горните решения не помогне:
- Проверете страницата за статус за текущи инциденти
- Прегледайте метриките за вашите заявки в Dashboard
- Свържете се с поддръжката на support@foura.ai с подробности за вашата заявка
Следващи стъпки
- Обработка на грешки: Справка за кодовете за грешки на API
- Избор на правилния endpoint: Изберете най-добрия подход за вашата цел
- Преглед на Dashboard: Наблюдавайте вашите заявки