萬能抓包工具 Fiddler

一、Fiddler 簡介

Fiddler 是一個使用 C# 編寫的 http 抓包工具。它使用靈活,功能強大,支持衆多的 http 調試任務,是 web、移動應用的開發調試利器。

我很早之前的一篇文章 Fiddler抓取數據,20行代碼賺500塊,湊巧幫那位朋友解決了他的需求。隔了這麼久又有人找我抓公衆號數據。今天就分享一下我是如何使用 Fiddler 工具的。

二、實戰

2.1 工具安裝

Fiddler下載地址 :https://www.telerik.com/fiddler
訪問鏈接,進入網站首頁,如下圖

點擊下載,然後會跳到一個問卷頁面,填寫信息可以下載了。雙擊下載好的安裝程序,點擊“下一步”就可安裝。

2.2 PC 端請求抓取

查看請求
打開 Fiddler 工具,顯示效果如下圖:

兩個設置

  1. 打開 fiddler,點擊工具菜單Tools->optins..->HTTPS 頁籤,修改如下內容:

    這裏主要勾選 Decrypt HTTPS traffic這個選項,並選擇 ...from all processes 即可。並點擊右側的 Actions,導出證書到桌面。

  2. 打開瀏覽器 Internet 選項->連接->局域網設置,彈出如下頁面,這裏主要添加一下本地代理的IP地址和端口。

    注:windows 好像不需要這一步設置。

過濾請求
選中 Fiddler 中一條記錄,右鍵 Filter Now,然後選擇 Hide 'xxx'即可進行過濾。

如下圖右鍵過濾的請求,就可以自動取消過濾。

2.3 手機客戶端請求抓取

fiddler 配置
打開 fiddler,點擊工具菜單Tools->optins..->Connections 頁籤,勾選 Allow remote computers to conect 即可,意思是允許接收來自遠程客戶端的連接。

手機配置

  1. 查看服務IP地址
    cmd 窗口輸入 ipconfig /all 查看網絡信息,獲取當前電腦的IP地址,如下圖:

  2. 安裝證書
    在手機瀏覽器訪問 192.168.1.105:8888,手機上下載 Fiddler 證書,如下圖:

    蘋果手機信任證書,設置->通用->描述文件中,選中證書,添加信任即可。

  3. wifi 配置代理
    打開手機 wifi 設置,進入配置代理,這裏主要添加 服務器端口這兩個信息,點擊保存即可。如下圖

    注意:

  • 確保手機和電腦是在同一個局域網,服務器即是運行 Fiddler 工具的那臺電腦的IP地址。
  • 端口是上面設置 Fiddler工具,Tools->optins..->Connections 頁籤中可看到,默認值爲8888

數據抓取
在手機上做任何操作,電腦端的 Fiddler都顯示對應操作的請求,如下圖:

2.4 Fiddler 自定義規則

上面哪些配置都是基礎,接下來纔是重頭戲。Fiddler的強大之處在於,它可以修改請求參數,響應數據,根據需要自定義規則。OnBeforeRequestOnBeforeResponse 最常用的兩個方法。點擊Fiddler 菜單 Rules->Customize Rules...就可以打開腳本工具了,這裏的腳本支持常用的 js 語法。

OnBeforeRequest

意思是在請求之前可以做的事情。這裏實現的功能是將網站請求頭信息寫入本地文件。代碼如下:

if (oSession.uriContains("mobile/wx/product/"))
  { 
    var fso;  
    var file;
    fileName = fileName + "_" + ucp;
    fileName = fileName.replace(/\*/g,"");
    var filePath="C:\\mntListen\\" + fileName  + ".txt";
    fso = new ActiveXObject("Scripting.FileSystemObject");
    file = fso.OpenTextFile(filePath,2 ,true, false);
    file.writeLine(" " + oSession.oRequest.headers);
    file.close();
 }

注:磁盤對應位置如果沒有文件路徑,需要提交手動創建。

OnBeforeResponse

意思是在報文響應前可以做的事情。這裏我的需求是對網站過濾,修改它的響應報文。

if (oSession.uriContains("mobile/wx/detail/v2"))        
{ 
    var body = oSession.GetResponseBodyAsString();
    body = body.replace(/INVALID/g,"VALID");
    body = body.replace(/title/g,"title1");
    body = body.replace(/name/g,"title");
    oSession.utilSetResponseBody(body);
    file.close();
}

上面的這段代碼的意思是,當響應 url 鏈接包含 mobile/wx/detail/v2,進行內容替換。

查看 Fiddler 手冊
打開 Fiddler 工具,右側有常用對象的使用方法,可快速查閱。

三、最後

花了差不多兩天時間,終於幫那位朋友解決了他的問題,還是挺有成就感的!中間也有想放棄的時候,最終和朋友的多次溝通,徹底理解需求後,才大功告成。最後我得出一個結論:在做項目開發時,首先需要理解客戶需求,才能針對需求尋找解決方案。如果你也在使用 Fiddler 工具的遇到問題,我們一起討論哈!

參考

  • fiddler抓包詳解 :https://www.jianshu.com/p/1c57d8d1ad99

不安分的猿人
孜孜不斷的技術分享!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章