Các vấn đề thường gặp

Các giải pháp cho những vấn đề thường gặp nhất khi sử dụng FourA API.

Nội dung trống hoặc không đầy đủ

Triệu chứng: API trả về trạng thái 200 nhưng trường data bị trống hoặc thiếu nội dung mong đợi.

Nguyên nhân: Trang mục tiêu sử dụng JavaScript để hiển thị nội dung sau khi tải trang ban đầu.

Giải pháp: Chuyển từ single endpoint sang browser endpoint. Sử dụng checkText để xác minh nội dung đã tải:

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"
  }'

Lưu ý: browser endpoint trả về nội dung trong trường body (không phải data).

Trang 403 Forbidden hoặc CAPTCHA

Triệu chứng: API trả về HTML chứa yêu cầu xác thực CAPTCHA hoặc trang từ chối truy cập.

Nguyên nhân: Trang web mục tiêu đã phát hiện request là tự động và chặn nó.

Giải pháp: Sử dụng proxy endpoint để tự động xoay vòng 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
    }
  }'

Nếu vấn đề vẫn tiếp diễn, hãy tăng maxTries để cung cấp thêm số lần thử cho quá trình xoay vòng proxy.

Lỗi Timeout

Triệu chứng: Các request thất bại với lỗi timeout.

Nguyên nhân: Trang mục tiêu mất nhiều thời gian để tải hơn thời gian timeout được cấu hình.

Giải pháp: Tăng timeout_ms (mặc định là 15 giây cho single, 30 giây cho browser, 45 giây cho 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
  }'

Đối với các browser request, hãy xác minh giá trị checkText của bạn thực sự xuất hiện trên trang. Lỗi chính tả sẽ luôn gây ra lỗi timeout.

Lỗi 429 Too Many Requests (Giới hạn RPM)

Triệu chứng: API trả về trạng thái 429 với thông báo "rate limit exceeded".

Nguyên nhân: Bạn đã vượt quá giới hạn số request mỗi phút (RPM). Điều này khác với giới hạn đồng thời (xem lỗi 503 bên dưới).

Giải pháp: Sử dụng trường retryAfter từ response để chờ một khoảng thời gian thích hợp trước khi thử lại:

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"}
)

Kiểm tra mức sử dụng hiện tại của bạn trong Dashboard để xem các rate limit của bạn.

Lỗi 503 Service Unavailable

Triệu chứng: API trả về trạng thái 503.

Nguyên nhân: Điều này xảy ra trong hai trường hợp:

  1. Đạt giới hạn đồng thời (concurrency limit). Bạn có quá nhiều request đồng thời đang chạy. Điều này khác với lỗi 429, vốn giới hạn số request mỗi phút. Với lỗi 503, bạn chưa vượt quá RPM của mình, nhưng bạn đã đạt mức tối đa số lượng request có thể chạy cùng một lúc.
  2. Dịch vụ tạm thời bị vô hiệu hóa. Một đợt bảo trì đang được tiến hành.

Cả hai trường hợp đều bao gồm trường retryAfter trong response.

Giải pháp: Chờ trong số giây được chỉ định bởi retryAfter, sau đó thử lại:

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")

Nếu bạn thường xuyên gặp giới hạn đồng thời 503, hãy giảm số lượng request song song trong pipeline thu thập dữ liệu của bạn, hoặc kiểm tra giới hạn đồng thời của gói dịch vụ trong Dashboard.

Lỗi xác thực 401

Triệu chứng: Mọi request đều trả về 401 Unauthorized.

Danh sách kiểm tra:

  1. Xác minh header là X-API-Key: YOUR_API_KEY (không phải Authorization: Bearer hoặc Api-Key)
  2. Kiểm tra khoảng trắng thừa hoặc ký tự xuống dòng trong API key của bạn
  3. Tạo một key mới từ Dashboard nếu key hiện tại có nguy cơ bị rò rỉ

Nhận được HTML ngoài dự kiến thay vì JSON

Triệu chứng: Bạn mong đợi nhận được JSON từ trang web mục tiêu nhưng lại nhận được HTML.

Nguyên nhân: Trang mục tiêu có thể cung cấp nội dung khác nhau dựa trên các header.

Giải pháp: Thêm header Accept và bật unblocker để có các header trình duyệt thực tế hơn:

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
  }'

Bạn cũng có thể đặt tryJsonData thành true để FourA tự động phân tích cú pháp các response JSON.

Vẫn gặp khó khăn?

Nếu không có giải pháp nào ở trên hoạt động:

  1. Kiểm tra trang trạng thái để xem có sự cố nào đang diễn ra không
  2. Xem lại các chỉ số request của bạn trong Dashboard
  3. Liên hệ với bộ phận hỗ trợ tại support@foura.ai kèm theo thông tin chi tiết về request của bạn

Các bước tiếp theo

Cập nhật: 27 tháng 4, 2026