---
url: https://docs.ogmabox.com/cs/reference/httpql.md
description: >-
  Filtrujte historii HTTP, provoz WebSocket, výsledky funkce Automatizace a
  související pohledy v Ogma pomocí syntaxe dotazů HTTPQL a StreamQL.
---

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

Ogma používá podmnožinu dotazovacího jazyka kompatibilního s Caido pro filtrování historie HTTP, provozu WebSocket, výsledků funkce Automatizace a souvisejících pohledů.

## Syntaxe {#syntax}

Dotazy se skládají z podmínek spojených pomocí `AND` a `OR`.

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

Závorky seskupují výrazy:

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

Podporovány jsou i komentáře:

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

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

## Operátory {#operators}

| Operátor | Význam |
| --- | --- |
| `:` | Rovnost nebo výchozí shoda podle typu pole |
| `.eq:` | Je rovno |
| `.ne:` | Není rovno |
| `.cont:` | Obsahuje, bez rozlišování velikosti písmen |
| `.ncont:` | Neobsahuje, bez rozlišování velikosti písmen |
| `.cs.cont:` | Obsahuje, s rozlišováním velikosti písmen |
| `.cs.ncont:` | Neobsahuje, s rozlišováním velikosti písmen |
| `.like:` | Shoda se vzorem ve stylu SQL |
| `.nlike:` | Neshoda se vzorem ve stylu SQL |
| `.regex:` | Shoda s regulárním výrazem |
| `.nregex:` | Neshoda s regulárním výrazem |
| `.lt:` | Menší než |
| `.lte:` | Menší nebo rovno |
| `.gt:` | Větší než |
| `.gte:` | Větší nebo rovno |
| `.exists` | Hlavička existuje; použijte `req.header["Name"].value.exists` nebo ekvivalent pro odpověď |

## Příklady HTTP {#http-examples}

Vyhledejte provoz API:

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

Vyhledejte chyby serveru:

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

Vyhledejte velké odpovědi:

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

Vyhledejte odpovědi JSON:

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

Vyhledejte požadavky s cookies:

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

```

Vyhledejte provoz upravený funkcí Zachytávání nebo Vyhledat a nahradit:

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

Vyhledejte pravděpodobné cesty pro správu:

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

Vyhledejte provoz z funkce Opakované odesílání nebo Automatizace:

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

## Příklady pro streamy {#stream-examples}

StreamQL používá stejný styl dotazů pro pohledy WebSocket a streamů.

Vyhledejte zprávy WebSocket obsahující pole s tokenem:

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

Vyhledejte zprávy ze serveru ke klientovi:

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

Vyhledejte zprávy připomínající JSON:

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

## Praktické uložené filtry {#practical-saved-filters}

| Název | Dotaz |
| --- | --- |
| Chyby API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Autentizační koncové body | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Provoz JSON | `resp.header["content-type"].value.cont:"json"` |
| Zajímavé metody | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Potenciální citlivé údaje | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Limity {#limits}

Aby filtry fungovaly předvídatelně, Ogma omezuje složitost dotazů:

* Maximální hloubka vnoření výrazů: 16.
* Maximální počet podmínek: 64.

Pokud je dotaz příliš složitý, rozdělte jej do uložených filtrů nebo použijte Hledání pro širší průzkum.
