使用c#開發Fildder插件抓取解析websocket數據


最近有個需求,需要分析下websocket的數據,使用了chrome自帶的開發者工具,也嘗試了fiddler直接攔截,還嘗試了使用fiddler的Customize Rules。
本來Customize Rules已經可以滿足我的需求了,但是JScript .NET的語法實在用得我太難受了,開發效率極低。
還是拿出看門絕技c#!

其實使用c#編寫Fiddler的插件非常簡單,之前就做過一個攔截數據采集tiktok無水印視頻(就是有點累,需要手動到手機操作,效果還是很不錯)。

言歸正傳,打開vs新建一個dll類庫項目。
然后引用fiddler.exe,直接就是添加引用,然后瀏覽找到fiddler.exe的位置(我的是C:\Program Files\Fiddler\Fiddler.exe)。
如果你的插件帶窗體或者修改了fiddler的窗體,需要引用System.Windows.Forms。
再新建一個類實現IFiddlerExtension、IResponseInspector2、IWSMInspector接口,然后在AssignMessage函數里開始處理WebSocket數據,在OnLoad方法里面可以添加窗體顯示在fiddler內。

最后可以在項目屬性里面的生成事件里面加上:
這個是對所有用戶生效
copy "$(TargetPath)" "C:\Program Files\Fiddler\Scripts\$(TargetFilename)"
這個是對當前windows用戶生效
copy "$(TargetPath)" "%userprofile%\My Documents\Fiddler2\Scripts\$(TargetFilename)"

這樣每次生成都會自動復制到fiddler的腳本目錄,不過每次生成都要先關閉fiddler,否則會因為文件被占用而無法替換。

為了方便調試,可以直接把項目屬性>調試>啟動外部程序 ,然后選擇fiddler.exe。

踩坑記錄:
千萬不要直接使用WebSocketMessage的PayloadData屬性,讀出來的數據會有問題,一定記得要用PayloadAsBytes()方法。
實際開發中發現有的電腦無法進入AssignMessage方法,改用FiddlerApplication.OnWebSocketMessage。
如果發現你自定義的窗體沒有加載到fiddler里面,請實現IFiddlerExtension接口,在OnLoad方法里面添加窗體。

這里只是拋磚引玉,等我代碼寫完會上傳GitHub。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM