请求结果

对 FourA API 的每个 request 以及通过 proxy 端口的每个 tunnel,都会被归类为恰好一种 outcome。outcome 在调用结束时计算一次,并记录在发起调用的凭据下。您的控制台、活动源和账单都读取同一个字段。

只有 success 会消耗 credit。Premium 流量与 credit 分开计算,且不遵循 outcome 机制:参见 Billing Implications。

The Seven Outcomes

以下是 request 可能结束的七种结果。tunnel 使用其中的五种:参见下文 Tunnels Use the Same Vocabulary。

Outcome Layer What it means
success n/a 已交付有效 response。计入您的计费配额。
application_error target 目标返回 HTTP 200,但 body 包含错误字段,或 body 是 FourA 可识别的机器人验证页面。
application_fail target 目标返回了您的 validate 规则未接受的非 2xx 状态码,或者完全没有 response,包括无法解析的目标主机名。
client_error caller 您的 request 在离开 FourA 之前被拒绝。参数错误、proxy 值格式错误、命中 SSRF 防护的 URL。
rate_limit FourA request 在运行前被拒绝:由您的套餐限制拒绝(套餐不包含的 endpoint 或参数返回 403,配额耗尽返回 429),或由平台的共享 RPM 或并发配额拒绝。
service_error FourA 引擎返回服务器错误,或其 body 不是有效的 JSON。
service_fail FourA FourA 自身网络故障:引擎未及时响应或连接中断,或者您断开了连接。

Layer 列说明了责任归属:

  • target 结果与您调用的目标站点有关。您的 request 正常到达 FourA,FourA 也正常到达目标。目标站点自身返回了错误。
  • caller 结果意味着您的 request 根本无法执行。请修正 request 格式。
  • FourA 结果属于平台侧问题。请重试;如果问题持续,请查看 status page。

目标站点返回 403 属于 application_fail,而不是 client_error。您的调用格式正确,只是目标站点拒绝了访问。

Success Is validate-Aware

在未使用 validate 时,API 仅在目标返回 HTTP 200 时将 request 标记为 success。

使用 validate 时,成功判定遵循您声明的规则。如果您告知 API 某次 request 允许接收 200 和 403,则 403 返回时将被标记为 success。body 仍会原样传递给您。

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://target.example/feed",
    "validate": {
      "status": { "accept": [200, 403] }
    }
  }'

在此调用中,403 响应计为 success 并计费 1 次 request。500 响应计为 application_fail 且不计费。

相同逻辑适用于 validate.headers 和 validate.data。只要引擎根据您的规则接受了该响应,无论 HTTP 状态码为何,均返回为 success。

无论是否包含 validate,有一种结果绝不会是 success:即响应为 HTTP 200,但 body 是 FourA 可识别的机器人检查页面,例如人机视觉验证任务或仅要求浏览器运行 JavaScript 的页面。此类 request 为 application_error 且不计费。Body 仍会原样传递给您,且 X-FourA-Check-Page header 会指明该检查页面。

计费影响

Outcome 计费 计入配额
success 是 是
application_error 否 否
application_fail 否 否
client_error 否 否
rate_limit 否 否
service_error 否 否
service_fail 否 否

仅对成功返回您所需数据的 request 进行计费。FourA 端、目标端或您自身端的失败均完全免费。

上表针对点数(credits)。Premium 流量独立于点数计算:尝试使用 premium 出口 的 request,无论结果如何,都会计算该次尝试所产生的流量,因为出口均已被使用。若某个尝试在另一个出口响应时仍在运行,该尝试会立即停止,且其截至当时所产生的流量也会计入。

标准流量同样不取决于结果:在有带宽上限的套餐中,每个 request 的流量都会计入该上限。被您套餐自身限制拒绝的 request 不计算流量。

隧道使用相同的术语体系

通过 proxy 端口 建立的隧道也会以上述结果之一结束,因此同一套标签适用于两款产品。七种结果中只有五种可能发生,因为两种 target 结果需要 FourA 解析目标的响应,而隧道的响应是您自己的加密流量。

Outcome 在隧道中的含义
success 隧道已打开且您的工具已成功获取。
client_error FourA 拒绝打开该隧道:私有或保留地址,或者不支持的端口。
rate_limit 达到您套餐的某项指标上限(并发打开的隧道数、每分钟打开隧道数、当期标准流量、未包含的 premium 流量),或端口本身达到容量上限或连接速率限制。
service_error FourA 没有满足您请求的出口。通常是暂时的。
service_fail 无法通过 FourA 尝试的任何出口连接到目标:DNS、超时、连接被拒绝。
application_error 绝不会在隧道中出现。
application_fail 绝不会在隧道中出现。

拒绝请求时还会附带简要原因,控制面板会以对你而言直观的方式显示,而不是使用内部术语。FourA 无法支持的选项会在连接本身上直接返回 400 响应且不写入记录行,因此根本不会显示在这里。

界面显示的原因 耗尽项
port not in plan 你的套餐不包含该代理端口
tunnels at once 套餐允许的并发隧道数已全部被占用
openings per minute 你的套餐当前分钟的隧道开启配额已用尽
traffic used up 你的套餐在当前周期的流量已用尽
premium not available 高级流量当前不可用于你的套餐
port was full 端口本身的容量或开启速率已达上限。请稍后重试。
port not served FourA 不支持向该端口建立隧道
private address 无法访问私有和保留地址

隧道本身完全不以积分计费,因为隧道没有可扣费的具体 request。端口改为按字节计量。请参阅 套餐计量方式。

在控制面板中查看结果

API key 发起的每个 request 都会显示在 Activity 动态中,并带有对应的结果标签。Metrics 和 Overview 页面会聚合该字段以生成圆环图和时间线。

按结果筛选 Activity 时,你还可以聚焦于单个 endpoint (Auto、Single、Proxy Finder、Browser),以排查某类故障是否仅针对其中某一个服务。将页面的 Product 切换为 Proxy,即可使用相同的结果标签筛选隧道。

重试启发式规则

基于结果的初级重试策略:

结果 是否可安全重试? 何时重试
success 不适用 已获取 response。
application_error 视情况而定 查看目标网站的错误主体。部分错误是暂时性的,大部分则不是。如果设置了 X-FourA-Check-Page,说明站点返回了验证页面:请将 URL 发送至 Auto,它会将验证页面视为需要通过的步骤,而非最终结果。
application_fail 视情况而定 如果目标网站对你实施 rate limit,请降低请求频率。如果目标网站封禁了你,请切换到 Proxy 或 Browser endpoint。
client_error 否 request 会以相同方式再次失败。请修正输入。
rate_limit 视情况而定 遵守 response 给出的等待时间:Retry-After、retry_after_seconds 或 retryAfter。遇到 plan_limit_browser_daily 时,暂停直到 UTC 零点;遇到 plan_limit_credits 或 plan_limit_bandwidth 时,暂停直到 resets_at;遇到 plan_limit_feature 或 plan_limit_premium 时,修改 request。
service_error 是 短暂指数退避。
service_fail 是 与 service_error 相同。

相关内容

更新于: 2026年9月27日