---
url: https://docs.ogmabox.com/he/reference/httpql.md
description: >-
  סינון היסטוריית HTTP, תעבורת WebSocket, תוצאות אוטומציה ותצוגות קשורות ב-Ogma
  באמצעות תחביר השאילתות של HTTPQL ו-StreamQL.
---

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

Ogma משתמש בתת-קבוצה של שפת שאילתות תואמת Caido לסינון היסטוריית HTTP, תעבורת WebSocket, תוצאות אוטומציה ותצוגות קשורות.

## תחביר {#syntax}

שאילתות מורכבות מתנאים המחוברים באמצעות `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:500
```

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

## אופרטורים {#operators}

| אופרטור | משמעות |
| --- | --- |
| `:` | שוויון או התאמת ברירת מחדל, בהתאם לסוג השדה |
| `.eq:` | שווה |
| `.ne:` | לא שווה |
| `.cont:` | מכיל, ללא הבחנה בין אותיות גדולות וקטנות |
| `.ncont:` | לא מכיל, ללא הבחנה בין אותיות גדולות וקטנות |
| `.cs.cont:` | מכיל, עם הבחנה בין אותיות גדולות וקטנות |
| `.cs.ncont:` | לא מכיל, עם הבחנה בין אותיות גדולות וקטנות |
| `.like:` | התאמת תבנית בסגנון SQL |
| `.nlike:` | אי-התאמה לתבנית בסגנון SQL |
| `.regex:` | התאמה לביטוי רגולרי |
| `.nregex:` | אי-התאמה לביטוי רגולרי |
| `.lt:` | קטן מ- |
| `.lte:` | קטן או שווה |
| `.gt:` | גדול מ- |
| `.gte:` | גדול או שווה |
| `.exists` | הכותרת קיימת; השתמשו ב-`req.header["Name"].value.exists` או במקבילה עבור התגובה |

## דוגמאות HTTP {#http-examples}

איתור תעבורת API:

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

איתור שגיאות שרת:

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

איתור תגובות גדולות:

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

איתור תגובות JSON:

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

איתור בקשות עם עוגיות:

```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
```

## דוגמאות זרמים {#stream-examples}

StreamQL מחיל את אותו סגנון שאילתות על תצוגות WebSocket וזרמים.

איתור הודעות WebSocket המכילות שדה אסימון:

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

איתור הודעות מהשרת ללקוח:

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

איתור הודעות דמויות JSON:

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

## מסננים שמורים שימושיים {#practical-saved-filters}

| שם | שאילתה |
| --- | --- |
| שגיאות 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"` |

## מגבלות {#limits}

כדי לשמור על התנהגות צפויה של המסננים, Ogma מגביל את מורכבות השאילתות:

* עומק מרבי של ביטויים מקוננים: 16.
* מספר תנאים מרבי: 64.

אם שאילתה נעשית מורכבת מדי, פצלו אותה למסננים שמורים או השתמשו בחיפוש לצורך חקירה רחבה יותר.
