您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“移動測試開發Mitmproxy工具怎么使用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“移動測試開發Mitmproxy工具怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
在移動商業廣告的測試的工作中,經常會需要對廣告請求進行捕獲和分析,常使用的有兩個測試工具:fiddler,Charles,這兩個工具都可以對廣告請求進行抓包,斷點調試,請求替換,構造請求等,但是這兩個工具都有一定的局限性。首先,fiddler 只能在 windows 上運行,charles 雖然可以在 mac,windows 上運行,但是收費。其次,在商業廣告請求中經常會對接口協議進行加密處理,使用 fiddler 和 charles 就不容易解決了。最后,商業廣告測試中需要對廣告請求協議的各種字段進行校驗,但業務涉及到多字段修改的情況下,再利用 fiddler 和 charles 逐一校驗判斷顯然很浪費時間。經過調研和實際應用,我們發現 mitmproxy 這個工具非常靈活,它是基于 Python 開發的開源工具,提供了 Python API,可以通過載入自定義 python 腳本輕松控制請求和響應。這是其它工具所不能做到的,通過自定義腳本進行二次開發,能夠解決商業廣告測試過程中所遇到的問題。
MITM(Man In The Middle Attack)中間人攻擊,這種攻擊模式是通過各種技術手段將受入侵者控制的一臺計算機虛擬放置在網絡連接中的兩臺通信計算機之間,這臺計算機就稱為 “中間人”。mitmproxy 就是用于 MITM 的 proxy,用于中間人攻擊的代理。首先會向正常的代理一樣轉發請求,保障服務端與客戶端的通信,其次,會適時的查、記錄其截獲的數據,或篡改數據,引發服務端或客戶端特定的行為。
mitmproxy 有兩個關聯組件。一個是 mitmdump,它是 mitmproxy 的命令行接口,利用它我們可以對接 Python 腳本,用 Python 實現監聽后的處理邏輯。另一個是 mitmweb,它是一個 Web 程序,通過它我們可以清楚觀察 mitmproxy 捕獲的請求。
mitmproxy 有 5 種代理模式,主要包含:正向代理,透明代理,反向代理,上游代理,socks 代理,在實際使用中經常用到正向代理,mitmproxy 作為正向代理是一個位于客戶端和原始服務器 (origin server) 之間的服務器,為了從原始服務器取得內容,客戶端向 mitmproxy 代理發送一個請求并指定目標 (原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
我們以 HTTPS 請求為例介紹一下 mitmproxy 作為正向代理抓包的過程:
①. 客戶端連接到 mitmproxy,并發出 HTTP 連接請求。
②. mitmproxy 響應建立了一個 200 的連接
③. 客戶端認為它正在與遠程服務器通信,并啟動 SSL 連接。使用 SNI 來指定它連接到的主機名。
④. mitmproxy 使用客戶端指定的 SNI 主機名與服務端建立一個 SSL/TLS 連接。
⑤. 服務器使用匹配的證書進行響應,該證書包含生成攔截證書所需的 CN 和 SAN 值。
⑥. mitmproxy 生成攔截證書,并繼續跟客戶端 SSL/TLS 握手。
⑦. 客戶端通過已建立的 SSL/TLS 連接發送請求。
⑧. mitmproxy 通過步驟 ④ 中啟動的 SSL/TLS 連接將請求傳遞到服務器。
解決多字段校驗效率問題:
商業廣告測試中有大量的重復性工作在打點校驗上,為了節省測試時間和解決易漏測的問題,我們可以利用 mitmproxy 二次開發,自定義業務相關的校驗規則,然后通過捕獲請求對協議中的各個字段進行自動化校驗,這樣既可以提高測試效率,又避免了漏測問題。
以所測廣告業務為例,首先建立 addons.py 文件,addons 是個列表,每個元素是一個類實例,這些類,稱為一個個 addon,這些類有若干方法,這些方法實現了某些 mitmproxy 提供的事件,mitmproxy 會在某個事件發生時調用對應的方法。如下圖所示為 addons 文件內容,其中 SemiNativeCSJAd 則為 addon。
SemiNativeCSJAd 類中實現了 mitmproxy 提供的 request 和 response 事件,當觸發該事件的時候,就會調用對應的方法。
其中將所有類型的廣告打點中的公共字段校驗抽取成公共方法 semiNativeCSJfieldCheck 調用。如下圖所示:
通過以上方式,簡單且有效的解決了多個字段校驗問題。
解決商業廣告中加解密問題:
商業廣告有不同的渲染形態,例如:激勵視頻類,模板類,在實際測試過程中,需要測試人員 mock 不同的廣告進行測試,不僅如此,還會遇到需要對廣告進行加解密的情況,那么具體應該怎么解決呢?以所測的廣告業務為例需要做以下幾個步驟:
①. mitmproxy 攔截客戶端發起的請求并獲取某字段
②. 利用 RSA 算法根據請求的某字段解密獲取到秘鑰
③. 利用 AES 算法和 ② 步驟的秘鑰,對本地廣告內容進行加密
④. mitmproxy 將加密的廣告返回給客戶端
如下圖是實現的代碼,此 mockMaxFile 函數還可以根據入參傳入不同廣告文件即可實現不同廣告的 mock。
讀到這里,這篇“移動測試開發Mitmproxy工具怎么使用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。