Alat untuk secara otomatis mengonversi mitmproxy menangkap ke spesifikasi OpenAPI 3.0. Ini berarti bahwa Anda dapat secara otomatis membalikkan API RESTICE dengan hanya menjalankan aplikasi dan menangkap lalu lintas.
? BARU!
Dukungan tambahan untuk memproses HAR yang diekspor dari browser Devtools. Lihat Penggunaan - Har untuk lebih jelasnya.
Pertama, Anda akan membutuhkan Python3 dan PIP3.
$ pip install mitmproxy2swagger
# ... or ...
$ pip3 install mitmproxy2swagger
# ... or ...
$ git clone [email protected]:alufers/mitmproxy2swagger.git
$ cd mitmproxy2swagger
$ docker build -t mitmproxy2swagger . Kemudian klon repo dan jalankan mitmproxy2swagger sesuai contoh di bawah ini.
Untuk membuat spesifikasi dengan memeriksa lalu lintas HTTP, Anda perlu:
Tangkap lalu lintas dengan menggunakan alat mitmproxy. Saya pribadi merekomendasikan menggunakan MitMweb, yang merupakan antarmuka web yang built-in untuk mitmproxy.
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...PENTING
Untuk mengonfigurasi klien Anda untuk menggunakan proxy yang diekspos oleh proxy MITM, silakan berkonsultasi dengan dokumentasi mitmproxy untuk informasi lebih lanjut.
Simpan lalu lintas ke file aliran.
Di MitMweb Anda dapat melakukan ini dengan menggunakan menu "File" dan memilih "Simpan":

Jalankan umpan pertama 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 >Harap dicatat bahwa Anda dapat menggunakan skema yang ada, dalam hal ini skema yang ada akan diperluas dengan data baru. Anda juga dapat menjalankannya beberapa kali dengan penangkapan aliran yang berbeda, data yang ditangkap akan digabungkan dengan aman.
<api_prefix> adalah URL dasar dari API yang ingin Anda rekayasa balik. Anda perlu mendapatkannya dengan mengamati permintaan yang dibuat dalam mitmproxy.
Misalnya jika aplikasi telah membuat permintaan seperti ini:
https://api.example.com/v1/login
https://api.example.com/v1/users/2
https://api.example.com/v1/users/2/profile Awalan yang mungkin adalah https://api.example.com/v1 .
Menjalankan pass pertama seharusnya membuat bagian dalam file skema seperti ini:
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 Anda harus mengedit file skema dengan editor teks dan menghapus ignore: awalan dari jalur yang ingin Anda hasilkan. Anda juga dapat menyesuaikan parameter yang muncul di jalur.
Jalankan lulus kedua 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]Jalankan perintah untuk kedua kalinya (dengan file skema yang sama). Ini akan mengambil baris yang diedit dan menghasilkan deskripsi titik akhir.
Harap dicatat bahwa Mitmproxy2swagger tidak akan menimpa deskripsi titik akhir yang ada, jika Anda ingin menimpanya, Anda dapat menghapusnya sebelum menjalankan operan kedua.
Meneruskan --examples akan menambahkan contoh data ke permintaan dan tanggapan. Berhati -hatilah saat menggunakan opsi ini, karena dapat menambahkan data sensitif (token, kata sandi, informasi pribadi, dll.) Ke skema. Melewati --headers akan menambahkan data header ke permintaan dan tanggapan. Berhati -hatilah saat menggunakan opsi ini, karena dapat menambahkan data sensitif (token, kata sandi, informasi pribadi, dll.) Ke skema.
Menangkap dan mengekspor lalu lintas dari browser devtools.
Di browser devtools, buka tab jaringan dan klik tombol "Ekspor Har".

Lanjutkan dengan cara yang sama seperti yang Anda lakukan dengan dump mitmproxy. mitmproxy2swagger akan secara otomatis mendeteksi file HAR dan memprosesnya.
Lihat contohnya. Anda akan menemukan skema yang dihasilkan di sana dan file HTML dengan dokumentasi yang dihasilkan (via Redoc-CLI).
Lihat file HTML yang dihasilkan di sini.
Proyek ini menggunakan:
Untuk menginstal dependensi:
poetry installJalankan Linters:
pre-commit run --all-filesPasang kait pra-komit:
pre-commit installJalankan tes:
poetry run pytestJalankan tes dengan cakupan:
poetry run pytest --cov=mitmproxy2swaggerMit