
☸अब तक का पहला निर्भरता-जागरूक GraphQL API परीक्षण उपकरण!
एकमात्र निर्भरता-जागरूक GraphQL API परीक्षण उपकरण!
GraphQLer एक अत्याधुनिक उपकरण है जिसे अनुकूलनशीलता पर ध्यान केंद्रित करके GraphQL API का गतिशील रूप से परीक्षण करने के लिए डिज़ाइन किया गया है। यह कई उन्नत सुविधाएँ प्रदान करता है जो परीक्षण प्रक्रिया को सुव्यवस्थित करती हैं और GraphQL API का मजबूत विश्लेषण सुनिश्चित करती हैं। GraphQLer बनाई गई वस्तुओं और संसाधनों का कुशलतापूर्वक प्रबंधन करता है, वस्तुओं, क्वेरी और म्यूटेशन पर निर्भरताओं की प्रभावी ढंग से पहचान करता है, और API की बाधाओं के आधार पर क्वेरी में त्रुटियों को गतिशील रूप से ठीक करता है। GraphQLer का उपयोग प्रोडक्शन-ग्रेड GraphQL API में कई बग खोजने के लिए किया गया है!

GraphQLer का उपयोग शुरू करने के लिए, स्थापना गाइड देखें।
❯ python3 main.py --help
usage: main.py [-h] [--compile] [--fuzz] [--run] --path PATH [--auth AUTH] --url URL
options:
-h, --help show this help message and exit
--compile runs on compile mode
--fuzz runs on fuzzing mode
--run run both the compiler and fuzzer (equivalent of running --compile then running --fuzz)
--path PATH directory location for saved files and files to be used from
--auth AUTH authentication token Example: 'Bearer arandompat-abcdefgh'
--url URL remote host URL
नीचे दिए गए वे चरण हैं जिनके द्वारा आप इस प्रोग्राम का उपयोग अपने GraphQL API का परीक्षण करने के लिए कर सकते हैं। उपयोग को 2 चरणों में विभाजित किया गया है: संकलन और फ़ज़िंग.
उपयोग में आसानी के लिए तीसरा मोड भी शामिल है, जिसे रन मोड कहा जाता है। यह मोड संकलन और फ़ज़िंग दोनों मोड को एक ही कमांड में संकलित करता है।
(.env) python main.py --compile --url <URL> --path <SAVE_PATH>
संकलन के बाद, आप संकलित परिणामों को <SAVE_PATH>/compiled में देख सकते हैं। इसके अतिरिक्त, निरीक्षण के लिए dependency_graph.png नामक एक ग्राफ़ उत्पन्न होगा। संकलित .yaml फ़ाइलों में किसी भी UNKNOWNS को मैन्युअल रूप से चिह्नित किया जा सकता है; हालाँकि, यदि चिह्नित नहीं किया गया है, तो फ़ज़र उन्हें फिर भी चलाएगा, लेकिन बिना निर्भरता श्रृंखला के।
(.env) python main.py --fuzz --url <URL> --path <SAVE_PATH>
फ़ज़िंग करते समय, GraphQL API से संबंधित सांख्यिकी और चल रहे अनुरोधों की संख्या कंसोल में लॉग की जाती है। कोई भी अनुरोध रिटर्न कोड <SAVE_PATH>/stats.txt में लिखे जाते हैं। फ़ज़िंग के दौरान सभी लॉग <SAVE_PATH>/logs/fuzzer.log में रखे जाते हैं। लॉग फ़ाइल आपको सटीक रूप से बताएगी कि कौन से अनुरोध किस एंडपॉइंट पर भेजे गए और प्रतिक्रिया क्या थी। इसका उपयोग आगे के परिणाम विश्लेषण के लिए किया जा सकता है।
संकलन मोड और फ़ज़ मोड दोनों चलाता है
(.env) python main.py --run --url <URL> --path <SAVE_PATH>
constants.py फ़ाइल में कुछ चर भी हैं जिन्हें संशोधित किया जा सकता है। ये GraphQLer में लागू विशिष्ट सुविधाओं के अनुरूप हैं, और इन्हें आपकी पसंद के अनुसार ट्यून किया जा सकता है।
| चर नाम | चर विवरण | चर प्रकार | डिफ़ॉल्ट |
|---|
| MAX_LEVENSHTEIN_THRESHOLD | वस्तुओं और वस्तु आईडी के बीच लेवेनश्टाइन दूरी | पूर्णांक | 20 |
| MAX_OBJECT_CYCLES | एक ही वस्तु को एक ही क्वेरी/म्यूटेशन में भौतिक रूप से प्रस्तुत करने की अधिकतम संख्या | पूर्णांक | 3 |
| MAX_OUTUPT_SELECTOR_DEPTH | क्वेरी/म्यूटेशन के आउटपुट का विस्तार करने की अधिकतम गहराई (जैसे अनंत रूप से पुनरावर्ती चयनकर्ताओं के मामले में) | पूर्णांक | 3 |
| USE_OBJECTS_BUCKET | भविष्य में उपयोग के लिए वस्तु आईडी संग्रहीत करना है या नहीं | बूलियन | सत्य |
| USE_DEPENDENCY_GRAPH | निर्भरता-जागरूक सुविधा का उपयोग करना है या नहीं | बूलियन | सत्य |
| MAX_FUZZING_ITERATIONS | किसी नोड पर चलाने के लिए फ़ज़िंग पेलोड की अधिकतम संख्या | पूर्णांक | 5 |
| MAX_TIME | चलाने का अधिकतम समय | पूर्णांक | 3600 |