記錄一下用<code>Fiddler</code>對<code>WebSocket</code>收發的資料進行抓包分析和篡改資料,隻找到這麼一個方法,能用就行吧。 時間:2019-3-29 環境: <code>win7</code> <code>+</code> <code>Fiddler 5.0</code>
<code>Fiddler</code>中輕按兩下<code>WebSocket Session</code>即可檢視此連接配接收發的資料。可惜此頁籤内沒有帶發送資料的功能(一個輸入框(HEX文本) + 一個按鈕),要是有就基本完美了。

如果需要抓取<code>https</code>、<code>wss</code>請求,需要在<code>Fiddler</code>菜單<code>Tools</code> <code>></code> <code>Options</code> <code>></code> <code>HTTPS</code> 中開啟<code>HTTPS</code>支援。在<code>Actions</code>菜單中,設定電腦系統信任<code>Fiddler</code>的根證書。
如果需要抓取手機中的資料,需要在<code>Tools</code> <code>></code> <code>Options</code> <code>></code> <code>Connections</code>中設定允許用戶端連接配接,然後在手機<code>wifi</code>連接配接中設定使用電腦的<code>ip</code>和<code>Fiddler監聽的端口</code>作為代理。
然後手機浏覽器通路電腦<code>ip</code> <code>+</code> <code>端口</code> 進入<code>Fiddler</code>頁面下載下傳根證書,并信任(安裝)此證書。
完成以上操作才有可能監控<code>https</code>和<code>wss</code>請求,大部分是能監控的。
在<code>Fiddler</code>界面中并未找到修改<code>WebSocket</code>資料的地方,搜尋也沒找到多少直接的資料資訊,不過寫怎麼列印<code>WebSocket</code>資料日志的倒蠻多(<code>Fiddler 4.5</code>開始已沒有這個必要了)。另外看到一篇<code>利用fiddler core api 攔截修改 websocket 資料</code>的。兩個綜合一下就大功告成了。
在<code>Fiddler</code>菜單<code>Rules</code> <code>></code> <code>Customize Rules</code>中實作<code>Handlers</code>類的<code>OnWebSocketMessage</code>方法,此方法可以得到<code>WebSocket</code>收發的資料,而且可以修改。另:<code>Fildder</code>主界面中<code>FildderScript</code>也可以直接修改腳本代碼。
<code>Fiddler</code>采用的<code>JScript.Net</code>文法,這個文法不熟?沒關系,我也不熟,但對<code>JavaScript</code>和<code>C#</code>任意一個熟就行了。
<code>Classic ASP</code> 使用者可能對<code>JScript</code>和它的好基友<code>VBScript</code>比較熟,這兩個除了寫<code>ASP</code>外,<code>Windows</code>上的<code>vbs</code> <code>js</code>腳本代碼也是主力使用方向。
簡單點,把<code>JScript</code>當做<code>IE 6</code>來寫就ojbk了,絕對的原味,反正下面的例子裡面<code>js</code>代碼居多。參考文章結尾的測試代碼,不要在意那些拼音或者縮寫的奇醜變量名。
測試完整代碼在文章結尾。
發送<code>echo</code>測試資料<code>test edit:ddd</code>,結果截圖:
Log中已列印我們的修改日志資訊,可以看到<code>echo</code>響應中完全包含了被修改後的發送資料,我特意用不同顔色标記了一下。
<code>Fiddler</code>自己的<code>WebSocket</code>記錄資訊,它記錄的為我們修改之後的。
沒找到方法,不知道怎麼用<code>Fiddler</code>來發送<code>WebSocket</code>資料,參考第一節中的遺憾。
隻找到這麼一個方法對<code>WebSocket</code>抓包分析和篡改資料,比較土,完.