常见问题
使用 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 状态码。
原因: 这在以下两种情况下会发生:
- 达到并发限制。 您有太多同时运行的请求。这与 429 不同,后者限制每分钟的请求数。对于 503,您并未超过 RPM,但已达到同时运行的最大请求数。
- 服务暂时不可用。 正在进行维护。
这两种情况都会在 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。
检查清单:
- 验证 header 是否为
X-API-Key: YOUR_API_KEY(而非Authorization: Bearer或Api-Key) - 检查您的 API key 中是否存在多余的空格或换行符
- 如果当前的 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 响应。
仍未解决?
如果上述解决方案均不起作用:
- 检查 状态页面 了解是否有正在发生的故障
- 在 Dashboard 中查看您的请求指标
- 联系支持团队 support@foura.ai 并提供您的请求详情
后续步骤
- 错误处理:API 错误码参考
- 选择正确的 Endpoint:为您的目标选择最佳方案
- Dashboard 概览:监控您的请求