andytreuberg/SiteAudit
GitHub: andytreuberg/SiteAudit
一个基于 Arc 链和原生 USDC 支付的自主网站审计代理,按任务付费并链上记录报告,实现 SEO、速度和安全头的快速自动化检查。
Stars: 0 | Forks: 0

# SiteAudit
**输入一个 URL。支付几分钱的 USDC。一个 agent 会扫描该网站,并在你读完这句话之前将报告上链 ——**
`ARC TESTNET` · `原生 USDC` · `按任务付费` · `x402` — 已在 **siteaudit-arc.vercel.app** 上线
### 简短版
我花了三十年时间寻找别人网站上的漏洞。第一轮检查总是那几样——缺少标题、首字节响应缓慢、没有 `Content-Security-Policy`——这根本不需要耗费一整天的咨询时间。所以我训练了一个小 agent 来专门做这项检查,并为它加上了投币口。
你输入一个 URL 和 **五分钱**。费用暂时不会转到任何地方——它会留在托管账户中。一个自主 agent 会抓取页面,运行真正的扫描,进行百分制评分,并 **将结论上链**:谁付了钱、扫描了什么、得分以及调查结果的 `keccak256` 指纹。*只有* 到这一步,这笔钱才会从托管账户转入 agent 的钱包。没有报告,就没有付款——你的费用是可退还的。工作优先,付款在后。
这就是 agent 经济体在一个投币机中的完整体现:**你不需要雇佣审计员,而是按任务付费,并且收据是账本上的事实,而不是收件箱里的发票。**
### agent 实际检查的内容
一次 `fetch`,三个视角,没有 LLM 的含糊其辞——每一项扣分都是你可以读懂的规则:
- **🔍 SEO** —— `` 及其长度、meta description、唯一的 `
`、viewport、canonical、`lang`,以及决定分享链接样式的 Open Graph / Twitter 卡片。 - **⏱ 速度** —— 实际响应时间(分段)、正常的 2xx 状态码、gzip/br 压缩、HTML 权重,以及是否有缓存或位于 CDN 之后。 - **🛡 安全** —— 真正重要的 headers:HTTPS、HSTS、`Content-Security-Policy`、点击劫持保护、`nosniff`、`Referrer-Policy`、`Permissions-Policy`。每缺少一项都会作为一个发现,并附带一行说明*为什么它很重要*。 三个子分数,加权混合成总分数。故意将其设计为一次 *微型* 审计——meta + 时间 + 一把 headers——而不是 Lighthouse 爬取。对其自身的范围非常坦诚。 ### 为什么这只能在 Arc 上实现 如果过路费比乘车费用还高,这种五分钱的产品瞬间就会消亡。在 Arc 上,**原生 USDC 就是 gas 和货币**——审计费、agent 的报酬以及 agent 自身的上链写入,都是同一种货币。这笔钱到达时几乎是完整的,每天处理上千次审计的 agent 会用刚赚到的货币支付每次报告写入的费用,无需照看单独的 gas 资金池。如果把这个放到消耗 ETH 作为 gas 的链上,费用就会蒸发成 gas;这种机器规模的模式根本无法启动。 ### 对于 agent —— 审计是一个付费的 API (x402) 人类通过粉色按钮购买的相同服务,另一个 agent 可以通过真正的 **x402** (HTTP-402) 来购买。一个验证域名列表的 bot 会按每次扫描付费,无需钱包 UI: ``` POST /api/x402/audit → 402 { accepts:[{ network:"eip155:5042002", maxAmountRequired, payTo, asset:native }] } requestAudit(url){value:price} → tx (native USDC, escrowed on-chain) POST /api/x402/audit X-PAYMENT: base64({ txHash }) → 200 { score, report, reportTx } + X-PAYMENT-RESPONSE ``` **诚实的范围:** Arc 的 USDC 是 *原生* 的——没有 ERC-20,没有 EIP-3009 无 gas 转账——所以这是 **先付费后证明**,而不是由 facilitator 进行结算。agent *通过合约* 支付并用交易来证明;路由会在链上自行验证 `AuditRequested` 事件,并通过新鲜度窗口限制重放。真正的 `402` / `X-PAYMENT` / `X-PAYMENT-RESPONSE` 线上传输格式,没有无 gas 的虚伪做作。演示:[`agent/audit-demo.mjs`](agent/audit-demo.mjs)。 ### 我不会过度吹捧的部分 区块链无法证明扫描确实发生过——这对于有史以来编写的每一个 oracle 都一样。[`SiteAudit.sol`](contracts/SiteAudit.sol) *确实能* 保证的是资金: - 你的费用会被 **托管**,并且 **只有** 在提交报告后才会释放——否则你可以在退款窗口期后 100% 取回; - 获得报酬的 agent 在请求时就已经 **绑定到你的任务**,因此所有者无法将后来的 agent 重新指向你已经托管的资金(这是每个任务的快照,而不是可变的全局状态——这是在发布前两次独立的对抗性审查所追查到的唯一一个真正的 bug,现在已经被修复); - **没有管理员抽水、没有协议费、没有金库、没有提款** —— 每一个进入的 wei 只有一个出口,交付时给审计员,或者退款时给你; - 全面采用 CEI(检查-生效-交互模式)、终态防护,并且 `receive`/`fallback` 会拒绝多余的代币,因此余额始终等于所有未完成任务的金额总和。 报告本身是 **链上内联的**(任务中包含一个紧凑的 JSON),并带有 `keccak256` 承诺——你可以自己重新计算哈希值,它会完全匹配。没有会损坏的 IPFS pin,没有需要信任的 S3 bucket。 ### 运行它 ``` npm install npm run dev # http://localhost:3000 # 自治审计器(其在 .env.local 中拥有独立注资的钱包): node agent/auditor.mjs ``` 线上网站会在你付款的那一刻以 serverless 的方式触发同一个 agent,因此审计会在几秒钟内完成;`agent/auditor.mjs` 是为想要自己运行 agent 的人提供的独立监控程序。 ### 规格说明 ``` chain ......... ARC testnet (5042002) · native USDC, 18 decimals contract ...... SiteAudit.sol — escrow-with-result, no OpenZeppelin, no admin over funds toolchain ..... solc 0.8.35 · paris · optimizer 200 · no viaIR (flatten-verifiable) stack ......... Next.js 16 · React 19 · ethers v6 · Tailwind v4 type ......... Cabinet Grotesk · Crimson Pro · Geist Mono ``` *由 Andrew Treuberg 在科隆构建。三十年来一直在告诉别人他们的 headers 丢失了——现在已自动化、上链,并披上了粉色外衣。*
标签:SEO检测, Syscall, Web开发, 区块链, 安全基线检查, 对称加密, 网站性能监控, 自动化审计, 自动化攻击