Přejít na obsah

HTTPQL a StreamQL ​

Ogma používá podmnožinu dotazovacího jazyka kompatibilního s Caido pro filtrování historie HTTP, provozu WebSocket, výsledků funkce Automatizace a souvisejících pohledů.

Syntaxe ​

Dotazy se skládají z podmínek spojených pomocí AND a OR.

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

Závorky seskupují výrazy:

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

Podporovány jsou i komentáře:

text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
text
/* focus on login */
req.path.cont:"login"

Operátory ​

OperátorVýznam
:Rovnost nebo výchozí shoda podle typu pole
.eq:Je rovno
.ne:Není rovno
.cont:Obsahuje, bez rozlišování velikosti písmen
.ncont:Neobsahuje, bez rozlišování velikosti písmen
.cs.cont:Obsahuje, s rozlišováním velikosti písmen
.cs.ncont:Neobsahuje, s rozlišováním velikosti písmen
.like:Shoda se vzorem ve stylu SQL
.nlike:Neshoda se vzorem ve stylu SQL
.regex:Shoda s regulárním výrazem
.nregex:Neshoda s regulárním výrazem
.lt:Menší než
.lte:Menší nebo rovno
.gt:Větší než
.gte:Větší nebo rovno
.existsHlavička existuje; použijte req.header["Name"].value.exists nebo ekvivalent pro odpověď

Příklady HTTP ​

Vyhledejte provoz API:

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

Vyhledejte chyby serveru:

text
resp.code.gte:500

Vyhledejte velké odpovědi:

text
resp.len.gt:100000

Vyhledejte odpovědi JSON:

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

Vyhledejte požadavky s cookies:

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

Vyhledejte provoz upravený funkcí Zachytávání nebo Vyhledat a nahradit:

text
req.modified.eq:true

Vyhledejte pravděpodobné cesty pro správu:

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

Vyhledejte provoz z funkce Opakované odesílání nebo Automatizace:

text
source:replay OR source:automate

Příklady pro streamy ​

StreamQL používá stejný styl dotazů pro pohledy WebSocket a streamů.

Vyhledejte zprávy WebSocket obsahující pole s tokenem:

text
ws.raw.cont:"token"

Vyhledejte zprávy ze serveru ke klientovi:

text
ws.direction.eq:"To Client"

Vyhledejte zprávy připomínající JSON:

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

Praktické uložené filtry ​

NázevDotaz
Chyby APIreq.path.cont:"/api/" AND resp.code.gte:400
Autentizační koncové bodyreq.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"
Provoz JSONresp.header["content-type"].value.cont:"json"
Zajímavé metodyreq.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE
Potenciální citlivé údajeresp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token"

Limity ​

Aby filtry fungovaly předvídatelně, Ogma omezuje složitost dotazů:

  • Maximální hloubka vnoření výrazů: 16.
  • Maximální počet podmínek: 64.

Pokud je dotaz příliš složitý, rozdělte jej do uložených filtrů nebo použijte Hledání pro širší průzkum.

Proprietární software. Všechna práva vyhrazena.