經(jīng)常有人說抓包抓包,很極客的感覺,其實就是利用工具分析網(wǎng)絡請求和響應而已。用工具,誰不會呢?對吧。恰好有個QA同學曾問我,怎么模擬出這種情況,怎么模擬出那種情況,等寫完就把博客鏈接發(fā)給她好了。 本文介紹的工具是 Fiddler,它能夠在本機和服務端之間建立一個代理,通過這個代理,可以對所有經(jīng)過的請求和響應進行攔截、修改、分析等。理論上說,只要你使用的軟件支持代理,都可以用 Fiddler 進行攔截,包括瀏覽器、命令行等。 類似的軟件有很多,比如 WireShark、HttpWatch 等,如果只是模擬發(fā)請求的話,Chrome 中有幾個插件也很不錯,比如 Postman、REST Client 等。 基本術(shù)語會話(Session)不同于服務端的 Session,這里僅僅指一次HTTP請求而已。會話面板在工具左側(cè),如下圖所示。 圖中顯示了三條請求,每一列的具體含義都很清晰,認識英文單詞就能懂了。 只是左邊 # 號下的圖標,幫各位找了一下,見下圖。 默認情況下,一旦開啟 Fiddler,就會走它的代理。有時候你想暫停這種行為,那請看到左下方有個狀態(tài)欄。 單擊一下左邊的 Capturing,就能停止攔截,想再開啟,就再單擊一下。 它的右邊是會話的來源,可以設置僅僅攔截瀏覽器發(fā)出的請求。 再右邊有三種選擇:1、在請求發(fā)出之前進行斷點;2、在響應回來的時候進行斷點;3、不設斷點。 審查(Inspector)隨便單擊一條會話,右側(cè)就會顯示詳細信息。 題外話,我覺得教程的意義在于,當你對某種新事物不熟悉的時候,幫助你了解一下而已。tutorial 和 reference 之間是有點區(qū)別的。 所以這里就挑一些足夠使用的 tab 來解釋一下。首先,這里有上下兩欄,上面是 Request,下面是 Response。 Request 中有三個比較厲害的:
Response 中常用也列三個吧:
QuickExec抱歉這么快就要講命令行,實在是因為它太有用了。它位于狀態(tài)欄的上方,有個 QuickExec 的提示,非常顯眼。 其實,當你看到它的時候,就已經(jīng)會了第一個命令
輸入
其他的高亮功能還有:=(匹配請求方法或狀態(tài)碼)、@(匹配host)、select(匹配MIME)。
設置斷點按照之前介紹的,在狀態(tài)欄啟用斷點(無論是請求斷點,還是響應斷點)后,所有的請求都會中斷。 事實上,一個網(wǎng)頁加載時,會觸發(fā)很多異步請求。甚至在加載完成后,也還會不停地發(fā)送異步請求,比如現(xiàn)在很流行的二維碼登錄頁面。攔截所有請求似乎顯得不太合適。 而在上一節(jié)其實留了斷點的命令行沒有介紹。斷點即 breakpoint,所有跟斷點相關的都是以 bp 為前綴。
用不帶參數(shù)的命令可以清除斷點,比如 url 的匹配方式是判斷“字符串是否包含”,比如 如果忘了這些命令,在命令行輸入 bp ,敲回車,就能看到提示了。bp is short for breakpoint,這個能記住嗎? 模擬返回值想要模擬返回值,首先要設置響應斷點。
當滿足條件的響應回來時,選中該會話,就可以看到如圖所示的面板。選擇 Raw 視圖(其他也可以,Raw 可以修改更多的內(nèi)容),然后可以清楚地看到,服務端返回的內(nèi)容是
把上面的 M 修改成 F,然后單擊“Run to Completion”,就能把修改后的返回值送還給瀏覽器了。 自動化呢?沒錯,人往往喜歡偷懶,如果每次要修改,豈不是很麻煩。
此時會彈出一個對話框,跟 Response 面板的布局一樣,在上面可以編輯返回值。 或者你直接把定義好的返回內(nèi)容保存成文件,在剛才那個下拉框中選擇該文件就行了。 模擬請求右側(cè)的 Composer 窗口可以模擬發(fā)送請求。 剛打開這個窗口的時候,應該是一片空白。你可以從左側(cè)會話列表拖一個會話過去,這樣就有預填的信息了,修改一下參數(shù),點“Execute”,piu,一條請求就發(fā)送出去了。 接著在會話列表就可以查看服務端的返回值。 小結(jié)其實 Fiddler 的官方文檔上已經(jīng)寫得很全了,我只是稍微結(jié)合了平時的使用經(jīng)驗,僅僅把常用的功能羅列一下,希望可以幫助各位更快上手。畢竟,磨刀不誤砍柴工。 |
|