fiddler作為一個抓包道理工具,接收從客戶端/H5發出的請求,再發給服務器,接收從服務器得到的響應,再發給客戶端/H5,過程如下圖
在工作中,我們經常會碰到這樣的問題:客戶端限制輸入100個字,超過100個就不讓輸入,但是后台有沒有限制這個字段的字數呢?當然我們也可以利用jmeter/postman來模擬請求,但是比較復雜,用fiddler抓包后直接改包,就可以,十分便捷。
改包的三種方式
1.全局斷點,Rules->Automatic Breakpoints->Before requests/After responses 可以打開全局斷點,點擊Disable可以關閉斷點
比如點擊Before requests,然后頁面打開www.baidu.com
fiddler的每個請求都處於等待狀態,同時底部的工具欄也亮了
查看該請求的Raw選項卡,修改請求,比如說添加參數a=1
修改完后可以點擊兩個按鈕
Break on Response ,相當於在服務器返回后繼續攔截,此時可以繼續改Raw下的內容,然后點擊 Run to completion,把內容返回給客戶端,該請求結束
Run to completion:不攔截服務器返回,直接返回給客戶端,該請求結束
2.bpu單個斷點
在命令區輸入 bpu www.baidu.com ,其實只要輸入請求的子字符串,匹配該字符串的請求就會被攔截,不支持正則表達式,因此這樣寫也可以 bpu baidu
現在再訪問 www.baidu.com,也是一樣的fiddler等待,底部高亮
之后的操作就和上面的一樣了
關閉攔截:上面選擇Disable就可以了,這里關閉在命令行輸入bpu就可以取消攔截
3.AutoResponder
這是fiddler的一個選項卡,可以提前設置響應的內容,不需要再請求過程中去修改
Enable Rule:打開該規則
Unmatched request passthrough:不匹配規則的請求就放行,不理他
請求一個百度首頁,然后把它拖到這個選項卡中
設置匹配規則,其中常用的有如下幾種:
1.匹配鏈接,我們拖進去會顯示為EXACT:xxx,我們可以改為要匹配的鏈接的子字符串,如baidu,當有鏈接包含baidu就會自動返回設定的值
2.URLWithBody 這里要匹配兩個url和body,所以一般都是用例匹配POST請求,比如 URLWithBody:baidu name,當遇到url中包含baidu,且body中有name的,就會自動返回設定的值
3.Header:Accept=html 當請求的Header中包含Accept=html,就會自動返回設定的值
返回值設置:可以把響應的值設置為404,503等,但是常用的是選擇一個本地文件
打開百度首頁,在請求中,我們會發現其中的logo圖片請求
把這個請求拖到AutoResponsder,在選擇一個本地圖片find a file,把上面的enable和unmatched都勾選上,點擊save
此時ctrl+F5刷新百度,注意不能用緩存,然后就變成這樣
如果是要在已存在的返回中修改呢?首先必須獲得一個返回,在raw中修改,保存,再把這個作為自動返回。
打開百度首頁,抓包,修改raw
改成閃電1111
將該請求保存save->response->entire response,保存名為entire
按照上面的步驟,把這個請求拖到AutoResponder,選擇find a file,選擇剛才的entire,
再次ctrl+F5刷新頁面。變成了閃電估分1111
總結:Before requests/After responses會對所有的請求都阻斷,bpu可以對指定的某一些阻斷,然后再自己去改,AutoResponder可以提前設置返回的值
打字太累了,如果覺得有幫助,不妨請作者喝杯可樂吧!