---
url: https://docs.ogmabox.com/it/reference/httpql.md
description: >-
  Filtra la cronologia HTTP di Ogma, il traffico WebSocket, gli esiti di
  Automazione e le viste correlate con la sintassi di query HTTPQL e StreamQL.
---

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

Ogma usa un sottoinsieme del linguaggio di query compatibile con Caido per filtrare la cronologia HTTP, il traffico WebSocket, gli esiti di Automazione e le viste correlate.

## Sintassi {#syntax}

Le query sono composte da clausole unite da `AND` e `OR`.

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

Le parentesi raggruppano le espressioni:

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

Sono supportati i commenti:

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

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

## Operatori {#operators}

| Operatore | Significato |
| --- | --- |
| `:` | Uguaglianza o corrispondenza predefinita, a seconda del tipo di campo |
| `.eq:` | Uguale a |
| `.ne:` | Diverso da |
| `.cont:` | Contiene, senza distinguere maiuscole e minuscole |
| `.ncont:` | Non contiene, senza distinguere maiuscole e minuscole |
| `.cs.cont:` | Contiene, distinguendo maiuscole e minuscole |
| `.cs.ncont:` | Non contiene, distinguendo maiuscole e minuscole |
| `.like:` | Corrispondenza con un pattern di tipo SQL |
| `.nlike:` | Mancata corrispondenza con un pattern di tipo SQL |
| `.regex:` | Corrispondenza con un’espressione regolare |
| `.nregex:` | Mancata corrispondenza con un’espressione regolare |
| `.lt:` | Minore di |
| `.lte:` | Minore o uguale a |
| `.gt:` | Maggiore di |
| `.gte:` | Maggiore o uguale a |
| `.exists` | L’intestazione esiste; usa `req.header["Name"].value.exists` o l’equivalente per la risposta |

## Esempi HTTP {#http-examples}

Trova il traffico API:

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

Trova gli errori del server:

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

Trova le risposte di grandi dimensioni:

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

Trova le risposte JSON:

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

Trova le richieste con cookie:

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

```

Trova il traffico modificato da Intercettazione o Trova e sostituisci:

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

Trova i possibili percorsi di amministrazione:

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

Trova il traffico di Ripetizione o Automazione:

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

## Esempi di streaming {#stream-examples}

StreamQL applica lo stesso stile di query alle viste WebSocket e di streaming.

Trova i messaggi WebSocket che contengono un campo token:

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

Trova i messaggi dal server al client:

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

Trova i messaggi simili a JSON:

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

## Filtri salvati pratici {#practical-saved-filters}

| Nome | Query |
| --- | --- |
| Errori API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Endpoint di autenticazione | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Traffico JSON | `resp.header["content-type"].value.cont:"json"` |
| Metodi interessanti | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Potenziali segreti | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Limiti {#limits}

Per mantenere prevedibili i filtri, Ogma limita la complessità delle query:

* Profondità massima di annidamento delle espressioni: 16.
* Numero massimo di clausole: 64.

Se una query diventa troppo complessa, suddividila in filtri salvati o usa Ricerca per un’indagine più ampia.
