站斧开店技能包
把「打开站斧 → 拿到店铺窗口 CDP 端口 → 驱动这个窗口」这条链路的技能打包带走。
包里有什么
SKILL.md 本文件
scripts/
zhanfu_api.js 站斧 HTTP 自动化接口(list / mall / open / port / close)
cdp.js 通用 CDP 工具(list / eval / shot / nav / cap,认会话令牌)
skills/
open-store-via-zhanfu/ ★ 主技能:打开店铺窗口,输出 cdp_port
SKILL.md
scripts/open_store.js 一键编排(闸门→别名→店铺名→查ID→读端口→开窗口)
scripts/license_gate.js 付费授权客户端
scripts/license_public.pem 授权服务公钥
scripts/license.config.json 授权服务地址
cdp-browser-drive/ CDP 直连方法论 + 四个实测必踩的坑
zhanfu-store-automation/ 上游真源存档
SKILL.md 本机装载时的转发指针
UPSTREAM-SKILL.md 上游完整正文(含 20+ 条实测避坑)
怎么用
# 1) 确认站斧已以 web_driver 模式启动(默认 HTTP 端口 45008)
# 已在监听就别重启 —— 重启会重写 cookie、可能挤掉登录态
Get-NetTCPConnection -LocalPort 45008 -State Listen -ErrorAction SilentlyContinue
# 2) 打开店铺(<别名|店铺名>)
node skills\open-store-via-zhanfu\scripts\open_store.js tk15
# 输出 JSON:{ mall_name, mall_id, cdp_port, already_open, http_port }
# 3) 用拿到的 cdp_port 读页面 / 执行 JS / 截图(会话期内免费)
node scripts\cdp.js <cdp_port> list
node scripts\cdp.js <cdp_port> eval "document.title"
node scripts\cdp.js <cdp_port> shot D:\somewhere\x.png
open_store.js 的依赖查找顺序:包内 scripts/zhanfu_api.js → 回退 D:\WB_use\scripts\zhanfu_api.js。
付费(一次开店会话 5 毛,含 10 分钟 CDP)
计费单位是一次开店会话:付 ¥0.50,拿一张 10 分钟有效的令牌。这 10 分钟里
open_store.js 和 cdp.js 的所有读页面/截图/抓包都认这张令牌,不再收费、不再联网。
- 新机器前 3 次免费(试用);之后一个会话 ¥0.50;
- 未付款 → 退出码
7,stderr 是PAYMENT_REQUIRED {…},带完整支付宝 402 账单; - 已付款 → 把
Payment-Proof放进环境变量ZHANFU_PAYMENT_PROOF重跑,拿到令牌后正常开店; - 会话期内重复调用 → 直接复用令牌(
cached=true),不扣费; - 同一笔未支付订单复用,不会重复开单;单日 50 次上限,防智能体死循环。
node skills\open-store-via-zhanfu\scripts\license_gate.js status 可以查看当前会话还剩多久。
令牌由服务端私钥签发、license_public.pem 验签、绑机器指纹、10 分钟过期。
授权服务地址在 skills/open-store-via-zhanfu/scripts/license.config.json。
付费调用流程(官方买家能力)
本技能按次计费,单次 0.50 元。付款走支付宝官方买家能力,不要自行实现签名或代付。
依赖
npx -y @alipay/agent-payment@latest install
安装后 Agent 应能使用 alipay-bot 的 402-buyer-pay(发起支付)和 402-query-payment-status(查单并交付)。
调用顺序
- 请求资源:执行
open_store.js,未付款时拿到 HTTP 402 +Payment-Needed头 - 发起支付:把账单文件和原始请求交给官方买家能力
alipay-bot 402-buyer-pay \
--session-id SESSION_ID \
--file 保存的-Payment-Needed \
--resource-url https://6806preachai.com/v1/license \
--method POST \
--intent-summary "原始请求:打开指定店铺窗口"
- 用户扫码授权:展示金额与用途,等待用户确认
- 查单并重试:
alipay-bot 402-query-payment-status --out-shake-no <订单号> --resource-url ... --method POST,成功后服务端返回会话令牌 - 继续业务:拿到令牌后重新执行
open_store.js,10 分钟内cdp.js免费
脚本兜底路径
如果当前 Agent 没有官方买家能力,license_gate.js 会把 402 账单原样透出;
付款后把 Payment-Proof 放进环境变量 ZHANFU_PAYMENT_PROOF 重跑同一条命令即可。
服务端保证
- 402 账单:HTTP 402 +
Payment-Needed(Base64URL JSON) - 验付:
alipay.aipay.agent.payment.verify,校验金额、订单号、资源 ID、交易号未复用 - 履约:
alipay.aipay.agent.fulfillment.confirm,失败可用同一凭证重试 - 幂等:同一订单只发一次资源,重试返回已保存结果
硬性红线(别绕过)
- 永不切网络:
isSwitchDynamicNetwork在zhanfu_api.js的open()里写死false,不接受调用方覆盖。换 IP = 封店风险。 - 窗口已开就别重复 open:重复开会重写 cookie、可能挤掉登录态。脚本已先读子进程命令行判「已开」。
- 只读优先:本包只解析店铺、拿端口、读页面。不点提交、不改站斧配置、不动
init.json/data.json。 - 不调
Login:会关掉已开的店铺。 - 用户说「停」立即停。
排错
| 现象 | 处理 |
|---|---|
PAYMENT_REQUIRED(退出码 7) |
免费额度用完。按 402 账单付款后,把 Payment-Proof 放进 ZHANFU_PAYMENT_PROOF 重跑 |
LICENSE_SERVER_UNREACHABLE(退出码 8) |
授权服务连不上;检查网络,或看 license.config.json 的 server_url |
LICENSE_INVALID(退出码 4) |
令牌验签失败;多半是 license_public.pem 与服务端不配对 |
DAILY_LIMIT(退出码 8) |
单日 50 次会话上限,次日恢复 |
RESOLVE_FAIL |
别名/店铺名不对。先 node scripts\zhanfu_api.js 45008 list 看全量店铺名 |
NO_PORT |
窗口拉起失败或端口读不到。等 6s 后重试,或看站斧 UI 窗口是否真开了 |
ZFMOD_MISS |
zhanfu_api.js 既不在包内 scripts/ 也不在 D:\WB_use\scripts\ |
| 45008 没监听 | 站斧没带参数启动,需 --multip --run_type=web_driver --ipc_type=http --httpport=45008 |
| 沙箱里 GUI 起不来 | 别用 Start-Process(会被回收),用 WMI Invoke-CimMethod Win32_Process.Create |
环境
- Node 21+(自带全局
WebSocket/fetch,零依赖,不用装包) - Windows + PowerShell
- 站斧 ≥ 5.2.12