dsh-web-recon · 网页系统侦察
English | 中文
给 DeepSeek Harness 的插件。摸清一个网页系统怎么运作,只摸一次。
它解决什么问题
让 agent 自动化一个网页后台,最常见的做法是:截图 → 找按钮 → 点 → 再截图 → 再找。这个做法有三个毛病:
1. 贵。 一张截图几千 token,一个流程几十张。 2. 脆。 认坐标和像素,页面一改版就全崩。 3. 不沉淀。 这次花两小时摸清了,换个会话从零再来一遍。
真相是:按钮背后是 HTTP 接口,像素背后是可访问性树。两者都便宜得多,也稳定得多。
这个插件把一次侦察的结果固化成这个系统的作战手册——接口、鉴权方式、关键控件——以后所有同类任务照手册走,不再看页面。
效果长什么样
对一个单页应用侦察一次,产出(真实结果):
识别出 6 类应用接口;可访问性树 896 个节点
接口所在主机:api.gleif.org、challengemanagement.gleif.org
| 方法 | 主机 | 路径 | 查询参数 | 鉴权 |
| GET | api.gleif.org | /api/v1/lei-records | filter[fulltext] | 无 |
| GET | api.gleif.org | /api/v1/autocompletions | q, field | 无 |
| GET | challenge… | /users/auth | — | XSRF 令牌 |它一个按钮都没点,就知道这个系统的搜索该怎么调。界面和接口不在同一台主机上——这是单页应用的常态,也是照着界面摸索永远绕不过去的坑。
安装
dsh plugin --profile web add github:sherconan/dsh-web-recon纯 JavaScript,零运行时依赖,无需构建。不需要 Playwright,不下载任何浏览器——直接用 Node 内置的 WebSocket 连 Chrome 的调试协议。
需要本机装有 Chrome、Chromium 或 Edge 之一(也可用环境变量 DSH_WEB_RECON_CHROME 指定路径)。
安全边界
这个插件要碰登录态,所以边界是设计的第一位:
- 专用浏览器。 它跑自己的 Chrome、自己的配置目录,绝不接管你日常那个浏览器。它唯一能看到的登录态,是你在这个专用浏览器里亲手登录的那几个站。你的邮箱、网银、内网系统它碰不到。
- 站点白名单。 未授权的站点直接拒绝,不是警告。授权带时间戳,白名单本身就是审计记录。
- 凭据只由你输入。 只有登录这一个动作会开可见窗口,让你本人登录;其余全程无头,不弹窗。插件不会替你输密码,也不会向你索要密码。
- 只回摘要。 原始抓包和完整可访问性树不会进对话——否则省下来的 token 等于又还回去了。
工具
| 工具 | 用途 |
|---|---|
web_site_authorize / web_site_revoke / web_site_list | 站点授权与撤销 |
web_browser_login | 开可见窗口,你本人登录一次 |
web_browser_close | 关闭专用浏览器 |
web_recon | 侦察一个页面,产出并累积手册 |
web_replay | 按手册直接调接口办事(不截图、不点界面) |
web_playbook_list / web_playbook_get | 读已有手册(先查这个,别重复侦察) |
重放:办事的那一步
拿到手册之后,web_replay 直接调接口:
- 凭据不经手。 请求在专用浏览器的页面里发出,Cookie、CSRF、跨域全由浏览器处理,跟真实应用发的请求一样。插件从不读取、不存储、不打印任何凭据值。
- 凭据模式自动适配。 先带登录态调;若接口是公开的(CORS 允许任意来源,按规则就不能带凭据),自动降级重试一次,并如实告诉你是哪种方式成功的。
- 改写类请求默认拒绝。 POST/PUT/PATCH/DELETE 会改变目标系统状态,必须你明确同意后显式放行,模型不能自行确认。
- 响应先蒸馏。 只回状态、结构摘要和截取片段,不把整坨 JSON 灌进上下文。
手册存在哪
$DSH_HOME/web-recon/playbooks/<站点>.json,可读可改的 JSON。多次侦察按接口并集累积——熟悉该系统的人可以直接手改纠正。
已知限制
- 服务端渲染的页面没有独立接口可挖,此时手册的价值主要在控件清单。
- 有些接口只在特定操作后才触发。用
interact参数指定一个选择器,让侦察时点一下再观察。 - 手册会随目标系统改版而过期。改版后重新侦察一次即可,接口按并集累积不会丢历史。
- 手册目前记录接口形态,不记录字段语义。哪个参数是什么意思,仍需你或模型判断。
- 尚未做多步流程编排(登录→取列表→逐条处理 这种串联仍靠模型自己组织)。
许可
MIT