最近研究了一下利用Mac上如何利用fiddler抓取https協(xié)議數(shù)據(jù),踩了很多地雷,所以想在此總結(jié)一下,希望其他小伙伴不要再踩我踩過的雷。
工作原理
Fiddler是用代理web服務(wù)器的形式工作的,代理端口是8888,代理端口可以在fiddler中設(shè)置。

一、mono的安裝
1. mono作用:簡單的說就是由于Fiddler是基于.Net技術(shù)開發(fā)的,沒辦法直接在Mac/Linux下使用,mono就是給Fiddler在Mac/Linux系統(tǒng)下提供.Net運行環(huán)境的。mono可以在這里下載。
2.安裝步驟:
下載完成后在Terminal里執(zhí)行以下命令
/Library/Frameworks/Mono.framework/Versions/<Mono Version>/bin/mozroots --import --sync
其中Mono Version是指mono的版本,現(xiàn)在是5.10.1版。此步是為了從Mozilla LXR上下載所有受信任的root證書,存于Mono的證書庫里。root證書能用于請求https地址。
接下來把mono加入到環(huán)境變量中,編輯.bash_profile文件:
sudo vi ~/.bash_profile
加入文本:
export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1
export PATH=$PATH:$MONO_HOME/bin
保存后重新打開Terminal,Mono環(huán)境已裝好。
二、Fiddler的安裝
從Fiddler官網(wǎng)https://www.telerik.com/download/fiddler下載,打開Terminal,進入到剛才Fiddler的保存路徑,執(zhí)行命令運行:
sudo mono --arch=32 Fiddler.exe
在Mac上要指明--arch=32 ,猜測可能是Fiddler運行在32位機器上的程序,原因不是很確定,有清楚的朋友歡迎指正。
三、代理配置
打開Fiddler后依次選中tools->options->Connections按下圖勾選選中:

iPhone手機中的代理設(shè)置:
1. 要想抓取手機端內(nèi)容首先要讓手機跟電腦鏈接到同一個網(wǎng)絡(luò)中
2. 點擊手機設(shè)置->Wi-Fi右側(cè)的藍色按鈕進入http代理設(shè)置:

在http代理處選擇手動模式,輸入ip和端口。ip即pc的局域網(wǎng)地址,端口為:8888

四、https證書的配置
? 由于https的ssl/tls層使用了非對稱的加密方式,利用公鑰加密私鑰解密,其中公鑰放在證書中,所以Fiddler要監(jiān)聽https協(xié)議的網(wǎng)絡(luò)請求需要配置證書。
? 1. Fiddler中相關(guān)設(shè)置:


在選擇好后Fiddler會安裝相關(guān)證書,點擊OK按鈕完成。
2. 在移動端證書的配置:
? ? 之前已經(jīng)說過了,要抓取移動端數(shù)據(jù),必須使手機和電腦連接到同一個網(wǎng)絡(luò),然后在Safari 打開http://<ip>:8888,點擊 FiddlerRoot certificate,進行證書安裝。其中IP就是電腦局域網(wǎng)IP
? 安裝的證書需要認(rèn)證,否則無法使用,ios設(shè)置證書認(rèn)證:設(shè)置-->通用--->關(guān)于本—>證書信任設(shè)置 。找到剛才安裝的證書點擊信任。
3.?在mac電腦中配置證書:
打開Fiddler在Fiddler工具欄中依次點擊Tools-->Options-->HTTPS-->Actions-->Export Root Certificate to Desktop導(dǎo)出證書到桌面上:

雙擊證書,會跳到鑰匙串中,即可倒入證書到Mac電腦證書管理中:

雙擊鑰匙串中倒入的證書設(shè)置信任證書及可以抓取瀏覽器中的https協(xié)議請求的數(shù)據(jù):

好了,整個在Mac上利用fiddler爬取https協(xié)議請求數(shù)據(jù)的過程就講完了,看了很多別人寫的相關(guān)博客,借鑒了寫的不錯的,再此申明一下。