Oxygent Crawl API
Developer documentation

PUBLIC API

Crawl API 使用文档

面向业务调用方的统一入口文档。请求通过主控节点鉴权、调度到 worker, 返回 HTML、抽取结果和错误分类。

POST https://crawl.oxygent.org.cn/crawl

最小请求

所有请求使用 Bearer Token 鉴权。示例里的 token 使用环境变量占位,不要把真实 token 写进文档。

curl -X POST "https://crawl.oxygent.org.cn/crawl" \
  -H "Authorization: Bearer ${CRAWL_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://example.com/page"],
    "include_html": false
  }'

集群容量

GET /capacity 使用同一个 Bearer Token 鉴权,返回当前 token 可用的 worker 池、槽位占用和建议并发。这个接口不会增加 token 调用次数。

curl -X GET "https://crawl.oxygent.org.cn/capacity" \
  -H "Authorization: Bearer ${CRAWL_TOKEN}"
字段 说明
capacity.available_slots 当前 token 可用池中的剩余并发槽位。
pools online_reserved / shared 展开的 worker 池容量;离线 token 只看到 shared。
advice.state openlimitedthrottleclosed,用于客户端调节请求频率。
advice.recommended_concurrency 建议客户端当前最大并发。
advice.recommended_rps 建议客户端当前请求速率。

请求结构

字段 类型 说明
urls string[] 必填。支持单 URL 或多 URL 批量抓取。
strategy string 默认 auto。按低成本到高成本依次尝试 curl、CloakBrowser CDP、CloakBrowser direct。
browser_config object 浏览器身份配置,例如 locale、headers、cookies、viewport、proxy。
crawler_config object 抓取行为配置,例如超时、wait_for、滚动、delay、sitemap 限制。
extraction object 结构化抽取配置,支持 CSS schema 和 XPath schema。
include_html boolean 是否返回 HTML。调试 selector 时建议开启。
extracted_data_only boolean 有 extraction 时默认只返回数据;设为 false 可同时返回 envelope 和 HTML。
max_concurrency number 批量 URL 的客户端请求内并发,默认 1。

CSS Schema 示例

baseSelector 应该匹配一个逻辑输出项;详情页可使用 html 或稳定详情容器。

{
  "urls": ["https://example.com/products"],
  "extracted_data_only": false,
  "extraction": {
    "type": "css_schema",
    "schema": {
      "name": "products",
      "baseSelector": "article.product-card",
      "fields": [
        { "name": "title", "selector": "h2", "type": "text", "transform": "strip" },
        { "name": "href", "selector": "a", "type": "attribute", "attribute": "href" },
        { "name": "url", "type": "computed", "expression": "\"https://example.com\" + href if href.startswith(\"/\") else href" },
        { "name": "price", "selector": ".price", "type": "text", "transform": "strip" }
      ]
    }
  }
}

返回值约定

HTTP 状态码表示控制面、调度和目标站访问的外层结果;是否拿到可用内容,以响应体里的 successerror_typeaction_requiredresults 为准。

HTTP 响应体特征 含义 处理建议
200 success=true,或直接返回抽取数组 已拿到有效内容;正常空结果也会在有页面证据时计为成功。 消费 resultsextracted_data 或 HTML。
200 success=false / empty_extraction 页面可访问,但抽取规则没有拿到有效记录。 开启 include_html=trueextracted_data_only=false 调试 selector。
400 detail 请求 JSON、URL 或 schema 参数非法。 修正请求体后重试。
401 detail Token 缺失、错误或已禁用。 检查 Bearer Token。
429 action_required=trueerror_type=proxy_required / blocked_fetch 目标站触发机器人校验、验证码、Akamai、DataDome、Cloudflare、403/429,或站点级冷却中;这不是网关故障。 降低频率,补 locale/header/cookie,或传入可用代理后重试。
500 success=false 控制面内部异常。 记录 X-Crawl-Control-Request-Id 联系平台排查。
502 request_error / upstream_5xx / upstream_error worker 调用、浏览器运行时、网络或目标上游 5xx 等平台/链路异常。 按指数退避重试;持续出现时联系平台排查。
503 no_workerno available crawl worker 当前没有可用 worker 或服务池槽位耗尽。 调用 /capacity 降低并发,稍后重试。
{
  "success": false,
  "detail": "node-a: proxy_required Amazon robot check | proxy required for retry",
  "error_type": "proxy_required",
  "action_required": true
}

用户自带代理

为控制成本,调用方可以在请求里传自己的代理。平台会同步到 curl、浏览器和 CloakBrowser 路径。明确的反爬阻断默认不会盲目换节点重试;带代理后会继续按调度策略重试。

字符串格式

{
  "urls": ["https://example.com/page"],
  "proxy": "http://user:pass@proxy.example.com:8080"
}

结构化格式

{
  "urls": ["https://example.com/page"],
  "proxy_config": {
    "server": "http://proxy.example.com:8080",
    "username": "user",
    "password": "pass"
  }
}
{
  "urls": ["https://example.com/page"],
  "proxy": "http://user:pass@proxy.example.com:8080",
  "control_config": {
    "max_attempts": 3
  }
}

交互调试台

Token 只在当前页面内存中使用,不写入浏览器存储。

ready

crawl-api-extraction Skill

这个 skill 用来帮助 Codex 生成、复核和调试 Crawl API 请求体。

下载 zip
能力 说明
请求体生成 按目标 URL、业务字段和页面类型生成可复用的 `/crawl` payload。
Schema 设计 选择 CSS/XPath baseSelector,设计 text、attribute、computed、nested 字段。
调试流程 通过 `include_html` 和 `extracted_data_only=false` 检查原始 HTML 和缺失字段。
结果分类 区分 ok、empty、blocked_fetch、request_error、extraction_error 和 skill_issue。
mkdir -p ~/.codex/skills
unzip crawl-api-extraction.zip -d ~/.codex/skills/

错误和结果判断

状态 含义 处理建议
success=true 抓取结果通过有效内容判断;有抽取配置时,拿到有效抽取记录,或页面证据证明正常无结果。 直接消费 `results[0].extracted_data` 或 HTML。
blocked_fetch 目标返回 Akamai、DataDome、Cloudflare、验证码或 403/429。 降低频率,补 locale/header/cookie/proxy,必要时使用用户代理。
empty_extraction 候选策略都没提取到有效记录,且没有足够证据证明这是正常空结果。 开启 HTML 返回,检查查询词、baseSelector 和字段 selector;业务允许空结果时也可设置 `allow_empty_extraction=true`。
request_error 网络、超时、worker 或上游 5xx 异常。 重试或提高超时;批量压测时降低并发。