若是要手機抓包的話,須要設置fiddler, 容許遠程設備鏈接 tools/fiddler options/connection/allow remote computers to connectjavascript
開啓/中止監控php
F12
start/stop
選擇會話html
ctrl + click
多選shift + click
選擇連續的會話ctrl + up/down
向上/向下選擇ctrl + i
反選會話 //焦點先定位到 session listP
選擇當前會話的父會話 //對前端而言,好比選擇一個js, 按P
,就會定位到html文件C
選擇子會話 //選擇html文件,按C
, 定位全部由該html發起的請求, 其實頗有用查找會話前端
ctrl + f
? keyword
, select image
, @targetHostnmae
, =304
會話對比
選擇兩個會話,點擊右鍵-compare(需安裝對比工具winMerge), 這頗有用(兩個請求,1個成功返回, 1個報錯或被重定向了,這時能夠對比兩個session)java
刪除會話api
delete
刪除選中會話shift + delete
刪除未選中會話shift + delete
就很方便了(固然也能夠先反選再delete)。ctrl + x
刪除全部會話cls/clear
刪除全部會話會話列表添加列跨域
cols add accept @request.Accept
shift
, 點擊 execute按鈕 , 會在請求發出前斷點,容許再次修改從左側拖一個session到autoresponder中,默認會自動建立規則 精確匹配(EXACT:the-url),響應爲該session的response(*200-SESSION-6) 若是什麼都不改,就是replay的效果;能夠在rule list中選擇該rule, 按enter
編輯響應內容, 很是實用的說瀏覽器
自動響應的規則定義cookie
hello.com
// 匹配url包含 hello.com 的*
// 匹配全部urlNOT: hello
// 匹配url不包含hello的EXACT: http://localhost/test.php?foo=BAR
//精確匹配 包括大小寫regex:(?inxs)http://localhost/\w+\.php
regex:.+
, regex:.+jpg
, regex:.+(gif|png|jpg)$
inxs
i
ignore case 忽略大小寫n
requires explicit capture groups 要求明確的捕獲組s
enables single-line syntax 單行x
enables comments after the #character 支持#後加註釋自動響應的內容session
http://targetUrl
重定向到目標url(原來的請求參數並沒有帶過去)*redir:http://targetUrl
*bpu
請求前斷點*bpafter
響應前斷點*delay: Xms
延遲發出請求*header: hi=hello
修改/新增請求頭*CORSPreflightAllow
返回容許跨域的header*reset
Reset the client connection*drop
close the client connection*exit
該規則什麼都不作,讓後續規則處理實例: 將正則規則捕獲到的參數,應用到目標url
rule: regex:youdao\.com(.\*) action: http://localhost/test.php$1
聚焦到quickExec box上: ctrl + alt + f
顯示fiddler, alt + q
光標定位到quickExec, 此時若是session list中有選中,ctrl + i
可將選中會話的url粘貼到命令行中.
? hello
搜索url包含 hello 的會話> 2000
查詢 content-length > 2kb的會話, 同 >2k
< 2000
=301
查詢 statusCode=301的會話=get
查詢 method=get的會話@localhost
查詢hostname=localhost的會話bold hello
若後續的session的url包含hello,則加粗顯示 很實用bold
不帶參數 則清除以前的設定bpafter api/get/user
在匹配的session響應前斷點bpafter
清除以前bpafter的斷點bps 302
若session的statusCode=302 則斷點 bps
清除斷點bpu hello
若請求的url包含hello,則斷點; bpu
清除斷點bpm post
若method爲post, 則請求前斷點; 同 bpv post
bpm
清除斷點cls or clear
清除session列表g or go
繼續執行斷點help
打開幫助網頁urlreplace findstr replacestr
在url中找到匹配字符串,則替換;彷佛不支持正則start
開始監聽http請求stop
中止監聽http請求select image
查詢content-type,匹配關鍵字則選中響應session, select html
select javascript
select ui-comments hello
select @Request.Accept html
select @Response.set-cookie domain
allbut html
同 keeponly html
只保留content-type匹配html的會話 實用quit
退出fiddler!dns www.hello.com
發起dns解析請求添加請求頭部
function OnBeforeRequest(oSession) { oSession.oRequest['x-hi'] = 'hello'; }
將請求重定向到其餘主機
function OnBeforeRequest(oSession) { if(oSession.HostnameIs('test.com')) { // test.com:90/foo/bar -> localhost:90/foo/bar oSession.hostname = 'localhost'; } if(oSession.host == 'foo.com:90') { oSession.host = 'bar.com:9012'; } }
將一個url重定向到另外的url
function OnBeforeRequest(oSession) { if(oSession.url == 'example.com/test.js') { oSession.url = 'localhost.com/mock-test.js'; } }
取消發送cookie
function OnBeforeRequest(oSession) { oSession.oRequest.headers.Remove('Cookie'); }
替換html文件的內容
function OnBeforeResponse(oSession) { if(oSession.HostnameIs('www.test.com') && oSession.oResponse.headers.ExistsAndContains('Content-type', 'text/html')) { oSession.utilDecodeResponse(); oSession.utilReplaceInResponse('<b>', '<u>'); } if(oSession.utilFindInResponse('hello-world', false) > -1) { oSession['ui-color'] = 'red'; } if(oSession.oResponse.headers.ExistsAndContains('Content-Type', 'text/html')) { oSession.utilDecodeResponse(); var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyByte); oBody.replace(/<div>.*?</div>/, ''); oSession.setResponseBody(oBody); } }
網速模擬
function OnBeforeRequest(oSession) { oSession['request-trickle-delay'] = 300; // delay 300ms to request oSession['response-trickle-delay'] = 500; // delay 500ms to response }
手機安裝fiddler證書 瀏覽器訪問 http://ipv4.fiddler:8888/, 而後下載證書