搜索
搜索查询当前项目中捕获的 HTTP 流量,包括超出当前已加载 HTTP 历史记录行范围的记录。
打开搜索
点击左侧导航中的搜索。输入结构化条件和/或 HTTPQL 表达式,然后点击搜索或按 Enter。输入只会更改条件,不会执行新的搜索。使用分页查看其他结果。
HTTPQL 语法
HTTPQL 是用于 HTTP 流量的结构化查询语言。它通过带类型的运算符匹配请求和响应字段。
字段
| 字段 | 匹配内容 |
|---|---|
req.host | 请求主机名。 |
req.path | 请求路径。 |
req.method | HTTP 方法(GET、POST 等)。 |
req.body | 请求体内容。 |
resp.code | 响应状态码(整数)。 |
resp.len | 响应体长度,单位为字节(整数)。 |
resp.body | 响应体内容。 |
resp.header["Name"].value | 指定响应头的值。 |
req.header["Name"].value | 指定请求头的值。 |
req.has_finding | 请求至少附有一个安全发现时为 true。 |
req.tag | 应用于请求的标签字符串。 |
运算符
| 运算符 | 适用类型 | 含义 |
|---|---|---|
eq | 字符串、整数 | 精确匹配。 |
ne | 字符串、整数 | 不等于。 |
cont | 字符串 | 包含子字符串。 |
ncont | 字符串 | 不包含子字符串。 |
regex | 字符串 | 匹配正则表达式。 |
gt | 整数 | 大于。 |
gte | 整数 | 大于或等于。 |
lt | 整数 | 小于。 |
lte | 整数 | 小于或等于。 |
exists | 头部 | 头部存在。 |
组合表达式
使用 AND 和 OR 组合条件。括号控制优先级。使用 ne 或 ncont 等否定运算符排除匹配项。
text
(req.method.eq:POST OR req.method.eq:PUT) AND resp.code.gte:500查询示例
查找返回 500 范围错误的 POST 请求:
text
req.method.eq:POST AND resp.code.gte:500查找带有 Authorization 请求头的请求:
text
req.header["Authorization"].value.exists查找来自特定主机的大型响应:
text
req.host.eq:api.example.com AND resp.len.gt:100000查找标记为需要跟进的请求:
text
req.tag.eq:followup查找所有附有安全发现的请求:
text
req.has_finding.eq:true查找响应体包含已知错误字符串的请求:
text
resp.body.cont:"stack trace"已保存的搜索
使用 HTTPQL 输入旁的固定,保留常用查询以便快速复用。选择固定查询即可应用;不再需要时移除其标签。查询历史也有助于复用近期表达式。
搜索标签页允许你在本次访问期间比较独立查询。它们不是持久保存的搜索。需要可导出和导入的具名结构化预设时,使用筛选器页面。
检查结果
点击结果表中的任意行,在检查面板中打开请求和响应。该检查器与 HTTP 历史记录中的视图相同:可以切换原始和格式化视图、复制头部或消息体,并直接从此面板添加安全发现。
AI 辅助
配置 AI 服务商后,点击查询输入旁的 AI,用自然语言描述想要查找的内容。Ogma 会生成 HTTPQL 表达式。运行前请检查查询。
- “返回服务器错误的 POST 请求” >
req.method.eq:POST AND resp.code.gte:500 - “来自 API 子域、大小超过 50 KB 的响应” >
req.host.cont:api AND resp.len.gt:51200 - “附有安全发现的请求” >
req.has_finding.eq:true