انتقل إلى المحتوى

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:500
text
/* focus on login */
req.path.cont:"login"

المعاملات ​

المعاملالمعنى
:يساوي أو يطابق وفق السلوك الافتراضي، بحسب نوع الحقل
.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 ​

البحث عن حركة 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

أمثلة التدفقات ​

يطبّق StreamQL أسلوب الاستعلام نفسه على عروض WebSocket والتدفقات.

البحث عن رسائل WebSocket التي تحتوي على حقل رمز مميز:

text
ws.raw.cont:"token"

البحث عن الرسائل من الخادم إلى العميل:

text
ws.direction.eq:"To Client"

البحث عن الرسائل التي تشبه JSON:

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

مرشحات محفوظة عملية ​

الاسمالاستعلام
أخطاء APIreq.path.cont:"/api/" AND resp.code.gte:400
نقاط نهاية المصادقةreq.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session"
حركة JSONresp.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.

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

برنامج مملوك. جميع الحقوق محفوظة.