---
url: https://docs.ogmabox.com/de/reference/httpql.md
description: >-
  Filtern Sie Ogmas HTTP-Verlauf, WebSocket-Verkehr, Automate-Ergebnisse und
  verwandte Ansichten mit der Abfragesyntax von HTTPQL und StreamQL.
---

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

Ogma verwendet eine Teilmenge einer Caido-kompatiblen Abfragesprache zum Filtern des HTTP-Verlaufs, des WebSocket-Verkehrs, der Automate-Ergebnisse und verwandter Ansichten.

## Syntax {#syntax}

Abfragen bestehen aus Klauseln, die mit `AND` und `OR` verbunden werden.

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

Klammern gruppieren Ausdrücke:

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

Kommentare werden unterstützt:

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

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

## Operatoren {#operators}

| Operator | Bedeutung |
| --- | --- |
| `:` | Gleichheit oder Standardabgleich, abhängig vom Feldtyp |
| `.eq:` | Ist gleich |
| `.ne:` | Ist ungleich |
| `.cont:` | Enthält, ohne Beachtung der Groß-/Kleinschreibung |
| `.ncont:` | Enthält nicht, ohne Beachtung der Groß-/Kleinschreibung |
| `.cs.cont:` | Enthält, unter Beachtung der Groß-/Kleinschreibung |
| `.cs.ncont:` | Enthält nicht, unter Beachtung der Groß-/Kleinschreibung |
| `.like:` | Musterabgleich nach SQL-Art |
| `.nlike:` | Negativer Musterabgleich nach SQL-Art |
| `.regex:` | Abgleich mit einem regulären Ausdruck |
| `.nregex:` | Negativer Abgleich mit einem regulären Ausdruck |
| `.lt:` | Kleiner als |
| `.lte:` | Kleiner oder gleich |
| `.gt:` | Größer als |
| `.gte:` | Größer oder gleich |
| `.exists` | Header vorhanden; verwenden Sie `req.header["Name"].value.exists` oder die entsprechende Variante für Antworten |

## HTTP-Beispiele {#http-examples}

API-Verkehr finden:

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

Serverfehler finden:

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

Große Antworten finden:

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

JSON-Antworten finden:

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

Anfragen mit Cookies finden:

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

```

Durch Abfangen (Intercept) oder Suchen & Ersetzen (Match & Replace) veränderten Verkehr finden:

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

Vermutliche Administrationspfade finden:

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

Replay- oder Automate-Verkehr finden:

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

## Stream-Beispiele {#stream-examples}

StreamQL wendet denselben Abfragestil auf WebSocket- und Stream-Ansichten an.

WebSocket-Nachrichten mit einem Token-Feld finden:

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

Nachrichten vom Server an den Client finden:

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

JSON-ähnliche Nachrichten finden:

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

## Praktische gespeicherte Filter {#practical-saved-filters}

| Name | Abfrage |
| --- | --- |
| API-Fehler | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Authentifizierungsendpunkte | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| JSON-Verkehr | `resp.header["content-type"].value.cont:"json"` |
| Interessante Methoden | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Mögliche Geheimnisse | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Grenzen {#limits}

Damit Filter vorhersehbar bleiben, begrenzt Ogma die Komplexität von Abfragen:

* Maximale Verschachtelungstiefe von Ausdrücken: 16.
* Maximale Anzahl von Klauseln: 64.

Wenn eine Abfrage zu komplex wird, teilen Sie sie in gespeicherte Filter auf oder verwenden Sie die Suche für eine breitere Untersuchung.
