Una herramienta para convertir automáticamente MITMProxy captura a las especificaciones de OpenAPI 3.0. Esto significa que puede revertir automáticamente las API REST de ingeniería solo ejecutando las aplicaciones y capturando el tráfico.
? ¡NUEVO!
Se agregó soporte para el procesamiento Har exportado desde el navegador Devtools. Ver uso - HAR para más detalles.
Primero necesitarás Python3 y Pip3.
$ pip install mitmproxy2swagger
# ... or ...
$ pip3 install mitmproxy2swagger
# ... or ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger . Luego clone el repositorio y ejecute mitmproxy2swagger según los ejemplos a continuación.
Para crear una especificación inspeccionando el tráfico HTTP, deberá:
Capture el tráfico utilizando la herramienta MITMProxy. Personalmente recomiendo usar MitmWeb, que es una interfaz web incorporada a MITMProxy.
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...IMPORTANTE
Para configurar su cliente para usar el proxy expuesto por el proxy de MITM, consulte la documentación MITMProxy para obtener más información.
Guarde el tráfico en un archivo de flujo.
En Mitmweb, puede hacerlo usando el menú "Archivo" y seleccionando "Guardar":

Ejecute el primer pase de 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 >Tenga en cuenta que puede usar un esquema existente, en cuyo caso el esquema existente se extenderá con los nuevos datos. También puede ejecutarlo varias veces con diferentes capturas de flujo, los datos capturados se fusionarán de forma segura.
<api_prefix> es la URL base de la API que desea invertir en ingeniería. Deberá obtenerlo observando las solicitudes que se realizan en MITMProxy.
Por ejemplo, si una aplicación ha realizado solicitudes como estas:
https://api.example.com/v1/login
https://api.example.com/v1/users/2
https://api.example.com/v1/users/2/profile El prefijo probable es https://api.example.com/v1 .
Ejecutar el primer pase debería haber creado una sección en el archivo de esquema como este:
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 Debe editar el archivo de esquema con un editor de texto y eliminar el ignore: prefijo de las rutas que desea generar. También puede ajustar los parámetros que aparecen en las rutas.
Ejecute el segundo pase de 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]Ejecute el comando por segunda vez (con el mismo archivo de esquema). Recogerá las líneas editadas y generará descripciones de punto final.
Tenga en cuenta que MITMProxy2Swagger no sobrescribirá las descripciones de punto final existentes, si desea sobrescribirlas, puede eliminarlas antes de ejecutar el segundo pase.
Pasando --examples agregará datos de ejemplo a las solicitudes y respuestas. Tenga cuidado al usar esta opción, ya que puede agregar datos confidenciales (tokens, contraseñas, información personal, etc.) al esquema. Paso --headers agregará datos de encabezados a solicitudes y respuestas. Tenga cuidado al usar esta opción, ya que puede agregar datos confidenciales (tokens, contraseñas, información personal, etc.) al esquema.
Capture y exporta el tráfico desde el navegador Devtools.
En el navegador DevTools, vaya a la pestaña de red y haga clic en el botón "Exportar HAR".

Continúe de la misma manera que lo haría con el basurero MITMProxy. mitmproxy2swagger detectará automáticamente el archivo HAR y lo procesará.
Ver los ejemplos. Encontrará un esquema generado allí y un archivo HTML con la documentación generada (a través de redoc-cli).
Vea el archivo HTML generado aquí.
Este proyecto usa:
Para instalar las dependencias:
poetry installEjecutar los revestimientos:
pre-commit run --all-filesInstale ganchos previos al comercio:
pre-commit installEjecutar pruebas:
poetry run pytestEjecutar pruebas con cobertura:
poetry run pytest --cov=mitmproxy2swaggerMIT