常见问题

使用 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 返回包含 CAPTCHA 验证或拒绝访问页面的 HTML。

原因: 目标网站检测到请求为自动化操作并将其拦截。

解决方案: 使用 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_ms(single 默认为 15 秒,browser 默认为 30 秒,proxy 默认为 45 秒):

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 值是否确实出现在页面上。拼写错误总是会导致超时。

429 Too Many Requests (RPM 限制)

症状: API 返回 429 状态码并提示 "rate limit exceeded" 消息。

原因: 您已超过每分钟请求数 (RPM) 限制。这与并发限制不同(参见下文 503)。

解决方案: 使用 response 中的 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 limit。

503 Service Unavailable

症状: API 返回 503 状态码。

原因: 这在以下两种情况下会发生:

  1. 达到并发限制。 您有太多同时运行的请求。这与 429 不同,后者限制每分钟的请求数。对于 503,您并未超过 RPM,但已达到同时运行的最大请求数。
  2. 服务暂时不可用。 正在进行维护。

这两种情况都会在 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 并发限制,请减少抓取管道中的并行请求数,或在 Dashboard 中检查您套餐的并发限制。

401 认证错误

症状: 每个请求都返回 401 Unauthorized。

检查清单:

  1. 验证 header 是否为 X-API-Key: YOUR_API_KEY(而非 Authorization: BearerApi-Key
  2. 检查您的 API key 中是否存在多余的空格或换行符
  3. 如果当前的 key 可能已泄露,请从 Dashboard 创建一个新 key

收到非预期的 HTML 而非 JSON

症状: 您期望从目标网站获取 JSON,但收到了 HTML。

原因: 目标页面可能会根据 header 提供不同的内容。

解决方案: 添加 Accept header 并启用 unblocker 以获取真实的浏览器 header:

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 响应。

仍未解决?

如果上述解决方案均不起作用:

  1. 检查 状态页面 了解是否有正在发生的故障
  2. Dashboard 中查看您的请求指标
  3. 联系支持团队 support@foura.ai 并提供您的请求详情

后续步骤

更新于: 2026年4月27日