---
url: https://docs.ogmabox.com/pl/reference/httpql.md
description: >-
  Filtruj historię HTTP, ruch WebSocket, wyniki z sekcji Automatyzacja i
  powiązane widoki Ogma za pomocą składni zapytań HTTPQL i StreamQL.
---

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

Ogma korzysta z podzbioru języka zapytań zgodnego z Caido do filtrowania historii HTTP, ruchu WebSocket, wyników z sekcji Automatyzacja (Automate) i powiązanych widoków.

## Składnia {#syntax}

Zapytania składają się z warunków połączonych przez `AND` i `OR`.

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

Nawiasy grupują wyrażenia:

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

Obsługiwane są komentarze:

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

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

## Operatory {#operators}

| Operator | Znaczenie |
| --- | --- |
| `:` | Równość lub domyślne dopasowanie, zależnie od typu pola |
| `.eq:` | Równość |
| `.ne:` | Nierówność |
| `.cont:` | Zawiera, bez rozróżniania wielkości liter |
| `.ncont:` | Nie zawiera, bez rozróżniania wielkości liter |
| `.cs.cont:` | Zawiera, z rozróżnianiem wielkości liter |
| `.cs.ncont:` | Nie zawiera, z rozróżnianiem wielkości liter |
| `.like:` | Dopasowanie do wzorca w stylu SQL |
| `.nlike:` | Brak dopasowania do wzorca w stylu SQL |
| `.regex:` | Dopasowanie do wyrażenia regularnego |
| `.nregex:` | Brak dopasowania do wyrażenia regularnego |
| `.lt:` | Mniejsze niż |
| `.lte:` | Mniejsze lub równe |
| `.gt:` | Większe niż |
| `.gte:` | Większe lub równe |
| `.exists` | Nagłówek istnieje; użyj `req.header["Name"].value.exists` lub odpowiednika dla odpowiedzi |

## Przykłady HTTP {#http-examples}

Znajdź ruch API:

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

Znajdź błędy serwera:

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

Znajdź duże odpowiedzi:

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

Znajdź odpowiedzi JSON:

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

Znajdź żądania z ciasteczkami:

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

```

Znajdź ruch zmodyfikowany przez funkcje Przechwytywanie lub Dopasowanie i zamiana:

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

Znajdź ścieżki prawdopodobnie związane z administracją:

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

Znajdź ruch z sekcji Ponowne wysyłanie lub Automatyzacja:

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

## Przykłady dla strumieni {#stream-examples}

StreamQL stosuje ten sam styl zapytań do widoków WebSocket i strumieni.

Znajdź wiadomości WebSocket zawierające pole tokenu:

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

Znajdź wiadomości od serwera do klienta:

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

Znajdź wiadomości przypominające JSON:

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

## Przydatne zapisane filtry {#practical-saved-filters}

| Nazwa | Zapytanie |
| --- | --- |
| Błędy API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Punkty końcowe uwierzytelniania | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Ruch JSON | `resp.header["content-type"].value.cont:"json"` |
| Interesujące metody | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Potencjalne sekrety | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Ograniczenia {#limits}

Aby działanie filtrów było przewidywalne, Ogma ogranicza złożoność zapytań:

* Maksymalna głębokość zagnieżdżenia wyrażeń: 16.
* Maksymalna liczba warunków: 64.

Jeśli zapytanie staje się zbyt złożone, podziel je na zapisane filtry lub skorzystaj z sekcji Wyszukiwanie, aby przeprowadzić szerszą analizę.
