Python addon Mimproxyにバインド
概要
シリーズの前半では、MimproxyがPythonコードと一緒に実行できるのが大きな魅力だと説明していました.今回はpythonを使用してCustom Addonを作成し、Mimproxyにバインドしてみました.
Pythonを使用してAddonコードを記述
テストのためにコードを作成しました.作成されたコードは、HTTP/Sのrequest pathが
/bizlog/v1/gateway/reports
と一致する場合、content_list
、content_list_data
の値がコンソールログに書き込まれる.# mitmproxy_test/main.py
import json
from mitmproxy import ctx
def byte_to_json(byte):
""" byte 응답을 json 형태로 변환 """
fix_byte_value = byte.replace(b"'", b'"')
convert_json = json.loads(fix_byte_value)
return convert_json
class LogCheck:
def __init__(self):
pass
def request(self, flow):
""" requset header의 path가 bizlog 일 때 컨텐트 출력 """
if flow.request.path == "/bizlog/v1/gateway/reports":
payload = flow.request.content # 바이트
convert_payload = byte_to_json(payload) # 배열
i = 0
while i < len(convert_payload):
a = json.loads(convert_payload[i])
content_list = ["screen_name", "event_type", "event_name"]
content_list_data = ["ref_url", "item_kind", "item_name", "item_id"]
for b in content_list:
if b in a:
ctx.log.info(" " + str(b) + " : " + a[b])
else:
pass
for c in content_list_data:
if c in a["data"]:
ctx.log.info(" " + str(c) + " : " + str(a["data"][c]))
else:
pass
i = i + 1
addons = [LogCheck()]
クリープ
連動は簡単です.mimporxy実行命令で
-s
オプションを使用してPythonコードパスを渡すだけです.# 파이썬 연동하여 실행
$ mitmproxy -s /Users/taekyeong.jung/PycharmProjects/mitmproxy_test/main.py --set block_global=false
検査結果
下に添付された画像から、Python Custom AddonでMimproxyコンソールで撮影したログがよく撮れていることがわかります.(Mimporxyに
:console.view.eventlog
と入力するとコンソールログが表示されます.)このように、MimproxyはPythonコードを使ってリクエストやレスポンスを勝手に変更する機能を超えて、さまざまな用途に使用できます.
Reference
この問題について(Python addon Mimproxyにバインド), 我々は、より多くの情報をここで見つけました https://velog.io/@tkjung/mitmproxy에-python-addon-연동テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol