---
url: https://docs.ogmabox.com/vi/reference/httpql.md
description: >-
  Lọc lịch sử HTTP của Ogma, lưu lượng WebSocket, kết quả Automate và các chế độ
  xem liên quan bằng cú pháp truy vấn HTTPQL và StreamQL.
---

# HTTPQL và StreamQL {#httpql-and-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 {#syntax}

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ử {#operators}

| 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 |
| `.exists` | Header 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 {#http-examples}

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 {#stream-examples}

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 {#practical-saved-filters}

| Tên | Truy vấn |
| --- | --- |
| Lỗi API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Điểm cuối xác thực | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Lưu lượng JSON | `resp.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ăng | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Giới hạn {#limits}

Để 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.
