इस प्रोजेक्ट के बारे में

mitmproxy2swagger एक कमांड-लाइन टूल है जो HTTP ट्रैफिक कैप्चर (mitmproxy फ्लो फाइलों या ब्राउज़र DevTools HAR एक्सपोर्ट्स से) को OpenAPI 3.0 (Swagger) स्पेसिफिकेशन में बदलता है। यह डेवलपर्स को मैन्युअल रूप से एंडपॉइंट्स और पैरामीटर्स की जांच किए बिना, केवल एप्लिकेशन चलाकर और उसके नेटवर्क अनुरोधों को लॉग करके REST APIs का त्वरित रिवर्स-इंजीनियरिंग करने में सक्षम बनाता है। ## मुख्य क्षमताएँ - **इनपुट प्रारूप**: mitmproxy फ्लो फाइलों (mitmweb/mitmproxy से `.mitm`) और HAR फाइलों (स्वतः पहचाना गया) को स्वीकार करता है। - **दो-चरणीय कार्यप्रवाह**: पहला चरण सभी खोजे गए पथों के साथ एक टेम्पलेट उत्पन्न करता है; उपयोगकर्ता टेम्पलेट को संपादित करके चुनते हैं कि कौन से एंडपॉइंट शामिल करने हैं और पथ पैरामीटर समायोजित करते हैं (जैसे, डायनामिक आईडी को `{id}` प्लेसहोल्डर से बदलना)। दूसरा चरण विस्तृत अनुरोध/प्रतिक्रिया स्कीमा भरता है, मौजूदा सामग्री को अधिलेखित किए बिना कई कैप्चर सत्रों से डेटा मिलाता है। - **विस्तार योग्य स्कीमा**: मौजूदा स्कीमा फ़ाइल में नया डेटा मर्ज कर सकता है, जिससे कैप्चर में वृद्धिशील सुधार संभव होता है। - **वैकल्पिक डेटा संवर्धन**: फ्लैग `--examples` और `--headers` नमूना पेलोड और हेडर जानकारी शामिल करते हैं (संभावित संवेदनशील डेटा के बारे में चेतावनी के साथ)। - **आउटपुट प्रारूप**: OpenAPI 3.0 के साथ संगत YAML फाइलें उत्पन्न करता है, जो Redoc जैसे दस्तावेज़ीकरण टूल के साथ उपयोग योग्य हैं। ## सामान्य उपयोग 1. HTTP ट्रैफिक कैप्चर करें (जैसे, mitmweb के साथ, फिर फ्लो फ़ाइल सहेजें)। 2. प्रारंभिक टेम्पलेट बनाने के लिए `mitmproxy2swagger -i flow.mitm -o schema.yaml -p https://api.example.com/v1` चलाएँ। 3. schema.yaml संपादित करें: वांछित पथों से `ignore:` उपसर्ग हटाएँ। 4. पूर्ण एंडपॉइंट परिभाषाएँ उत्पन्न करने के लिए कमांड फिर से चलाएँ। ## तकनीकी विवरण - Python में लिखा गया, pip के माध्यम से इंस्टॉल करने योग्य या Docker के माध्यम से चलाने योग्य। - PyPI और Arch Linux रिपॉजिटरी पर उपलब्ध। - विकास uv, prek (लिंटिंग), और pytest का उपयोग करता है; योगदान का स्वागत है। - MIT लाइसेंस। ## उदाहरण उपयोग मामला एक ऐप जो `https://api.example.com/v1/login`, `/users/2`, और `/users/2/profile` पर अनुरोध करता है, उसे देखते हुए, टूल `https://api.example.com/v1` को उपसर्ग के रूप में सुझाएगा, फिर उपयोगकर्ता को `/users/{id}` और `/users/{id}/profile` जैसे पथ टेम्पलेट परिभाषित करने में मार्गदर्शन करेगा। व्यावहारिक प्रदर्शन के लिए, शामिल `example_outputs/` निर्देशिका देखें जिसमें एक उत्पन्न स्कीमा और एक प्रस्तुत HTML दस्तावेज़ीकरण उदाहरण है।