---
url: https://docs.ogmabox.com/nl/reference/httpql.md
description: >-
  Filter de HTTP-geschiedenis, WebSocket-verkeer, resultaten van Automatiseren
  en gerelateerde weergaven van Ogma met de querysyntaxis van HTTPQL en
  StreamQL.
---

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

Ogma gebruikt een subset van een Caido-compatibele querytaal om de HTTP-geschiedenis, WebSocket-verkeer, resultaten van Automatiseren en gerelateerde weergaven te filteren.

## Syntaxis {#syntax}

Query's bestaan uit clausules die met `AND` en `OR` zijn verbonden.

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

Haakjes groeperen expressies:

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

Commentaar wordt ondersteund:

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

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

## Operatoren {#operators}

| Operator | Betekenis |
| --- | --- |
| `:` | Gelijk aan of standaardvergelijking, afhankelijk van het veldtype |
| `.eq:` | Gelijk aan |
| `.ne:` | Niet gelijk aan |
| `.cont:` | Bevat, niet hoofdlettergevoelig |
| `.ncont:` | Bevat niet, niet hoofdlettergevoelig |
| `.cs.cont:` | Bevat, hoofdlettergevoelig |
| `.cs.ncont:` | Bevat niet, hoofdlettergevoelig |
| `.like:` | Vergelijking met een SQL-achtig patroon |
| `.nlike:` | Negatieve vergelijking met een SQL-achtig patroon |
| `.regex:` | Vergelijking met een reguliere expressie |
| `.nregex:` | Negatieve vergelijking met een reguliere expressie |
| `.lt:` | Kleiner dan |
| `.lte:` | Kleiner dan of gelijk aan |
| `.gt:` | Groter dan |
| `.gte:` | Groter dan of gelijk aan |
| `.exists` | Header bestaat; gebruik `req.header["Name"].value.exists` of het equivalent voor de respons |

## HTTP-voorbeelden {#http-examples}

Zoek API-verkeer:

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

Zoek serverfouten:

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

Zoek grote responses:

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

Zoek JSON-responses:

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

Zoek verzoeken met cookies:

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

```

Zoek verkeer dat is gewijzigd door Interceptie of Zoeken en vervangen:

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

Zoek paden die waarschijnlijk voor beheer dienen:

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

Zoek verkeer uit Opnieuw versturen of Automatiseren:

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

## Streamvoorbeelden {#stream-examples}

StreamQL past dezelfde querystijl toe op WebSocket- en streamweergaven.

Zoek WebSocket-berichten die een tokenveld bevatten:

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

Zoek berichten van server naar client:

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

Zoek JSON-achtige berichten:

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

## Praktische opgeslagen filters {#practical-saved-filters}

| Naam | Query |
| --- | --- |
| API-fouten | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Authenticatie-eindpunten | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| JSON-verkeer | `resp.header["content-type"].value.cont:"json"` |
| Interessante methoden | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Mogelijke geheimen | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Limieten {#limits}

Om filters voorspelbaar te houden, beperkt Ogma de complexiteit van query's:

* Maximale nestingsdiepte van expressies: 16.
* Maximaal aantal clausules: 64.

Als een query te complex wordt, splits deze dan op in opgeslagen filters of gebruik Zoeken voor breder onderzoek.
