Chuyển đến nội dung

HTTPQL và StreamQL ​

Ogma dùng một tập con của ngôn ngữ truy vấn tương thích Caido để lọc lịch sử HTTP, lưu lượng WebSocket, kết quả Automate và các chế độ xem liên quan.

Cú pháp ​

Truy vấn gồm các mệnh đề được nối bằng AND và OR.

text
req.host:example.com AND resp.code:200

Dấu ngoặc đơn nhóm các biểu thức:

text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400

Có hỗ trợ chú thích:

text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
text
/* focus on login */
req.path.cont:"login"

Toán tử ​

Toán tửÝ nghĩa
:Bằng hoặc đối chiếu theo mặc định, tùy kiểu trường
.eq:Bằng
.ne:Không bằng
.cont:Chứa, không phân biệt chữ hoa và chữ thường
.ncont:Không chứa, không phân biệt chữ hoa và chữ thường
.cs.cont:Chứa, phân biệt chữ hoa và chữ thường
.cs.ncont:Không chứa, phân biệt chữ hoa và chữ thường
.like:Khớp mẫu theo kiểu SQL
.nlike:Không khớp mẫu theo kiểu SQL
.regex:Khớp biểu thức chính quy
.nregex:Không khớp biểu thức chính quy
.lt:Nhỏ hơn
.lte:Nhỏ hơn hoặc bằng
.gt:Lớn hơn
.gte:Lớn hơn hoặc bằng
.existsHeader tồn tại; dùng req.header["Name"].value.exists hoặc biểu thức tương đương cho phản hồi

Ví dụ HTTP ​

Tìm lưu lượng API:

text
req.path.cont:"/api/"

Tìm lỗi máy chủ:

text
resp.code.gte:500

Tìm phản hồi lớn:

text
resp.len.gt:100000

Tìm phản hồi JSON:

text
resp.header["content-type"].value.cont:"application/json"

Tìm yêu cầu có cookie:

text
req.header["cookie"].value.exists

Tìm lưu lượng đã được sửa đổi bởi Chặn bắt hoặc Tìm và thay thế:

text
req.modified.eq:true

Tìm đường dẫn có khả năng dành cho quản trị:

text
req.path.cont:"/admin" OR req.path.cont:"/manage"

Tìm lưu lượng Replay hoặc Automate:

text
source:replay OR source:automate

Ví dụ truyền luồng ​

StreamQL áp dụng cùng kiểu truy vấn cho các chế độ xem WebSocket và truyền luồng.

Tìm thông điệp WebSocket chứa trường token:

text
ws.raw.cont:"token"

Tìm thông điệp từ máy chủ đến máy khách:

text
ws.direction.eq:"To Client"

Tìm thông điệp có dạng JSON:

text
ws.raw.cont:"{" AND ws.raw.cont:"}"

Bộ lọc đã lưu hữu ích ​

TênTruy vấn
Lỗi APIreq.path.cont:"/api/" AND resp.code.gte:400
Điểm cuối xác thựcreq.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"
Lưu lượng JSONresp.header["content-type"].value.cont:"json"
Phương thức đáng chú ýreq.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE
Dữ liệu bí mật tiềm năngresp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"

Giới hạn ​

Để bộ lọc hoạt động có thể dự đoán được, Ogma giới hạn độ phức tạp của truy vấn:

  • Độ sâu lồng biểu thức tối đa: 16.
  • Số mệnh đề tối đa: 64.

Nếu truy vấn trở nên quá phức tạp, tách thành các bộ lọc đã lưu hoặc dùng Tìm kiếm để điều tra rộng hơn.

Phần mềm độc quyền. Bảo lưu mọi quyền.