最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

移動(dòng)測試開發(fā)Mitmproxy用于測試抓包神器詳解

 更新時(shí)間:2022年06月21日 11:33:28   作者:opentest-oper@#  
這篇文章主要為大家介紹了python移動(dòng)測試開發(fā)Mitmproxy抓包神器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1.前言

在移動(dòng)商業(yè)廣告的測試的工作中,經(jīng)常會需要對廣告請求進(jìn)行捕獲和分析,常使用的有兩個(gè)測試工具:fiddler,Charles,這兩個(gè)工具都可以對廣告請求進(jìn)行抓包,斷點(diǎn)調(diào)試,請求替換,構(gòu)造請求等,但是這兩個(gè)工具都有一定的局限性。首先,fiddler 只能在 windows 上運(yùn)行,charles 雖然可以在 mac,windows 上運(yùn)行,但是收費(fèi)。其次,在商業(yè)廣告請求中經(jīng)常會對接口協(xié)議進(jìn)行加密處理,使用 fiddler 和 charles 就不容易解決了。最后,商業(yè)廣告測試中需要對廣告請求協(xié)議的各種字段進(jìn)行校驗(yàn),但業(yè)務(wù)涉及到多字段修改的情況下,再利用 fiddler 和 charles 逐一校驗(yàn)判斷顯然很浪費(fèi)時(shí)間。經(jīng)過調(diào)研和實(shí)際應(yīng)用,我們發(fā)現(xiàn) mitmproxy 這個(gè)工具非常靈活,它是基于 Python 開發(fā)的開源工具,提供了 Python API,可以通過載入自定義 python 腳本輕松控制請求和響應(yīng)。這是其它工具所不能做到的,通過自定義腳本進(jìn)行二次開發(fā),能夠解決商業(yè)廣告測試過程中所遇到的問題。

2.Mitmproxy 簡介

MITM(Man In The Middle Attack)中間人攻擊,這種攻擊模式是通過各種技術(shù)手段將受入侵者控制的一臺計(jì)算機(jī)虛擬放置在網(wǎng)絡(luò)連接中的兩臺通信計(jì)算機(jī)之間,這臺計(jì)算機(jī)就稱為 “中間人”。mitmproxy 就是用于 MITM 的 proxy,用于中間人攻擊的代理。首先會向正常的代理一樣轉(zhuǎn)發(fā)請求,保障服務(wù)端與客戶端的通信,其次,會適時(shí)的查、記錄其截獲的數(shù)據(jù),或篡改數(shù)據(jù),引發(fā)服務(wù)端或客戶端特定的行為。

mitmproxy 有兩個(gè)關(guān)聯(lián)組件。一個(gè)是 mitmdump,它是 mitmproxy 的命令行接口,利用它我們可以對接 Python 腳本,用 Python 實(shí)現(xiàn)監(jiān)聽后的處理邏輯。另一個(gè)是 mitmweb,它是一個(gè) Web 程序,通過它我們可以清楚觀察 mitmproxy 捕獲的請求。

3.Mitmproxy 工作原理

mitmproxy 有 5 種代理模式,主要包含:正向代理,透明代理,反向代理,上游代理,socks 代理,在實(shí)際使用中經(jīng)常用到正向代理,mitmproxy 作為正向代理是一個(gè)位于客戶端和原始服務(wù)器 (origin server) 之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向 mitmproxy 代理發(fā)送一個(gè)請求并指定目標(biāo) (原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端??蛻舳吮仨氁M(jìn)行一些特別的設(shè)置才能使用正向代理。

我們以 HTTPS 請求為例介紹一下 mitmproxy 作為正向代理抓包的過程:

①. 客戶端連接到 mitmproxy,并發(fā)出 HTTP 連接請求。

②. mitmproxy 響應(yīng)建立了一個(gè) 200 的連接

③. 客戶端認(rèn)為它正在與遠(yuǎn)程服務(wù)器通信,并啟動(dòng) SSL 連接。使用 SNI 來指定它連接到的主機(jī)名。

④. mitmproxy 使用客戶端指定的 SNI 主機(jī)名與服務(wù)端建立一個(gè) SSL/TLS 連接。

⑤. 服務(wù)器使用匹配的證書進(jìn)行響應(yīng),該證書包含生成攔截證書所需的 CN 和 SAN 值。

⑥. mitmproxy 生成攔截證書,并繼續(xù)跟客戶端 SSL/TLS 握手。

⑦. 客戶端通過已建立的 SSL/TLS 連接發(fā)送請求。

⑧. mitmproxy 通過步驟 ④ 中啟動(dòng)的 SSL/TLS 連接將請求傳遞到服務(wù)器。

4.實(shí)踐應(yīng)用

解決多字段校驗(yàn)效率問題:

商業(yè)廣告測試中有大量的重復(fù)性工作在打點(diǎn)校驗(yàn)上,為了節(jié)省測試時(shí)間和解決易漏測的問題,我們可以利用 mitmproxy 二次開發(fā),自定義業(yè)務(wù)相關(guān)的校驗(yàn)規(guī)則,然后通過捕獲請求對協(xié)議中的各個(gè)字段進(jìn)行自動(dòng)化校驗(yàn),這樣既可以提高測試效率,又避免了漏測問題。

以所測廣告業(yè)務(wù)為例,首先建立 addons.py 文件,addons 是個(gè)列表,每個(gè)元素是一個(gè)類實(shí)例,這些類,稱為一個(gè)個(gè) addon,這些類有若干方法,這些方法實(shí)現(xiàn)了某些 mitmproxy 提供的事件,mitmproxy 會在某個(gè)事件發(fā)生時(shí)調(diào)用對應(yīng)的方法。如下圖所示為 addons 文件內(nèi)容,其中 SemiNativeCSJAd 則為 addon。

SemiNativeCSJAd 類中實(shí)現(xiàn)了 mitmproxy 提供的 request 和 response 事件,當(dāng)觸發(fā)該事件的時(shí)候,就會調(diào)用對應(yīng)的方法。

其中將所有類型的廣告打點(diǎn)中的公共字段校驗(yàn)抽取成公共方法 semiNativeCSJfieldCheck 調(diào)用。如下圖所示:

通過以上方式,簡單且有效的解決了多個(gè)字段校驗(yàn)問題。

解決商業(yè)廣告中加解密問題:

商業(yè)廣告有不同的渲染形態(tài),例如:激勵(lì)視頻類,模板類,在實(shí)際測試過程中,需要測試人員 mock 不同的廣告進(jìn)行測試,不僅如此,還會遇到需要對廣告進(jìn)行加解密的情況,那么具體應(yīng)該怎么解決呢?以所測的廣告業(yè)務(wù)為例需要做以下幾個(gè)步驟:

①. mitmproxy 攔截客戶端發(fā)起的請求并獲取某字段

②. 利用 RSA 算法根據(jù)請求的某字段解密獲取到秘鑰

③. 利用 AES 算法和 ② 步驟的秘鑰,對本地廣告內(nèi)容進(jìn)行加密

④. mitmproxy 將加密的廣告返回給客戶端

如下圖是實(shí)現(xiàn)的代碼,此 mockMaxFile 函數(shù)還可以根據(jù)入?yún)魅氩煌瑥V告文件即可實(shí)現(xiàn)不同廣告的 mock。

5.總結(jié)

以上就是 mitmproxy 的簡單介紹和在商業(yè)廣告測試中的應(yīng)用,相比傳統(tǒng)的抓包工具,mitmproxy 可以通過載入自定義 python 腳本輕松實(shí)現(xiàn)各種定制化需求,提升測試效率和質(zhì)量,不愧為 “抓包神器”。

更多關(guān)于移動(dòng)測試Mitmproxy抓包的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python新手練習(xí)實(shí)例之萬年歷

    python新手練習(xí)實(shí)例之萬年歷

    最近進(jìn)行python基礎(chǔ)培訓(xùn),課下作業(yè)制作萬年歷,之前沒做過,感覺里面還是有很多需要學(xué)的,下面這篇文章主要給大家介紹了關(guān)于python新手練習(xí)實(shí)例之萬年歷的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 深入分析在Python模塊頂層運(yùn)行的代碼引起的一個(gè)Bug

    深入分析在Python模塊頂層運(yùn)行的代碼引起的一個(gè)Bug

    幾個(gè)星期前, 我的同事跑過來, 說發(fā)現(xiàn)一個(gè)奇怪的Bug: 在使用Python的subprocess運(yùn)行子進(jìn)程時(shí), 當(dāng)子進(jìn)程運(yùn)行失敗時(shí)居然沒有拋出錯(cuò)誤!
    2014-07-07
  • Python多線程多進(jìn)程實(shí)例對比解析

    Python多線程多進(jìn)程實(shí)例對比解析

    這篇文章主要介紹了Python多線程多進(jìn)程實(shí)例對比解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 15行Python代碼實(shí)現(xiàn)免費(fèi)發(fā)送手機(jī)短信推送消息功能

    15行Python代碼實(shí)現(xiàn)免費(fèi)發(fā)送手機(jī)短信推送消息功能

    這篇文章主要介紹了通過15行Python代碼實(shí)現(xiàn)免費(fèi)發(fā)送手機(jī)短信推送消息功能,通過實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python刪除過期log文件操作實(shí)例解析

    python刪除過期log文件操作實(shí)例解析

    這篇文章主要介紹了python刪除過期log文件,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python wordcloud庫安裝方法

    Python wordcloud庫安裝方法

    Wordcloud庫的基本使用非常簡單,只需要導(dǎo)入庫并調(diào)用WordCloud類即可,這篇文章主要介紹了Python wordcloud庫,需要的朋友可以參考下
    2024-01-01
  • 使用Python實(shí)現(xiàn)壓縮pptx的功能

    使用Python實(shí)現(xiàn)壓縮pptx的功能

    當(dāng)處理大型PPTX文件時(shí),其中包含許多高分辨率照片時(shí),文件大小可能會顯著增加,為了解決這個(gè)問題,我們可以使用Python編程語言和python-pptx庫來壓縮PPTX文件中的照片,下面我們就來看看具體操作吧
    2024-02-02
  • Python將PDF轉(zhuǎn)換為HTML的實(shí)現(xiàn)方法

    Python將PDF轉(zhuǎn)換為HTML的實(shí)現(xiàn)方法

    PDF文件是共享和分發(fā)文檔的常用選擇,但提取和再利用PDF文件中的內(nèi)容可能會非常麻煩,本文重點(diǎn)介紹如何在Python程序中將PDF轉(zhuǎn)換為HTML,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-03-03
  • Python自動(dòng)化之定位方法大殺器xpath

    Python自動(dòng)化之定位方法大殺器xpath

    selenium的幾種定位方法中,大殺器之一就是xpath方法,學(xué)會它,你將無所不能.本文就帶大家詳細(xì)了解一下這個(gè)大殺器,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • python實(shí)現(xiàn)用戶名密碼校驗(yàn)

    python實(shí)現(xiàn)用戶名密碼校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)用戶名密碼校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

腾冲县| 合肥市| 广南县| 衡南县| 太仆寺旗| 丽水市| 巴青县| 兴城市| 林芝县| 长治县| 泰和县| 登封市| 景洪市| 秦皇岛市| 虞城县| 龙川县| 澄迈县| 双柏县| 林州市| 临邑县| 松滋市| 安溪县| 闽侯县| 漯河市| 景泰县| 阜宁县| 澜沧| 大同县| 成都市| 固阳县| 定南县| 安图县| 葵青区| 安仁县| 赣州市| 陆河县| 乾安县| 长岛县| 静海县| 秦安县| 托里县|