1、應用場景
需要對設備進行監聽抓包,且設備需要通過代理ip與外部進行通信。
2、基本原理
受監聽設備通過mitmproxy代理,然后mitmproxy將設備的請求轉發到與外部交互的代理(下面稱為外層代理),從外部代理返回的響應也會經過mitmproxy再給到設備。相當於在設備與外部代理之間加上了一個mitmproxy代理進行監聽。
3、操作流程
1)將mitmproxy正常抓包所要求的環境配置好,如安裝mitmproxy到監聽設備,安裝證書到受監聽設備並使證書被信任等等。
2)建立操控mitmproxy轉發請求,處理響應的py文件。
import mitmproxy.http
from mitmproxy import ctx
class MitmProxy:
def __init__(self):
self.name = 'mitmproxy'
def request(self, flow):
"""
處理經過mitmproxy的請求
"""
address = ('100.10.10.10', 2002) # 這里輸入的是外層代理
if flow.live:
flow.live.change_upstream_proxy_server(address) # 這里將請求轉發到了外部代理
def response(self, flow):
"""
處理經過mitmproxy的響應
"""
request_url = flow.request.url
print(request_url)
addons = [
MitmProxy()
]
3)啟動
終端輸入如下命令:
mitmdump --mode upstream:http://100.10.10.10:2002/(即外層代理) -s 2)處建立腳本的路徑
補充:
1)如果想要用梯子作代理,那么梯子軟件啟用的本地端口就是外部代理的端口,ip是localhost;
2)如果需要經常性地變換與外部交互的ip,那么需要搭建隧道代理。