تقوم أداة لتحويل MITMProxy تلقائيًا إلى مواصفات OpenAPI 3.0. هذا يعني أنه يمكنك عكس APIs REST تلقائيًا عن طريق تشغيل التطبيقات والتقاط حركة المرور.
؟ جديد!
وأضاف الدعم لمعالجة HAR تم تصديره من DevTools المتصفح. شاهد الاستخدام - هار لمزيد من التفاصيل.
أولاً ستحتاج Python3 و PIP3.
$ pip install mitmproxy2swagger
# ... or ...
$ pip3 install mitmproxy2swagger
# ... or ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger . ثم استنساخ repo وقم بتشغيل mitmproxy2swagger حسب الأمثلة أدناه.
لإنشاء مواصفات عن طريق فحص حركة المرور HTTP ستحتاج إلى:
التقاط حركة المرور باستخدام أداة mitmproxy. أنا شخصياً أوصي باستخدام MITMWEB ، وهي واجهة ويب مدمجة في MITMProxy.
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...مهم
لتكوين عميلك لاستخدام الوكيل المكشوف بواسطة MITM Proxy ، يرجى الرجوع إلى وثائق MITMProxy لمزيد من المعلومات.
احفظ حركة المرور إلى ملف التدفق.
في MITMWEB ، يمكنك القيام بذلك باستخدام قائمة "File" وتحديد "حفظ":

قم بتشغيل أول تمريرة من mitmproxy2swagger:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix >يرجى ملاحظة أنه يمكنك استخدام مخطط موجود ، وفي هذه الحالة سيتم تمديد المخطط الحالي مع البيانات الجديدة. يمكنك أيضًا تشغيله عدة مرات مع التقاطات تدفق مختلفة ، وسيتم دمج البيانات التي تم التقاطها بأمان.
<api_prefix> هو عنوان URL الأساسي لواجهة برمجة التطبيقات التي ترغب في الهندسة العكسية. ستحتاج إلى الحصول عليها من خلال مراقبة الطلبات التي يتم تقديمها في Mitmproxy.
على سبيل المثال ، إذا كان التطبيق قد قدم طلبات مثل هذه:
https://api.example.com/v1/login
https://api.example.com/v1/users/2
https://api.example.com/v1/users/2/profile البادئة المحتملة هي https://api.example.com/v1 .
يجب أن يكون تشغيل الممر الأول قد أنشأ قسمًا في ملف المخطط مثل هذا:
x-path-templates :
# Remove the ignore: prefix to generate an endpoint with its URL
# Lines that are closer to the top take precedence, the matching is greedy
- ignore:/addresses
- ignore:/basket
- ignore:/basket/add
- ignore:/basket/checkouts
- ignore:/basket/coupons/attach/{id}
- ignore:/basket/coupons/attach/104754 يجب عليك تحرير ملف المخطط بمحرر نص وإزالة ignore: بادئة من المسارات التي ترغب في إنشائها. يمكنك أيضًا ضبط المعلمات التي تظهر في المسارات.
قم بتشغيل الممر الثاني من mitmproxy2swagger:
$ mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]
# ... or ...
$ docker run -it -v $PWD :/app mitmproxy2swagger mitmproxy2swagger -i < path_to_mitmptoxy_flow > -o < path_to_output_schema > -p < api_prefix > [--examples]قم بتشغيل الأمر مرة ثانية (مع نفس ملف المخطط). سوف يلتقط الخطوط المعدلة وإنشاء أوصاف نقطة النهاية.
يرجى ملاحظة أن mitmproxy2swagger لن يكتب أوصاف نقطة النهاية الحالية ، إذا كنت ترغب في الكتابة فوقها ، فيمكنك حذفها قبل تشغيل الممر الثاني.
تمرير --examples على سبيل المثال بيانات مثال على الطلبات والردود. احذر عند استخدام هذا الخيار ، لأنه قد يضيف بيانات حساسة (الرموز ، كلمات المرور ، المعلومات الشخصية وما إلى ذلك) إلى المخطط. سيقوم المتقدمون --headers بإضافة بيانات الرؤوس إلى الطلبات والاستجابات. احذر عند استخدام هذا الخيار ، لأنه قد يضيف بيانات حساسة (الرموز ، كلمات المرور ، المعلومات الشخصية وما إلى ذلك) إلى المخطط.
التقاط وتصدير حركة المرور من متصفح DevTools.
في DevTools المتصفح ، انتقل إلى علامة تبويب الشبكة وانقر فوق الزر "تصدير هار".

تابع بنفس الطريقة التي ستفعل بها مع تفريغ Mitmproxy. سيقوم mitmproxy2swagger باكتشاف ملف HAR تلقائيًا ومعالجته.
انظر الأمثلة. ستجد مخططًا تم إنشاؤه هناك وملف HTML مع الوثائق التي تم إنشاؤها (عبر REDOC-CLI).
انظر ملف HTML الذي تم إنشاؤه هنا.
يستخدم هذا المشروع:
لتثبيت التبعيات:
poetry installRun Binters:
pre-commit run --all-filesقم بتثبيت السنانير قبل الالتزام:
pre-commit installإجراء اختبارات:
poetry run pytestإجراء اختبارات مع التغطية:
poetry run pytest --cov=mitmproxy2swaggerمعهد ماساتشوستس للتكنولوجيا