网页巡查
网页巡查
结论先行
有两条可用路径,优先用 A(已验证、今天就能跑):
| 路径 | 状态 | 说明 |
| --- | --- | --- |
| A. 独立脚本 tools/web-patrol.mjs | ✅ 已验证(2026-11-03) | 无需重装应用,用系统 Edge 无头模式 + CDP |
| B. 产品内置巡查窗口(HTTP 接口) | ⚠️ 未验证 | 代码在 src/browser-control.js,需重新打包安装后才生效 |
A. 独立脚本(推荐)
基本用法
$NODE = "C:\Program Files\sanshan-kaiwu\resources\runtime\node.exe"
$P = "<产品仓库>\tools\web-patrol.mjs"
& $NODE $P open --url "https://example.com" # 打开(首次会自动启动无头浏览器)
& $NODE $P text # 读正文(innerText,最多 4000 字)
& $NODE $P html --selector "main" # 读指定区块 HTML
& $NODE $P click --selector "#login" # 点按钮
& $NODE $P fill --selector "#user" --value "abc" # 填输入框(触发 input/change)
& $NODE $P eval --js-file probe.js # 执行 JS 并取值
& $NODE $P shot --out "C:\path\shot.png" # 整页截图
& $NODE $P close # 关标签页
输出统一是 JSON:{"ok":true,...} 或 {"ok":false,"error":"..."}。
Windows 引号坑(必读)
--js 直接带引号的表达式会被 PowerShell 吞掉引号(实测报 Uncaught)。
一律把 JS 写进临时文件,用 --js-file:
Set-Content -Path "$env:TEMP\probe.js" -Value 'document.querySelector("#pairId").value' -Encoding UTF8
& $NODE $P eval --js-file "$env:TEMP\probe.js"
登录态
浏览器用固定 profile:%APPDATA%\三山开物\patrol-profile。
需要登录的站点:先用 open 打开登录页 → 改为有头模式(去掉脚本里的 --headless=new)登录一次 → 之后无头模式复用同一会话。
已验证记录(2026-11-03)
| 动作 | 对象 | 结果 |
| --- | --- | --- |
| open | http://43.142.50.8/ | title = 三山开物 · 三山之间,万物可造 |
| text | 同上 | 1144 字正文 |
| shot | 同上 | 329,745 字节 PNG |
| fill | https://git.zilvxingqiu.top/app/ 的 #pairId | 回读值 = demo-123 |
| eval | document.title | 三山开物 · 手机遥控 |
B. 产品内置巡查窗口(未验证)
src/browser-control.js 在 Electron 主线程里开一个独立会话窗口,暴露本地 HTTP 接口,
配置写在 %APPDATA%\三山开物\dsh-home\browser-control.json(只监听 127.0.0.1,令牌每次启动重新生成)。
注意:当前安装的是旧版安装包,接口未启动(找不到配置文件)。要用这条路径,必须先重新打包安装。
作业规范
1. 先读正文再动手:text 拿到页面结构,再决定点哪里;
2. 一次只做一个动作:open → text → 判断 → click/fill → text 复核;
3. 结论要带证据:把关键数字、标题、时间写进结论,不要只说"看过了";
4. 截图存档:涉及金额、审批、后台数据的,必须留 shot;
5. 不做:绕过验证码、批量注册、爬取需授权数据、伪造指纹。
验收清单
- [ ]
open返回的title与目标页面一致 - [ ]
text拿到的正文长度 > 0,且包含关键信息 - [ ] 点击/填表后,用
text或--js-file回读确认状态真的变了 - [ ] 需要留证时,
shot产出文件且能被打开 - [ ] 结论里写清:页面、时间、关键数字、判断依据
- [ ] 登录态站点:确认 profile 目录复用成功(不需要重新登录)