mitmproxy에서 iOS Simulator의 특정 URL에 대한 HTTP/HTTPS 응답 바디 변경
10023 단어 mitmproxyiOSSimulatoriOS
기본 설정
mitmproxy(version 0.17.)를 설치합니다.
$ brew install mitmproxy
처음 시작할 때~/.mitmproxy/
다음에 CA 인증서를 생성합니다.$ mitmproxy # Ctrl-C で抜ける
Mac의 프록시 설정과 ON/OFF의 정형 처리된 스크립트를 mitmproxy-wrap
같은 이름으로 저장하고 실행합니다.#!/bin/sh
# save as mitmproxy-wrap
sudo networksetup -setwebproxy Wi-Fi localhost 8080
sudo networksetup -setsecurewebproxy Wi-Fi localhost 8080
sudo networksetup -setwebproxystate Wi-Fi on
sudo networksetup -setsecurewebproxystate Wi-Fi on
mitmproxy "$@"
sudo networksetup -setwebproxystate Wi-Fi off
sudo networksetup -setsecurewebproxystate Wi-Fi off
iOS Simultor 인증서 설정
Xcode에서 iOS Simulator는 하나 이상의 장치(OS)를 미리 시작하고 종료합니다.
ADVTrustStore의
iosCertTrustManager.py
를 사용하여 Mitmproxy의 CA 인증서를 iOS Simulator의 각 장치에 설치합니다.$ ./iosCertTrustManager.py -a ~/.mitmproxy/mitmproxy-ca-cert.pem
subject= CN = mitmproxy, O = mitmproxy
Import certificate to iPhone 6 v10.0 [y/N] y
Importing to /Users/...(snip).../Library/Developer/CoreSimulator/Devices/...(snip).../data/Library/Keychains/TrustStore.sqlite3
Existing certificate replaced
...(snip)...
Mitmproxy로 HTTP 응답 덮어쓰기
스크립트 필터링 준비:
새 mitmproxy 시 (2.0.2로 동작 확인):
# Usage: -s "replace_response_body.py <url_prefix> <file>"
import argparse
class Replacer:
def __init__(self, url_prefix, file_name):
self.url_prefix, self.file_name = url_prefix, file_name
def response(self, flow):
flow.response.replace(self.url_prefix, self.file_name)
if flow.request.pretty_url.startswith(self.url_prefix):
with open(self.file_name, "r") as file:
flow.response.text = file.read()
def start():
parser = argparse.ArgumentParser()
parser.add_argument("url_prefix", type=str)
parser.add_argument("file_name", type=str)
args = parser.parse_args()
return Replacer(args.url_prefix, args.file_name)
이전 mitmproxy 시 (0.17 동작 확인):# Usage: -s "replace_response_body.py <url_prefix> <file>"
from mitmproxy.models import decoded
def start(context, argv):
if len(argv) != 3:
raise ValueError('Usage: -s "replace_response_body.py <url_prefix> <file>"')
context.url_prefix, context.file = argv[1], argv[2]
def response(context, flow):
if flow.request.pretty_url.startswith(context.url_prefix):
with decoded(flow.response):
with open(context.file, "r") as file:
flow.response.content = file.read()
결과를 바꿀 파일을 준비하려면 다음과 같이 하십시오.// save as sample.js
alert('hello mitmproxy');
다음은 https://www.google-analytics.com/analytics.js
에서 시작된 URL의 HTTPS 응답 바디의 샘플을 sample.js
로 다시 작성합니다.$ mitmproxy-wrap -s "replace_response_body.py https://www.google-analytics.com/analytics.js sample.js"
Sample은 iOS Simulator를 시작하여 Safari와 같은 브라우저에서 해당 URL에 대한 요청이 발생할 때 발생합니다.js를 반환하고 실행하면 다음 대화상자가 나타납니다.참조 페이지
Reference
이 문제에 관하여(mitmproxy에서 iOS Simulator의 특정 URL에 대한 HTTP/HTTPS 응답 바디 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikuo/items/c03e37bd5ef0c3ea8c10텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)