MITMPROXY 캡처를 자동으로 변환하는 도구를 OpenAPI 3.0 사양으로 자동 변환합니다. 즉, 앱을 실행하고 트래픽을 캡처하여 자동으로 리버스 엔지니어링 API를 리버스 엔지니어링 할 수 있습니다.
? 새로운!
브라우저 DevTools에서 내보낸 HAR 처리에 대한 지원이 추가되었습니다. 자세한 내용은 사용 -HAR을 참조하십시오.
먼저 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 도구를 사용하여 트래픽을 캡처하십시오. 나는 Mitmproxy에 내장 된 웹 인터페이스 인 Mitmweb을 개인적으로 사용하는 것이 좋습니다.
$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http:// * :9999
...중요한
MITM 프록시에서 노출 된 프록시를 사용하도록 클라이언트를 구성하려면 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> 는 리버스 엔지니어링하려는 API의 기본 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: prefix를 제거해야합니다. 경로에 나타나는 매개 변수를 조정할 수도 있습니다.
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 덤프와 같은 방식으로 계속하십시오. mitmproxy2swagger HAR 파일을 자동으로 감지하고 처리합니다.
예제를 참조하십시오. 생성 된 스키마와 생성 된 문서가있는 HTML 파일 (리드 옥 클리를 통해)을 찾을 수 있습니다.
여기에서 생성 된 HTML 파일을 참조하십시오.
이 프로젝트는 다음을 사용합니다.
의존성을 설치하려면 :
poetry install런 라이터 :
pre-commit run --all-files사전 커밋 후크 설치 :
pre-commit install실행 테스트 :
poetry run pytest적용 범위로 테스트 실행 :
poetry run pytest --cov=mitmproxy2swaggerMIT