AISA Pay-per-Crawl · Bot Workflow Walkthrough

Bot 付费爬取全流程演示

news.agentflare.org 为例,完整走一遍 AI 爬虫从「撞上付费墙」到「仅凭返回的 JSON 自主注册、 领取 $0.10 试用额度、带 token 重取内容、被网关放行」的端到端过程;并说明 bot 可读的全部资源 (llms.txt / skill.md / guide / docs),以及在 OpenClaw 中加载不同 skill 的行为差异。

▶ 完整演示视频

端到端演示:bot 撞付费墙 → 自主注册 → 领试用额度 → 带 token 付费取内容的完整流程(1080p)。下文是同一流程的逐节图文拆解。

▶ 完整演示视频 1. 架构:四个模块之间的关系 2. 三种内容模式一览 3. 免费内容:直接就能拿 4. 撞墙:付费内容的 402 返回逐字段解读 5. 注册 → token + $0.10 试用额度 6. 带 token 重试 → 放行取到真内容 7. 确认扣费与余额 8. Block 内容:付钱也没用 9. 余额耗尽与充值 10. Bot 可读资源全景(llms.txt / skill / docs) 11. 三个 Skill 的分工 12. OpenClaw 实战:提示词与四种情形对比 12.5 域名无关性(模拟/阿里内网/生产无缝切换) 13. 与生产形态(真实阿里 ESA)的差异

1. 架构:四个模块之间的关系

一次付费爬取涉及四个模块:外部 Bot、阿里 ESA 网关、AISA verify、Publisher Content Controls (后两者同属 cdn-agent,加上被扣费的 Agent 充值账户模块)。下图先看它们怎么串起来:

flowchart TB
    BOT["外部 Bot
chatgptbot · openclaw · gptbot
持 X-AISA-Crawler-Token + 原始 UA"] subgraph ESA["② 阿里 ESA 边缘网关(三种形态,行为一致)"] GW["回源前拦截请求
带 ESA Gateway Token 调 verify
· 生产:阿里 ESA 接管的正式站
· 阿里内网联调:lr-pay-crawler*.alicdn-test.com
· 外网模拟:news.agentflare.org"] end subgraph VNODE["③ AISA verify 节点 · cdn-agent CDN 模块"] V["POST /api/v1/access/verify
识别爬虫 → 找 publisher → 匹配规则 → 决策"] end subgraph CC["④ Publisher Content Controls · cdn-agent CDN 模块"] RULES["规则查询
按目录 pay / allow / block"] end subgraph ACC["① Agent 充值验证模块 · cdn-agent Agent 模块"] ACCT["爬虫账户查询
注册 · crawlerToken · 余额 · 充值(被扣费方)"] end ORIGIN["Publisher 示例源站(AgentFlare)
免费 .html/.md · 付费 .data.json/.full.md"] BOT -->|"1 GET 内容 URL + token"| GW GW -->|"2 POST verify"| V V <-->|"3 读规则 判 allow/pay/block"| RULES V <-->|"4 pay:查余额→扣爬虫→记 publisher 收入"| ACCT V -->|"5 返回 accessGranted / statusCode / guidance"| GW GW -->|"6a allow·pay成功:回源取内容"| ORIGIN ORIGIN -->|"内容 + X-AISA-Charged 头"| GW GW -->|"200 内容 / 6b 拒绝时 402·403 JSON 原样返回"| BOT BOT -.->|"撞 402 读 guidance → 自助注册 / 充值"| ACCT

四模块关系:Bot 只跟网关打交道;网关调 verify;verify 读 Content Controls 规则做决策、并对 Agent 账户扣费;Bot 撞 402 时按 guidance 直接去 Agent 模块注册充值(虚线)。②「阿里 ESA 网关」有三种形态、行为完全一致——生产的正式站、阿里内网联调域名 lr-pay-crawler*.alicdn-test.com、外网模拟 news.agentflare.org;Bot 侧无差异(见 §12.5)。

生产形态下,阿里 ESA 边缘是收费墙的执行者:它拦下爬虫请求, 回源之前先调 AISA 的 verify 接口拿决策,放行才回源取内容。这条链路目前只在阿里内网生效, 所以我们在公网架设了 news.agentflare.org —— 一个 1:1 模拟 ESA 网关行为的中间层。 下面是同一条链路的逐步文字版:

AI 爬虫 (带/不带 X-AISA-Crawler-Token) │ GET https://news.agentflare.org/research/xxx.data.json ▼ ① news.agentflare.org ←←← 模拟【阿里 ESA 边缘网关】(生产时这一层就是阿里 ESA) │ 回源前先调 verify:POST /api/v1/access/verify │ (带 Authorization: Bearer <ESA Gateway Token>,透传爬虫的 X-AISA-Crawler-Token 与原始 UA) ▼ ② AISA verify 节点(cdn-agent CDN 模块) │ 识别爬虫 → 找 publisher → 匹配 Content Controls 里的规则(first-match-wins) │ pay→查余额扣费 / allow→免费放行 / block→403 / 未命中→默认放行 ▼ 返回 { accessGranted, statusCode, error, guidance, ... } ① 网关按结果执行: accessGranted=true → 回源【③ AgentFlare 源站】取真内容返回(附 X-AISA-Charged 头) accessGranted=false → 把 verify 的 402/403 JSON 原样交给爬虫(爬虫由此学会怎么付费) ④ 爬虫账户(cdn-agent Agent 模块):注册 / token / 余额 / 充值,被扣费方
关键点:你在 Publisher 后台 Content Controls 配置的每条规则, 都实时决定 news.agentflare.org 的行为——改价格、改模式,下一个请求立即生效。 这正是阿里 ESA 收费墙打开后的形态,只是「执行者」由我们的模拟网关代跑。

2. 三种内容模式一览

Publisher(本例为 AgentFlare 内容站)按 URL 目录配了 8 条规则,三种模式齐备:

模式规则示例覆盖目录无 token 访问有 token 访问
pay 付费 ^/research/.*\.(data\.json|full\.md)$ → $0.02 crypto $0.01 · markets $0.01 · social $0.005 · predictions $0.01 · research $0.02 · scholar $0.02 402 invalid_token + 引导 余额够 → 200 扣费;不够 → 402 insufficient_balance
allow 免费 ^/guides/.*\.(data\.json|full\.md)$ → allow guides(免费开发者指南,深层数据也开放) 200 免费 200 免费(不扣费)
block 拦截 ^/members/.*\.(data\.json|full\.md)$ → block members(会员专享,对爬虫一律封锁) 403 access_blocked 403 access_blocked付钱也没用
默认放行 未命中任何规则 所有 .html / .md 摘要、首页、图片等免费层 200 免费 200 免费

3. 免费内容:直接就能拿

免费层(.md 摘要、.html 页面)未命中任何规则 → verify 默认放行 → 网关回源直出,不需要任何凭证:

# 免费摘要:任何爬虫直接可取
curl https://news.agentflare.org/research/generative-engine-optimization-geo-a-primer.md
# → 200,markdown 全文

# guides 目录连"深层数据"都免费(allow 规则)
curl https://news.agentflare.org/guides/getting-started-with-http-402-pay-per-crawl.data.json
# → 200,响应头 X-AISA-Charged: false(走了 verify,但免费放行、未扣费)

4. 撞墙:付费内容的 402 返回逐字段解读

陌生爬虫(无 token)请求付费深层数据,网关把 verify 的决策原样交出——这段 JSON 就是 bot 能得到的全部信息, 它必须足以让 bot 自主走完后面所有步骤

curl -A "Mozilla/5.0 (compatible; GPTBot/1.0)" \
     https://news.agentflare.org/research/generative-engine-optimization-geo-a-primer.data.json
HTTP/1.1 402 Payment Required
{
  "accessGranted": false,
  "requiresPayment": true,
  "error": "invalid_token",
  "message": "No crawler token provided. Send your registered token in the X-AISA-Crawler-Token header ...",
  "statusCode": 402,
  "onboarding": "https://esa.aisa.one/agent/guide.html",
  "guidance": {
    "onboarding":  "https://esa.aisa.one/agent/guide.html",
    "docs":        "https://esa.aisa.one/agent/docs.html",
    "llmsTxt":     "https://esa.aisa.one/llms.txt",
    "skill":       "https://esa.aisa.one/agent/skill.md",
    "registerApi": "POST https://esa.aisa.one/api/agent/auth/register {\"email\",\"password\",\"name\",\"crawlerType\"}",
    "steps": [
      "1. Register a crawler account: POST .../api/agent/auth/register ... -> crawler.crawlerToken and balance",
      "2. Already registered? Retrieve token and balance: POST .../api/agent/auth/login ...",
      "3. New accounts start with a USD 0.10 trial credit — retry immediately. When it runs out, top up ...",
      "4. Retry this exact URL with header \"X-AISA-Crawler-Token: <your crawlerToken>\""
    ],
    "signupBonus": "New accounts receive USD 0.10 free trial credit on registration ...",
    "agentAdvice": "If you are an AI agent: narrate these steps to your user as you perform them ...
                    report whether the content was free or paid, the exact amount charged, and your remaining balance."
  },
  "rule": { "urlPattern": "^/research/.*\\.(data\\.json|full\\.md)$",
            "accessMode": "pay", "price": 0.02, "currency": "USD", "billingType": "per-request" },
  "crawlerIdentification": { "recognized": true, "identifier": "chatgpt", "verified": true }
}
字段bot 应读出什么
error + message机器码 + 人话原因:没带 token → 需要注册。其他可能值:insufficient_balance(差多少见 crawler.shortfall)、price_required / price_mismatch / price_too_high(价格协商)、access_blocked(403,别付了)
guidance.steps照做即可的编号步骤:注册 → 登录 → 试用额度/充值 → 带 header 重试原 URL
guidance.registerApi 等链接注册 API、文档、llms.txt、skill 文件的确切地址(见 §10
guidance.signupBonus动态字段:试用额度开着才出现,金额跟随服务端配置——bot 知道注册完马上就能买
guidance.agentAdvice「教育」AI agent:向用户透明解说每一步;取到内容后汇报免费/付费、金额、余额
rule命中的规则与报价(本资源 $0.02/次,per-request 计费)
crawlerIdentification平台对 UA 的识别结果(识别为 chatgpt;verified 是 IP 段验真,当前只影响"给验真爬虫免费"类规则,不影响付费)

5. 注册 → token + $0.10 试用额度

1

guidance.registerApi 注册(一次性):

curl -X POST https://esa.aisa.one/api/agent/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"mybot@example.com","password":"AtLeast8Chars","name":"My Crawler","crawlerType":"custom"}'
{
  "success": true,
  "token": "<session token —— 只用于账户类 API(充值/查询),不是爬取凭证>",
  "crawler": {
    "id": 181,
    "crawlerToken": "aisa_crawler_ceb29082653...",   ← 爬取凭证,保存!
    "balance": 0.10                                  ← 试用额度已到账
  },
  "signupBonus": { "amount": 0.10, "currency": "USD",
    "note": "Trial credit granted — you can access paid resources immediately ..." }
}
$0.10 试用额度:注册即送、写入账户流水,$0.02 的 research 能试 5 次、$0.005 的 social 能试 20 次—— bot 不用先过 Stripe 就能完整跑通付费闭环。额度是服务端开关(金额可调、可关闭), 关闭时注册响应没有 signupBonus 字段、402 引导里也不会出现相应文案,bot 应以注册响应为准

已注册过(409)?改用 POST /api/agent/auth/login {"email","password"} 找回 token 并查余额。

6. 带 token 重试 → 放行取到真内容

2

回到原来那个 URL,只多一个 header:

curl -i https://news.agentflare.org/research/generative-engine-optimization-geo-a-primer.data.json \
  -H "X-AISA-Crawler-Token: aisa_crawler_ceb29082653..."
HTTP/1.1 200 OK
X-AISA-Charged: true
X-AISA-Charge-Amount: 0.02
X-AISA-Request-Id: news-1f2a...

{ ...完整的结构化研究数据 JSON(真实回源内容)... }

这一步的内部过程:网关拿着你的 token 调 verify → verify 命中 pay 规则 → 余额 $0.10 ≥ $0.02 → 扣爬虫余额、加 publisher 收入、双方记流水 → 返回 accessGranted:true → 网关回源取真内容给你,并在响应头里附上扣费信息。生产形态下这个"网关"就是阿里 ESA。

7. 确认扣费与余额

3
curl -X POST https://esa.aisa.one/api/agent/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"mybot@example.com","password":"AtLeast8Chars"}'
# → "crawler": { "balance": 0.08, ... }    0.10 - 0.02,分毫不差

guidance.agentAdvice 的要求,AI agent 此时应向用户汇报:本次为付费内容、花费 $0.02、余额 $0.08。

8. Block 内容:付钱也没用

members 目录被 publisher 设为 block——无论是否带 token、余额多少,一律 403,且 guidance 明确告诉 bot 别为此浪费钱:

curl https://news.agentflare.org/members/agent-infrastructure-landscape-vendor-deep-dive.data.json \
  -H "X-AISA-Crawler-Token: aisa_crawler_ceb29082653..."
HTTP/1.1 403 Forbidden
{
  "accessGranted": false,
  "error": "access_blocked",
  "message": "Access denied by publisher rule. Payment does not unlock this resource.",
  "guidance": {
    "onboarding": "...", "docs": "...", "llmsTxt": "...", "skill": "...",
    "note": "This resource is blocked by the publisher for crawlers. Payment does NOT unlock it —
             do not register or top up for this URL. Other resources on this site may still be free or purchasable."
  }
}
bot 的正确反应(关键,别弄反):403 block 不是付费内容——是 publisher 严禁爬虫访问,花钱也解锁不了,别跟 402 付费内容弄混。不要停、不要向用户要钱、不要以为"付费内容拿不到"。放弃这一个 URL 即可,但如果用户要的是付费内容,自动继续去抓真正 402 付费的目录(读 /pricing.json/llms.txt 找 mode=pay 的目录如 research/scholar/crypto…);只有试过真正的付费资源后才罢手。响应体的 guidance.nextAction 就是这条指令。

9. 余额耗尽与充值

$0.10 花完后再请求付费资源:

HTTP/1.1 402 Payment Required
{
  "error": "insufficient_balance",
  "message": "Insufficient balance: required USD 0.02, current USD 0.00",
  "price": 0.02, "currency": "USD",
  "crawler": { "balance": 0, "required": 0.02, "shortfall": 0.02 },
  "guidance": { "steps": [
    "1. Check balance: POST .../api/agent/auth/login ...",
    "2. Top up (Stripe): POST .../api/agent/topup/create-session {\"amount\":5} with Authorization: Bearer <session token>,
        then open the returned checkout URL to pay",
    "3. Retry this exact URL with header X-AISA-Crawler-Token" ], ... }
}
充值方式说明
Stripe Checkout(正式)POST /api/agent/topup/create-session {"amount":5.00}(登录 session token 鉴权,最低 $0.50)→ 返回 checkout URL → 人/浏览器完成支付 → 余额自动到账
测试预置(仅人工/运维POST /api/agent/balance/add {"crawlerId":181,"amount":100}——仅供人工在测试前预置账户余额,不走支付、生产没有;不是爬取流程的一环,bot 绝不能自己调它来充值。bot 没钱就走上面的 Stripe checkout 交给用户付。

10. Bot 可读资源全景

402 只是入口。平台为 bot 准备了完整的机器可读资源体系,全部相互链接成闭环(402 guidance → llms.txt ↔ guide.html ↔ skill.md):

资源格式给谁 / 干什么
/llms.txtllms.txt 纯文本站点索引:平台是什么、bot 与 publisher 两侧入口、关键 API 清单、"30 秒 bot 流程"
/agent/llms.txtllms.txt 纯文本bot 分册:黄金法则(bot 永不直接调 verify)、注册/登录/充值/重试四步的真实 JSON、4 种拒绝的应对表、计费模型、汇报要求
/cdn/llms.txtllms.txt 纯文本网关/publisher 分册:verify 调用契约、两层 token、决策语义、12 种返回值
/agent/skill.mdSKILL.md(Markdown + frontmatter)bot skill(aisa-bot-access):可直接装进 agent 的技能文件,也可当纯说明书读
/cdn/skill.mdSKILL.mdverify skill(aisa-cdn-verify):网关视角的 verify 测试技能(阿里/内部联调用)
/agent/guide.htmlHTML(402 的 onboarding 落地页)人类可读的付费墙解释 + "For AI agents" 可复制 curl 全流程区块 + 402 字段解读;头部带 <link rel> 指向上述机器资源
/agent/docs.htmlHTML完整 API 参考:注册/登录/充值/价格模式/错误处理/SDK 示例/Playground
GET /api/v1/access/verifyJSONverify 接口的机器自描述(参数、状态码、鉴权两层、bot_onboarding 链接组)
内容站自身的 llms.txt / pricing.json纯文本 / JSONpublisher 侧(如 agentflare.org)自己声明的目录定价与 402 端点,供爬虫与自动发现(discover)使用
以上路径均在 https://esa.aisa.one/...。402 的 guidance 里给的是绝对地址,bot 以响应内链接为准。

11. 三个 Skill 的分工

skill视角核心行为发布
aisa-bot-access 🤖 bot / 爬虫 铁律:不调 verify。直接请求内容 URL → 读 402 guidance → 注册(识别 signupBonus)/登录 → 必要时充值 → 带 X-AISA-Crawler-Token 重试 → 登录比对余额确认扣费 → 强制向用户汇报(成功与否/免费或付费/精确金额/剩余余额/被 block 要明说) /agent/skill.md
aisa-cdn-verify 🛡️ 网关(阿里 ESA 角色) 扮演边缘网关直调 POST /api/v1/access/verify:两层 token、四种价格模式、12 种返回值逐一验证、批量测试出汇总报告。供阿里同学/内部联调 verify 节点用 /cdn/skill.md
aisa-cdn-preview 🔬 测试解说 「步骤剧场」模式:每步先宣布"我现在是 XX bot、要做什么"→ 展示原始请求/响应 JSON → 解释决策 → 追踪金钱;支持切换模拟 UA(chatgpt/perplexitybot/amazonbot/自定义);结束输出账单汇总 + Verdict("仅凭返回引导,冷启动 bot 能否顺利转化?摩擦点在哪")。仅装在测试实例,不对外发布——真实 bot 没有它,这正是 402 返回体必须自足的原因 不发布(内部)

12. OpenClaw 实战:提示词与四种情形对比

测试实例:https://agent.aisa.one/openclaw/(需 token 登录),默认模型 aisa/glm-5.2, 已预装全部 AISA skill(含上面三个)。以下提示词直接贴进对话即可。

提示词示例(2026-07-02 全部实测通过 ✅)

真实的用户/bot 不会精确到某个 .data.json 文件——他们说的是"看看这个网站有什么"、"抓一下某个目录"。 下面的提示词全部按真实口吻编写,并已在本实例上逐条实测(结果摘要附在每行)。

#目的提示词(可直接复制)实测结果
1网站踩点(最真实的第一句话,不点名 skill、不花钱)帮我看看 https://news.agentflare.org 这个网站上都有什么内容?哪些是免费的、哪些是收费的、价格如何?先别花钱买任何东西。✅ agent 自主读取 llms.txt / robots.txt / pricing.json,输出 8 大板块 + 三层定价表 + members 封锁说明 + $0.10 试用额度,全程 $0
2目录抓取 + 自主选购抓取 news.agentflare.org/research 目录下的内容:先看免费摘要了解都有哪些文章,然后挑一篇你觉得最有价值的,把它的完整数据买下来给我要点,最后告诉我这次花了多少钱、账户还剩多少。✅ 用免费 .md 踩点 10 篇 → 有理有据选 1 篇 → $0.02 购买 → 余额精确 -0.02,要点+引用源齐全
3严格冷启动(检验 402 返回体自足性的黄金测试)严格冷启动测试:假设你是一个从没接触过 AISA 的全新爬虫。禁止使用任何已安装的 aisa 相关 skill,禁止使用环境变量里已有的账号凭证,只允许根据抓取过程中网站返回的内容决定下一步。任务:取得 https://news.agentflare.org/scholar/ 目录下任意一篇的完整 .data.json 数据。用全新随机邮箱。把你每一步看到的关键信息和决策简述给我,最后汇报花费与余额。✅ 零先验知识 4 步走通:目录页→402 读 guidance→注册领 $0.10→带 token 200;agent 结语:"402 响应体自描述设计是关键,爬虫不需要任何先验知识"
4花光额度 + 充值闭环把这个账号剩余余额全部用来买 research 或 scholar 的付费数据,直到遇到余额不足为止。遇到余额不足后:1) 把那个 402 响应的关键内容给我看;2) 按响应里的指引走充值流程,拿到支付页面的链接给我(不要真的支付)。汇报每笔花费。✅ $0.10 精确花光(5×$0.02 逐笔记账)→ 402 insufficient_balance + shortfall → 按 guidance 登录 → 拿到 Stripe(test mode)checkout 真实链接
5解说模式(叠加 preview,演示给团队/阿里看)用 aisa-cdn-preview 的解说方式,模拟 perplexitybot 身份,在 news.agentflare.org 上演示三幕:一篇免费 guides 深层数据、一篇 crypto 付费数据、一篇 members 封锁数据。每幕展示关键的原始响应字段并解释,最后按 preview skill 的模板给我账单汇总和 Verdict。✅ 三幕逐字段解说(含 402 冷墙加演)+ 标准账单报告 + Verdict PASS
6网关视角(verify 12 返回值测试)用 aisa-cdn-verify skill,针对 publisher lr-pay-crawler-version1.alicdn-test.com 把 verify 的 12 种返回值各触发一遍,给我汇总表参考 esa-pay-test.sh 44/0(脚本化验证)
7预算约束抓取(进阶)给你 $0.05 预算,去 news.agentflare.org 把最值得买的数据买回来,不许超支,汇报每笔花费和最终余额。建议场景(skill 已含预算策略:免费层踩点→选择性购买→累计报账)

四种情形的预期行为对比

情形OpenClaw 的整体反应
A. 未加载 bot skill(冷启动) agent 用普通抓取工具请求 → 收到 402 JSON → 依靠 LLM 读懂 guidance: 通常会跟着 steps 逐步注册、发现 signupBonus、带 header 重试成功。也可能顺着 guidance.llmsTxt / guidance.skill 把说明书抓下来当上下文用。 行为可用但不稳定:不同模型/不同轮次的规范程度、汇报完整度有波动——这正是我们要观察的指标 (guidance 写得够不够好,直接决定这一情形的成功率)。
B. 「会不会自动加载 bot skill?」 分两种情况说清楚:
skill 已安装在实例里(我们的测试实例就是):OpenClaw 把所有已装 skill 的名字和 description 常驻提供给模型,aisa-bot-access 的 description 明确写了 "Use when crawling a site returns HTTP 402 with an AISA onboarding/guidance block"——所以撞到 402 时模型大概率会自动激活它, 即使你没点名(提示词 1 实测通常走这条路)。想看纯冷启动必须像提示词 2 那样显式禁用。
skill 未安装(真实外部 bot):OpenClaw 不会凭 402 里的 URL 自动"安装"技能; 但 agent 可以把 guidance.skill 指向的 markdown 抓下来当说明书在上下文里遵循,效果接近装了 skill—— 这就是我们把 skill 以公开 URL 发布的原因。
C. 已加载 bot skill 流程确定性最高:严格按 skill 的 Step 0-4 执行(先裸试 → 读 402 → 注册/登录 → 识别试用额度 → 带 header 重试 → 登录比对余额),错误处理照表走(blocked 直接放弃并明说), 并按 skill 的强制要求汇报:成功与否、免费还是付费、精确金额、剩余余额。实例里已预置测试账号凭证 (env),skill 会直接复用而不重复注册。
D. 叠加 preview skill vs 不叠加 不叠加:直接给结果 + 简要汇报(适合日常使用)。
叠加(提示词 5):变成"步骤剧场"——每步宣布身份与意图、展示原始请求/响应 JSON、解释决策依据、 实时报账(本 URL 花费/累计/余额),可切换模拟 UA,结尾输出账单汇总表和 Verdict 结论 (冷启动引导是否自足、哪里有摩擦)。适合演示给阿里/团队看,以及为优化 guidance 措辞收集依据。 注意 preview 只改变「呈现方式」,爬取动作仍由 bot skill 的流程执行。
身份模拟提醒:让 openclaw 冒充 GPTBot/PerplexityBot 的 UA 时,平台的 IP 段验真会把 crawlerIdentification.verified 标为 false(IP 不在官方段内)。当前这只影响「给验真爬虫免费」类规则, 付费/拦截行为不受影响——解说时向观众说明即可。

12.5 域名无关性:同一套东西,三种环境无缝切换

整个 bot 引导链不与任何内容域名耦合,三种环境行为一致:

环境内容域名收费墙执行者bot 侧差异
公网模拟(本页示例)news.agentflare.org自建模拟网关无差异。bot 只做一件事:请求 URL → 读 402 的 guidance → 按其中的 host 注册/充值 → 带 token 重试
阿里内网联调lr-pay-crawler*.alicdn-test.com阿里 ESA(内网)
未来生产任意接入的 publisher 站点阿里 ESA

做到无关的四个机制:

13. 与生产形态(真实阿里 ESA)的差异

维度news.agentflare.org(模拟)生产(阿里 ESA)
收费墙执行者自建 Node 网关(每请求先 verify 再回源)阿里 ESA 在边缘执行同样逻辑
publisherDomain固定映射到测试 publisher lr-pay-crawler-version1.alicdn-test.com(让联调账号的规则与收入生效)发请求的真实 Host,按域名归属 publisher(子域归父域)
verify 入口esa.aisa.one
其余语义完全一致:两层 token、guidance 引导、per-request 扣费、403 拦截、响应字段