---
url: https://docs.ogmabox.com/pt/reference/httpql.md
description: >-
  Filtre o histórico HTTP do Ogma, o tráfego WebSocket, os resultados de
  Automação e as visualizações relacionadas com a sintaxe de consultas HTTPQL e
  StreamQL.
---

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

O Ogma usa um subconjunto da linguagem de consultas compatível com Caido para filtrar o histórico HTTP, o tráfego WebSocket, os resultados de Automação e as visualizações relacionadas.

## Sintaxe {#syntax}

As consultas são compostas por cláusulas unidas por `AND` e `OR`.

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

Os parênteses agrupam expressões:

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

Há suporte a comentários:

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

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

## Operadores {#operators}

| Operador | Significado |
| --- | --- |
| `:` | Igualdade ou correspondência padrão, dependendo do tipo de campo |
| `.eq:` | Igual a |
| `.ne:` | Diferente de |
| `.cont:` | Contém, sem diferenciar maiúsculas e minúsculas |
| `.ncont:` | Não contém, sem diferenciar maiúsculas e minúsculas |
| `.cs.cont:` | Contém, diferenciando maiúsculas e minúsculas |
| `.cs.ncont:` | Não contém, diferenciando maiúsculas e minúsculas |
| `.like:` | Correspondência de padrão do tipo SQL |
| `.nlike:` | Ausência de correspondência de padrão do tipo SQL |
| `.regex:` | Correspondência de expressão regular |
| `.nregex:` | Ausência de correspondência de expressão regular |
| `.lt:` | Menor que |
| `.lte:` | Menor ou igual a |
| `.gt:` | Maior que |
| `.gte:` | Maior ou igual a |
| `.exists` | O cabeçalho existe; use `req.header["Name"].value.exists` ou o equivalente para a resposta |

## Exemplos HTTP {#http-examples}

Localize tráfego de API:

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

Localize erros do servidor:

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

Localize respostas grandes:

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

Localize respostas JSON:

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

Localize requisições com cookies:

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

```

Localize tráfego modificado por Interceptação ou Localizar e substituir:

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

Localize possíveis caminhos de administração:

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

Localize tráfego de reenvio ou automação:

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

## Exemplos de streaming {#stream-examples}

O StreamQL aplica o mesmo estilo de consulta às visualizações de WebSocket e de streaming.

Localize mensagens WebSocket que contenham um campo de token:

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

Localize mensagens do servidor para o cliente:

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

Localize mensagens com aparência de JSON:

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

## Filtros salvos práticos {#practical-saved-filters}

| Nome | Consulta |
| --- | --- |
| Erros de API | `req.path.cont:"/api/" AND resp.code.gte:400` |
| Endpoints de autenticação | `req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"` |
| Tráfego JSON | `resp.header["content-type"].value.cont:"json"` |
| Métodos de interesse | `req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE` |
| Possíveis segredos | `resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"` |

## Limites {#limits}

Para manter os filtros previsíveis, o Ogma limita a complexidade das consultas:

* Profundidade máxima de aninhamento de expressões: 16.
* Número máximo de cláusulas: 64.

Se uma consulta ficar complexa demais, divida-a em filtros salvos ou use Pesquisa para uma investigação mais ampla.
