自定义规则
自定义规则用于补内置规则没有覆盖到的站点,或在本地先验证一条新规则是否可靠。
表单填写
| 字段 | 必填 | 说明 |
|---|---|---|
| 技术名称 | 是 | 弹窗里显示的名字,比如 MyCMS |
| 分类 | 选一个内置分类(23 个)或自己输入新分类。默认「其他库」。Select 组件支持自由输入,分类列表里没有的也能写。 | |
| 类型说明 | 给自己看的注释,比如 企业 CMS、第三方支付。会显示在 evidence 前缀,可以为空。 | |
| 置信度 | 高 / 中 / 低,默认「中」 | |
| 匹配方式 | 关键词 / 正则表达式,默认「正则表达式」 | |
| 官网 / 仓库 URL | 必须 http:// 或 https://。填了之后弹窗里技术名可点击跳转 |
下方还有四个区域:
匹配范围:决定下面的 patterns / selectors / globals 去哪些数据源里匹配
- 页面 URL:当前网页地址
- 资源 URL:脚本 / 样式 / iframe 加载的资源
- DOM / 源码:页面 outerHTML
- 响应头:主文档 + API + iframe 的响应头
- 动态资源:MutationObserver 持续累积的资源
匹配规则(patterns):一行一条。关键词模式下是字面字符串包含;正则模式下是 JS 正则源(不带
/.../i包裹,i 标志由扩展自动加)CSS 选择器(selectors):一行一个 selector,比如
[data-v-app]、#__next。匹配范围必须包含「DOM / 源码」全局变量(globals):一行一个,比如
React、Vue.config、__NEXT_DATA__。命中即高置信度
添加 / 更新
- 添加规则(绿色主按钮):把当前表单存为新规则
- 更新当前规则:先在右下角列表点编辑某条规则进入"编辑模式",改完按这个保存
最后需要点页面右上角「保存设置」,规则才会写入 storage。
已添加规则列表
显示在页面底部,每条带:
- 标题:规则的技术名称
- 元信息:分类 · 类型 · 置信度 · 匹配方式 · N 条 patterns
- 操作:「编辑」「删除」两个按钮(删除按钮 hover 变红)
验证规则
每次添加 / 更新 / 保存设置时,会做以下校验:
- 必须有名字
- patterns / selectors / globals 至少填一个
- 匹配范围至少勾一项
- url 字段如填则必须 http(s)😕/
- patterns(正则模式下)每条都要能
new RegExp通过 - selectors 每条都要能
document.createDocumentFragment().querySelector通过 - globals 每条都要符合
MyCMS或google.maps这种点分隔变量名
校验失败会浮出红色提示气泡,列出最多 6 条问题。
例子:简单关键词
识别 ExampleCMS:
text
技术名称: ExampleCMS
分类: 网站程序
匹配方式: 关键词
匹配规则:
examplecms
X-Generator: ExampleCMS
匹配范围: [x] 页面 URL [x] 资源 URL [x] DOM / 源码 [x] 响应头例子:识别 WordPress 主题
text
技术名称: WordPress 主题: oceanwp
分类: 主题 / 模板
匹配方式: 关键词
匹配规则:
/wp-content/themes/oceanwp/
匹配范围: [x] 资源 URL [x] DOM / 源码例子:识别动态加载的支付 SDK
支付按钮点了之后才会请求脚本,所以勾「动态资源」:
text
技术名称: ExamplePay
分类: 支付系统
类型说明: 第三方支付
匹配方式: 关键词
匹配规则:
pay.example.com
examplepay-sdk
匹配范围: [x] 动态资源例子:用正则识别带版本号的库文件
text
技术名称: ExampleLib
分类: 前端库
匹配方式: 正则表达式
匹配规则:
examplelib-[0-9.]+\.min\.js
匹配范围: [x] 资源 URL [x] 动态资源降低误报
- 别用太通用的关键词,比如
appmainlogin,几乎所有网站都有 - 优先写完整域名
pay.example.com而不是pay - 优先写特殊路径
/wp-content/themes/oceanwp/而不是oceanwp - 不确定就把置信度设成「低」,弹窗里会显示灰色药丸提示这只是猜测
- 保存规则后一定要刷新目标网页再打开弹窗看效果,否则缓存还是旧的