---
url: https://docs.ogmabox.com/ko/reference/httpql.md
description: HTTPQL과 StreamQL 쿼리 구문으로 Ogma HTTP 기록, WebSocket 트래픽, 자동화 결과 및 관련 뷰를 필터링합니다.
---

# HTTPQL과 StreamQL {#httpql-and-streamql}

Ogma는 Caido와 호환되는 쿼리 언어의 일부 기능을 사용하여 HTTP 기록, WebSocket 트래픽, 자동화 결과 및 관련 뷰를 필터링합니다.

## 구문 {#syntax}

쿼리는 `AND`와 `OR`로 연결한 절로 구성합니다.

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

괄호로 표현식을 묶습니다:

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

주석을 지원합니다:

```text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
```

```text
/* focus on login */
req.path.cont:"login"
```

## 연산자 {#operators}

| 연산자 | 의미 |
| --- | --- |
| `:` | 필드 유형에 따라 같음 또는 기본 일치 |
| `.eq:` | 같음 |
| `.ne:` | 같지 않음 |
| `.cont:` | 포함, 대소문자 구분 안 함 |
| `.ncont:` | 포함하지 않음, 대소문자 구분 안 함 |
| `.cs.cont:` | 포함, 대소문자 구분 |
| `.cs.ncont:` | 포함하지 않음, 대소문자 구분 |
| `.like:` | SQL 방식의 패턴 일치 |
| `.nlike:` | SQL 방식의 패턴 불일치 |
| `.regex:` | 정규 표현식 일치 |
| `.nregex:` | 정규 표현식 불일치 |
| `.lt:` | 미만 |
| `.lte:` | 이하 |
| `.gt:` | 초과 |
| `.gte:` | 이상 |
| `.exists` | 헤더 존재 여부. `req.header["Name"].value.exists` 또는 이에 대응하는 응답 표현식 사용 |

## HTTP 예제 {#http-examples}

API 트래픽 찾기:

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

서버 오류 찾기:

```text
resp.code.gte:500
```

큰 응답 찾기:

```text
resp.len.gt:100000
```

JSON 응답 찾기:

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

쿠키가 있는 요청 찾기:

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

```

가로채기 또는 찾아 바꾸기로 수정한 트래픽 찾기:

```text
req.modified.eq:true
```

관리자 경로로 추정되는 경로 찾기:

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

재전송 또는 자동화 트래픽 찾기:

```text
source:replay OR source:automate
```

## 스트림 예제 {#stream-examples}

StreamQL은 WebSocket과 스트림 뷰에 같은 쿼리 방식을 적용합니다.

토큰 필드를 포함하는 WebSocket 메시지 찾기:

```text
ws.raw.cont:"token"
```

서버에서 클라이언트로 보내는 메시지 찾기:

```text
ws.direction.eq:"To Client"
```

JSON 형태의 메시지 찾기:

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

## 유용한 저장 필터 {#practical-saved-filters}

| 이름 | 쿼리 |
| --- | --- |
| API 오류 | `req.path.cont:"/api/" AND resp.code.gte:400` |
| 인증 엔드포인트 | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| JSON 트래픽 | `resp.header["content-type"].value.cont:"json"` |
| 주목할 메서드 | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| 잠재적 비밀 정보 | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## 제한 {#limits}

필터가 예측 가능한 방식으로 동작하도록 Ogma는 쿼리 복잡도를 제한합니다:

* 표현식의 최대 중첩 깊이: 16.
* 최대 절 개수: 64.

쿼리가 너무 복잡해지면 저장 필터로 나누거나 검색을 사용해 더 넓은 범위를 조사하세요.
