用途:derive-client 用于把一次录制的浏览器会话转换为独立客户端(脚本、CLI 或库),直接调用网站内部 API。首次访问用浏览器合适,重复调用则用生成客户端更高效。
主要能力与流程:
- 录制:使用 agent-browser network har start 开始捕获(默认嵌入文本响应体),操作目标流程后执行 agent-browser network har stop /tmp/site.har。建议每个流程至少用不同输入跑两次,便于对比 URL 找出参数。若需登录,应在开始录制前登录,凭证不必要时不会落入录制。--content all 也嵌入二进制体(base64),--content none 关闭嵌入,单个体上限 2 MB。
- 识别接口:用 jq 查询 HAR,筛出 JSON API 调用(方法、URL、状态),忽略遥测、第三方域名和静态资源;真实 API 通常为第一方 JSON 且与所做操作对应。
- 提取结构与鉴权:用 jq 查看单个接口的请求头、POST 体和响应体,读取 .response.content.text 推导类型。对比各接口请求头,关注 authorization、cookie、x-csrf-token、x-api-key 等;用 agent-browser cookies get --json > cookies.json 导出会话,切勿把 cookie 值硬编码进源码。
- 生成客户端:每个流程一个函数(如 search(query)、getItem(id)),类型源自观察到的响应体;鉴权材料从文件或环境变量加载,过期时提示重新登录;复现接口必需的请求头,并保留分页、排序、过滤参数为函数选项。
- 验证:对实时 API 调用每个生成函数并与录制结果比对。常见问题:401/403 为会话过期或缺失,需重新登录并导出 cookie;写入时 403/419 多为 CSRF 令牌按会话或表单生成,可先请求令牌接口或保留浏览器驱动;先可用后失效可能是签名或过期请求参数,可将该步骤回退为浏览器操作;响应结构与 HAR 不同可能因 A/B 测试或地域差异,需重录并把并集当作可选字段。
限制与注意:内部 API 通常无版本管理且可能随时变更,应保留 HAR 以便重新推导;需遵守网站服务条款与速率限制,批量抓取应加延迟;HAR 文件包含实时会话凭证(cookie、令牌、POST 体),应视为机密,不纳入版本控制并及时删除。