HTTPQL और StreamQL
Ogma HTTP इतिहास, WebSocket ट्रैफ़िक, स्वचालन परिणाम और संबंधित दृश्य फ़िल्टर करने के लिए Caido-संगत क्वेरी भाषा के एक उपसमुच्चय का उपयोग करता है।
सिंटैक्स
क्वेरी में 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-जैसा पैटर्न मिलान |
.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:100000JSON प्रतिक्रियाएँ खोजें:
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:"}"उपयोगी सहेजे गए फ़िल्टर
| नाम | क्वेरी |
|---|---|
| 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।
यदि क्वेरी बहुत जटिल हो जाए, तो उसे सहेजे गए फ़िल्टर में विभाजित करें या व्यापक जाँच के लिए खोजें का उपयोग करें।