萬能抓包工具 Fiddler

1、Fiddler 簡介

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

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

2、實戰

2.1 工具安裝

Fiddler下載地址www.telerik.com/fiddler 訪問連接,進入網站首頁,以下圖 web

點擊下載,而後會跳到一個問卷頁面,填寫信息能夠下載了。雙擊下載好的安裝程序,點擊「下一步」就可安裝。windows

2.2 PC 端請求抓取

查看請求 打開 Fiddler 工具,顯示效果以下圖: 瀏覽器

兩個設置服務器

  1. 打開 fiddler,點擊工具菜單Tools->optins..->HTTPS 頁籤,修改以下內容: 這裏主要勾選 Decrypt HTTPS traffic這個選項,並選擇 ...from all processes 便可。並點擊右側的 Actions,導出證書到桌面。 markdown

  2. 打開瀏覽器 Internet 選項->鏈接->局域網設置,彈出以下頁面,這裏主要添加一下本地代理的IP地址和端口。 注:windows 好像不須要這一步設置。網絡

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

以下圖右鍵過濾的請求,就能夠自動取消過濾。 工具

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 工具,右側有經常使用對象的使用方法,可快速查閱。

3、最後

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

參考

不安分的猿人
孜孜不斷的技術分享!
相關文章
相關標籤/搜索