---
url: https://docs.ogmabox.com/ar/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.

إذا أصبح الاستعلام معقدًا أكثر من اللازم، فقسّمه إلى مرشحات محفوظة أو استخدم البحث لإجراء تحقيق أوسع.
