develop-fingerprint · git:20260918.5a4ff65 · 2026-09-18 · sha256 b4a74efcaad7834e
develop-fingerprint git:20260918.5a4ff65A
Immutable. This exact content is served forever at /api/v1/blob/b4a74efcaad7834e.
---
name: develop-fingerprint
description: 当用户希望在平台侧编写、生成、完善、检查、保存、更新或删除指纹规则时使用。指纹由 NetworkProbe 采集证据,服务侧使用声明式 rule.match 判定。
---
# 开发平台侧指纹
所有指纹管理动作必须通过 `FingerprintTools` 完成,不直接读写 VFS 文件。
可用工具:`listFingerprints()`、`getFingerprintById(fingerprintId)`、`saveFingerprint(...)`、`deleteFingerprint(...)`。
## 工作流程
1. 查询全部或同 ID 的现有 HTTP 指纹。
2. 设计无副作用的 `rule.requests`。
3. 使用声明式 `rule.match` 表达命中条件,不生成 JavaScript。
4. 保存前确认 `userId`、名称、版本和覆盖风险。
5. 保存后报告 `fingerprintId`,并建议在授权目标上验证误报与漏报。
## 规则结构
```json
{
"name": "web-server",
"protocol": "http",
"tags": ["web", "server"],
"info": {"version": "1.0"},
"rule": {
"requests": [
{"method": "GET", "path": "/", "timeout": 3000, "maxBodyBytes": 8192}
],
"match": {
"any": [
{"field": "headers", "operator": "contains", "value": "nginx"},
{"field": "body", "operator": "contains", "value": "welcome to nginx"}
]
}
}
}
```
指纹文件只保存名称、协议、标签、识别规则及规则元信息。`info` 仅支持 `version`、`author`、`description`、`remark`,用于描述规则适用版本、作者、识别方法和备注。漏洞情报、CVE、风险等级、利用资料等应由独立流程管理,不写入指纹文件。
`rule.requests` 必须为非空数组。HTTP 请求支持 `method`、`path`/`uri`、`headers`、`body`、`timeout`、`charset`、`maxBodyBytes`。证据最多读取 8192 字节。
`rule.match` 支持:
- 组合:`all`、`any`、`not`
- 字段:`status`、`body`、`headers`、`raw`、`bodyLength`、`truncated`、`error`、`errorCode`
- 操作:`contains`、`notcontains`、`equals`、`in`、`exists`、`startswith`、`endswith`
- 多请求规则用 `request` 指定从 0 开始的请求序号
- 字符串默认忽略大小写;需要区分大小写时设置 `"ignoreCase": false`
优先组合两个以上稳定证据,避免只靠宽泛关键词。探测请求不得修改目标状态,除非用户明确授权且任务确有必要。