Частые проблемы
Решения наиболее распространенных проблем при использовании FourA API.
Пустой или неполный контент
Симптом: API возвращает статус 200, но поле data пустое или не содержит ожидаемого контента.
Причина: Целевая страница использует JavaScript для отрисовки контента после первоначальной загрузки страницы.
Решение: Переключитесь с endpoint single на endpoint browser. Используйте 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"
}'
Примечание: endpoint browser возвращает контент в поле body (а не data).
Ошибки 403 Forbidden или страницы с Captcha
Симптом: API возвращает HTML, содержащий проверку Captcha или страницу отказа в доступе.
Причина: Целевой сайт определил request как автоматический и заблокировал его.
Решение: Используйте endpoint proxy для автоматической ротации 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 больше попыток.
Ошибки тайм-аута
Симптом: Выполнение requests завершается ошибкой по тайм-ауту.
Причина: Загрузка целевой страницы занимает больше времени, чем настроенный тайм-аут.
Решение: Увеличьте 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
}'
Для requests через browser также убедитесь, что значение checkText действительно появляется на странице. Опечатка всегда будет приводить к тайм-ауту.
429 Too Many Requests (лимит RPM)
Симптом: API возвращает статус 429 с сообщением "rate limit exceeded".
Причина: Вы превысили свой лимит запросов в минуту (RPM). Это отличается от лимитов на параллельные запросы (см. 503 ниже).
Решение: Используйте поле retryAfter из response, чтобы подождать необходимое количество времени перед повторной попыткой:
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.
Причина: Это происходит в двух случаях:
- Достигнут лимит параллельных запросов. У вас запущено слишком много одновременных requests. Это отличается от ошибки 429, которая ограничивает количество запросов в минуту. При ошибке 503 вы не превысили свой RPM, но исчерпали максимальное количество requests, которые могут выполняться одновременно.
- Сервис временно недоступен. Проводятся технические работы.
В обоих случаях response содержит поле 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, уменьшите количество параллельных requests в вашем конвейере сбора данных или проверьте лимит параллельных запросов вашего тарифного плана в Dashboard.
Ошибки аутентификации 401
Симптом: Каждый request возвращает ошибку 401 Unauthorized.
Чек-лист:
- Убедитесь, что header указан как
X-API-Key: YOUR_API_KEY(а неAuthorization: BearerилиApi-Key) - Проверьте наличие лишних пробелов или символов перевода строки в вашем API key
- Создайте новый ключ в Dashboard, если текущий мог быть скомпрометирован
Неожиданный HTML вместо JSON
Симптом: Вы ожидали получить JSON от целевого сайта, но получили HTML.
Причина: Целевая страница может отдавать разный контент в зависимости от headers.
Решение: Добавьте header Accept и включите unblocker для использования реалистичных 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 responses.
Все еще нужна помощь?
Если ни одно из вышеперечисленных решений не помогло:
- Проверьте status page на наличие текущих инцидентов
- Просмотрите метрики ваших requests в Dashboard
- Свяжитесь с поддержкой по адресу support@foura.ai, указав детали вашего request
Следующие шаги
- Обработка ошибок: справочник кодов ошибок API
- Выбор правильного Endpoint: выберите лучший подход для вашей цели
- Обзор Dashboard: мониторинг ваших requests