منصوبے کے بارے میں

mitmproxy2swagger ایک کمانڈ لائن ٹول ہے جو HTTP ٹریفک کیپچرز (mitmproxy فلو فائلز یا براؤزر DevTools HAR ایکسپورٹس سے) کو OpenAPI 3.0 (Swagger) اسپیکیفیکیشنز میں تبدیل کرتا ہے۔ یہ ڈویلپرز کو صرف ایک ایپلیکیشن چلا کر اور اس کے نیٹ ورک ریکویسٹس کو لاگ کر کے REST APIs کو تیزی سے ریورس انجینئر کرنے کے قابل بناتا ہے، بجائے اینڈ پوائنٹس اور پیرامیٹرز کو دستی طور پر جانچنے کے۔ ## اہم صلاحیتیں - **ان پٹ فارمیٹس**: mitmproxy فلو فائلز (mitmweb/mitmproxy کے ذریعے `.mitm`) اور HAR فائلیں (خودکار طور پر پہچانی جاتی ہیں) قبول کرتا ہے۔ - **دو مرحلوں پر مشتمل ورک فلو**: پہلے مرحلے میں تمام دریافت شدہ پاتھس کے ساتھ ایک ٹیمپلیٹ تیار کیا جاتا ہے؛ صارفین ٹیمپلیٹ میں ترمیم کر کے منتخب کرتے ہیں کہ کون سے اینڈ پوائنٹس شامل کیے جائیں اور پاتھ پیرامیٹرز کو ایڈجسٹ کریں (مثلاً ڈائنامک IDs کو `{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 دستاویز کی مثال موجود ہے۔