---
url: https://docs.ogmabox.com/es/reference/httpql.md
description: >-
  Filtra el historial HTTP de Ogma, el tráfico WebSocket, los resultados de
  Automatización y las vistas relacionadas con la sintaxis de consultas HTTPQL y
  StreamQL.
---

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

Ogma utiliza un subconjunto del lenguaje de consultas compatible con Caido para filtrar el historial HTTP, el tráfico WebSocket, los resultados de Automatización y las vistas relacionadas.

## Sintaxis {#syntax}

Las consultas se componen de cláusulas unidas mediante `AND` y `OR`.

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

Los paréntesis agrupan expresiones:

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

Se admiten comentarios:

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

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

## Operadores {#operators}

| Operador | Significado |
| --- | --- |
| `:` | Igualdad o coincidencia predeterminada, según el tipo de campo |
| `.eq:` | Igual a |
| `.ne:` | Distinto de |
| `.cont:` | Contiene, sin distinguir mayúsculas y minúsculas |
| `.ncont:` | No contiene, sin distinguir mayúsculas y minúsculas |
| `.cs.cont:` | Contiene, distinguiendo mayúsculas y minúsculas |
| `.cs.ncont:` | No contiene, distinguiendo mayúsculas y minúsculas |
| `.like:` | Coincidencia de patrón de tipo SQL |
| `.nlike:` | Ausencia de coincidencia de patrón de tipo SQL |
| `.regex:` | Coincidencia de expresión regular |
| `.nregex:` | Ausencia de coincidencia de expresión regular |
| `.lt:` | Menor que |
| `.lte:` | Menor o igual que |
| `.gt:` | Mayor que |
| `.gte:` | Mayor o igual que |
| `.exists` | La cabecera existe; usa `req.header["Name"].value.exists` o su equivalente para la respuesta |

## Ejemplos HTTP {#http-examples}

Buscar tráfico de API:

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

Buscar errores del servidor:

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

Buscar respuestas grandes:

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

Buscar respuestas JSON:

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

Buscar solicitudes con cookies:

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

```

Buscar tráfico modificado por Intercepción o Buscar y reemplazar:

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

Buscar posibles rutas de administración:

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

Buscar tráfico de repetición de solicitudes o automatización:

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

## Ejemplos de streaming {#stream-examples}

StreamQL aplica el mismo estilo de consultas a las vistas de WebSocket y de streaming.

Buscar mensajes WebSocket que contengan un campo de token:

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

Buscar mensajes del servidor al cliente:

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

Buscar mensajes con apariencia de JSON:

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

## Filtros guardados prácticos {#practical-saved-filters}

| Nombre | Consulta |
| --- | --- |
| Errores de API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Endpoints de autenticación | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Tráfico JSON | `resp.header["content-type"].value.cont:"json"` |
| Métodos de interés | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Posibles secretos | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Límites {#limits}

Para que los filtros sean predecibles, Ogma limita la complejidad de las consultas:

* Profundidad máxima de anidamiento de expresiones: 16.
* Número máximo de cláusulas: 64.

Si una consulta resulta demasiado compleja, divídela en filtros guardados o utiliza la búsqueda para realizar una investigación más amplia.
