HTTPQL と StreamQL
Ogma は、Caido と互換性のあるクエリ言語のサブセットを使用して、HTTP 履歴、WebSocket 通信、自動化の結果、関連ビューを絞り込みます。
構文
クエリは、AND と OR で結合した句で構成します。
text
req.host:example.com AND resp.code:200括弧で式をグループ化します:
text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400コメントも使用できます:
text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500text
/* focus on login */
req.path.cont:"login"演算子
| 演算子 | 意味 |
|---|---|
: | 等値比較または既定の照合。フィールドの型によって異なります |
.eq: | 等しい |
.ne: | 等しくない |
.cont: | 含む。大文字と小文字を区別しません |
.ncont: | 含まない。大文字と小文字を区別しません |
.cs.cont: | 含む。大文字と小文字を区別します |
.cs.ncont: | 含まない。大文字と小文字を区別します |
.like: | SQL の LIKE に似たパターン照合 |
.nlike: | SQL の LIKE に似たパターンに一致しない |
.regex: | 正規表現に一致する |
.nregex: | 正規表現に一致しない |
.lt: | より小さい |
.lte: | 以下 |
.gt: | より大きい |
.gte: | 以上 |
.exists | ヘッダーが存在する。req.header["Name"].value.exists または対応するレスポンスの形式を使用します |
HTTP の例
API 通信を検索:
text
req.path.cont:"/api/"サーバーエラーを検索:
text
resp.code.gte:500大きなレスポンスを検索:
text
resp.len.gt:100000JSON レスポンスを検索:
text
resp.header["content-type"].value.cont:"application/json"Cookie を含むリクエストを検索:
text
req.header["cookie"].value.existsインターセプトまたは照合・置換で変更された通信を検索:
text
req.modified.eq:true管理用と思われるパスを検索:
text
req.path.cont:"/admin" OR req.path.cont:"/manage"再送または自動化の通信を検索:
text
source:replay OR source:automateストリームの例
StreamQL は、同じクエリ形式を WebSocket とストリームのビューに適用します。
トークンフィールドを含む WebSocket メッセージを検索:
text
ws.raw.cont:"token"サーバーからクライアントへのメッセージを検索:
text
ws.direction.eq:"To Client"JSON に似たメッセージを検索:
text
ws.raw.cont:"{" AND ws.raw.cont:"}"保存用フィルターの実用例
| 名前 | クエリ |
|---|---|
| API エラー | req.path.cont:"/api/" AND resp.code.gte:400 |
| 認証エンドポイント | req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session" |
| JSON 通信 | resp.header["content-type"].value.cont:"json" |
| 注目するメソッド | req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE |
| 機密情報の候補 | resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token" |
制限
フィルターの動作を予測しやすくするため、Ogma はクエリの複雑さを制限しています:
- 式の最大ネスト深度:16。
- 句の最大数:64。
クエリが複雑になりすぎた場合は、保存済みフィルターに分割するか、検索を使ってより広範囲に調査してください。