เครื่องมือสำหรับการแปลง MitMproxy โดยอัตโนมัติเป็นข้อมูลจำเพาะ OpenAPI 3.0 ซึ่งหมายความว่าคุณสามารถย้อนกลับ REST APIs โดยอัตโนมัติโดยใช้แอพและจับปริมาณการใช้งาน
- ใหม่!
เพิ่มการสนับสนุนสำหรับการประมวลผล HAR ที่ส่งออกจากเบราว์เซอร์ Devtools ดูการใช้งาน - HAR สำหรับรายละเอียดเพิ่มเติม
ก่อนอื่นคุณจะต้องมี 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 คุณสามารถทำได้โดยใช้เมนู "ไฟล์" และเลือก "บันทึก":

เรียกใช้บัตรผ่านแรกของ 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 คุณควรแก้ไขไฟล์ schema ด้วยตัวแก้ไขข้อความและลบ 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 ไปที่แท็บเครือข่ายแล้วคลิกปุ่ม "ส่งออก HAR"

ดำเนินการต่อในลักษณะเดียวกับที่คุณทำกับ Mitmproxy Dump mitmproxy2swagger จะตรวจจับไฟล์ HAR และประมวลผลโดยอัตโนมัติ
ดูตัวอย่าง คุณจะพบสคีมาที่สร้างขึ้นที่นั่นและไฟล์ HTML พร้อมเอกสารประกอบที่สร้างขึ้น (ผ่าน REDOC-CLI)
ดูไฟล์ HTML ที่สร้างขึ้นที่นี่
โครงการนี้ใช้:
เพื่อติดตั้งการอ้างอิง:
poetry installเรียกใช้ผ้าลินิน:
pre-commit run --all-filesติดตั้งตะขอล่วงหน้า:
pre-commit installเรียกใช้การทดสอบ:
poetry run pytestเรียกใช้การทดสอบด้วยความครอบคลุม:
poetry run pytest --cov=mitmproxy2swaggerมิกซ์