Инструмент для автоматического преобразования MITMProxy захватывает спецификации OpenAPI 3.0. Это означает, что вы можете автоматически реверс-инженерные API-интерфейсы, просто запустив приложения и захватывая трафик.
? НОВЫЙ!
Добавлена поддержка обработки 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 . Затем клонируйте репо и запустите 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 вы можете сделать это, используя меню «Файл» и выбрав «Сохранить»:

Запустите первый проход 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 API, который вы хотите, чтобы обратный инженер. Вам нужно будет получить его, наблюдая за запросами, которые выполняются в 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 installЗапустить Linters:
pre-commit run --all-filesУстановите крючки с предварительной коммерцией:
pre-commit installЗапустите тесты:
poetry run pytestЗапустите тесты с покрытием:
poetry run pytest --cov=mitmproxy2swaggerГрань