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

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

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

1.前言

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

2.Mitmproxy 簡(jiǎn)介

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

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

3.Mitmproxy 工作原理

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

我們以 HTTPS 請(qǐng)求為例介紹一下 mitmproxy 作為正向代理抓包的過(guò)程:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5.總結(jié)

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

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了Python多線程多進(jìn)程實(shí)例對(duì)比解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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ī)短信推送消息功能

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

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

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

    Python wordcloud庫(kù)安裝方法

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

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

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

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

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

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

    selenium的幾種定位方法中,大殺器之一就是xpath方法,學(xué)會(huì)它,你將無(wú)所不能.本文就帶大家詳細(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

最新評(píng)論

商丘市| 瓮安县| 临潭县| 贡觉县| 江门市| 赫章县| 碌曲县| 大姚县| 成安县| 静海县| 沁水县| 平山县| 赫章县| 漳浦县| 姜堰市| 德惠市| 揭东县| 个旧市| 赤水市| 巴东县| 于都县| 和林格尔县| 时尚| 曲周县| 镇坪县| 巴塘县| 徐闻县| 龙泉市| 清原| 红河县| 富裕县| 星座| 思茅市| 兴安盟| 施秉县| 克山县| 张家界市| 南汇区| 资中县| 金寨县| 北辰区|