← 返回专栏
Skill

指挥 Agent 抓数据:可行性判断到结果验收

AI 工具Agent数据抓取
4·20 分钟·产出:可执行的 Agent 任务描述

让 AI agent 帮你抓数据、跨平台操作,听起来很美好——但现实是:目标网站有反爬、接口有签名、App 有 SSL Pinning,agent 经常跑着跑着就卡住了。

这篇不教你写代码,教你当指挥官:判断一个任务能不能做、怎么描述让 agent 不跑偏、结果怎么验收不被假数据骗到。

核心原则:任何任务都先小样 10 条 → 验收 → 再放量,永远不要一上来跑全量。

开始操作

可行性判断——这事能做吗

拿到一个抓数据的需求,先别急着动手。用这张评分卡快速定档:

五维评分(每项 1-3 分,总分 5-15):

维度1 分(轻松)2 分(中等)3 分(重)
接口形态官方 API / 干净 JSONHTML + 简单 XHR数据藏 App / 响应加密
鉴权强度无登录 / API Key普通 Cookie 登录短期 token + 复杂签名
风控等级无识别限频 / UA 校验Cloudflare 等专业风控
数据载体静态页 / JSONJS 动态渲染App / 小程序 / 桌面端
规模一次性 / 1 万以下周期 / 1-100 万持续 / 100 万以上

四档结论:

  • 5-7 分 友好:agent 能独立搞定,小时级出活
  • 8-10 分 中等:agent 能做,但需要你提供代理或账号,1-3 天
  • 11-13 分 困难:agent 半能做,关键节点你定路线,1-2 周
  • 14-15 分 地狱:agent 做不了,需要人主导

30 秒快筛(拿到目标先做这五步):

  1. DevTools → Network → Fetch/XHR:有结构化 JSON 接口吗?有 → 友好/中等
  2. 看请求头:有 X-Sign / _signature / X-Bogus 这类自定义参数?有 → 至少升一档
  3. 看响应 Cookie:带 __cf_bm / datadome / ak_bmsc?带 → 困难档
  4. curl 重放:把请求复制成 curl 跑一遍,结果一致吗?不一致 → 有动态参数
  5. 换端验证:手机 H5 / App 有没有同样数据?没有且只在 App → 地狱档

写任务描述——让 agent 不跑偏

任何任务必须包含四要素:入口、字段、规模、终止条件。少一个就别动手。

用这个模板给 agent 下指令:

【任务目标】
一句话说明要什么数据 / 触发什么动作。
 
【入口】
起始 URL / 操作位置:______
登录态:需要 / 不需要(账号位置:______)
 
【流程】
Step 1:______
Step 2:______
Step 3:______
 
【字段定义】
- 字段A(类型,示例值,缺失时如何处理)
- 字段B(同上)
 
【规模与频率】
目标数量:______
跑的频率:一次性 / 每天 X 点 / 持续
单次预算:时间上限 __ 分钟,请求上限 __ 次
 
【终止条件】
- 连续 N 次失败 → 停下汇报
- 触发验证码 → 暂停等人处理
- 数据量低于预期 X% → 停下汇报
 
【交付】
保存到:______(路径 / 表)
格式:______(jsonl / csv / sqlite)
 
【约束】
- 禁止行为:______
- 速率限制:每秒 ≤ __ 次

好描述 vs 坏描述:

坏描述好描述
帮我爬 X 网站从 X 列表页第 1-50 页进详情,拿「标题/价格/上架时间」,存 CSV
监控竞品价格每天 9 点抓 A/B/C 三个 SKU 在 X 平台当前价,跌幅超 5% 通知
登录后下载文件用账号 ___ 登录 X 系统,进「报表」→「月度」,下载最新 PDF
抓所有评论抓商品 ID=12345 评论,最多 1000 条,时间倒序,遇登录则停

分阶段交付(必须遵守):

  1. 小样:跑 10 条 → 你人工核对
  2. 中样:跑 100 条 → 看稳定性、是否触发反爬
  3. 放量:再跑全量,必须有进度上报与异常熔断

结果验收——别被假数据骗了

agent 说"完成了",你不能直接信。过三道关:

第一关:抽样比对

随机抽 5-10 条,浏览器手开同一条数据对照。重点看:

  • 字段顺序对不对
  • 文本有没有截断
  • 数字单位有没有错("1.2万"被存成"1.2")

第二关:数量级

网站显示"共 8 万条",agent 给你 200 条,必有问题。常见原因:分页没翻完、被风控截断、去重过激。

第三关:字段完整度

每个字段统计缺失率,超过 5% 就要查。某字段全空 → 选择器失效或字段改名。

故障定位——agent 卡住了怎么办

agent 跑着跑着不动了,先定位"卡在哪一层":

症状大概率原因第一行动
403 ForbiddenUA/Cookie/IP 问题检查 UA、Referer、Cookie;换 IP
429 Too Many Requests限流降频、加代理池
418 / 521 / 520Cloudflare 等风控换入口或降速
302 跳登录页登录态丢失重新登录、刷新 Cookie
200 但内容空选择器失效或假成功重抽样、改选择器
弹验证码风控触发降频 / 换 IP / 打码

假成功识别(最阴险的失败):

HTTP 200 不等于成功,警惕这几种:

  • 风控伪页:返回空壳 HTML / "请稍后再试",但状态码 200
  • 降级页:未登录看到的简略版,agent 误以为是完整数据
  • 重复模板:每条记录字段一模一样 → agent 卡在某个 fallback 上反复输出

判断方法:看字段熵——所有标题都是同一句、所有价格都一样,就是出事了。

换层决策(爬不动时别死磕):

  1. 接口直连搞不定 sign → 上 Playwright 让浏览器自己算
  2. Playwright 被指纹识别 → 上反检测方案(patchright / camoufox)
  3. 网页没有数据 → 抓 App 包
  4. App 抓不了(SSL Pinning)→ Frida 解 pinning
  5. 全部搞不定 → 回头问"这事还值得做吗"

每退一层成本翻 3-5 倍,退两层以上就该重新评估 ROI。

Skill 文件即将上线