1. 程式人生 > 實用技巧 >[fiddler] 使用AutoResponder功能修改http響應

[fiddler] 使用AutoResponder功能修改http響應

Fiddler版本

v5.0.20204.45441 for .NET 4.6.1 64-bit AMD64

前言

fiddler使用bpafter可以手動更改請求的響應,可以用於修改各種介面的返回值,達到比P圖、更改html之類更好的修改(欺騙)效果。
但是手動修改總需要時間,如果發起請求的客戶端設定的timeout比較短就無法及時修改成功,比如Bilibili安卓端的首頁推薦視訊介面。
舉一個栗子:

中國大學MOOC

比如要求要用視訊錄下開啟課程到點選“我的學習時長”到彈窗顯示這整個流程,有兩門以上的課程都要展示。
雖然刷一下開啟就關也很快,但是總會有忘了時間過期的問題,比如其中的一個小測驗

測驗已經進入互評階段,無法提交作業

這裡的課時學習進度再也填不上了,這好嗎?這不好

這個問題無法用bpafter解決,因為錄視訊不可能把改響應的操作步驟錄進去

AutoResponder

看名字就知道,它會用提前預設好的模板去響應被匹配的請求,絲滑順暢!

開啟AutoResponder選項卡,開啟該功能,新增規則:↓

從下拉框中選擇 "URLWithBody"這個板子,它除了url外還匹配請求的body(比如POST請求同url卻不同body)

根據需要填寫匹配內容,請求的body可以開啟Inspectors選項卡的Raw子選項卡,空行下方的就是body部分↑

複製得本例介面的url為:

https://www.icourse163.org/mm-course/web/j/mocMemberLearnBean.getTermLearn.rpc?csrfKey=87e198e6a0f646c18bae46bdbd813195

因為擔心csrfKey可能會改變,於是使用了正則去匹配url部分↓
URLWithBody:regex:https://www\.icourse163\.org/mm-course/web/j/mocMemberLearnBean\.getTermLearn\.rpc\?csrfKey=\w+ regex:^.*termId=1461219447*$
ps: url與body部分的正則都不一定要,上述匹配可以簡單寫成:↓
URLWithBody:https://www.icourse163.org/mm-course/web/j/mocMemberLearnBean.getTermLearn.rpc?csrfKey=87e198e6a0f646c18bae46bdbd813195 termId=1461219447

然後可以先儲存原本的響應,在此基礎上進行修改

用文字編輯器開啟應類似於:

其中body部分的json正是“學習資料”,不難猜想,修改learnedCount為38即可完成所有視訊的觀看。將其修改後儲存

在AutoResponder的規則編輯器第二行選擇剛才修改過的響應檔案

如果把該檔案保存於fiddler安裝目錄的ResponseTemplates資料夾下即可直接在上方列表中找到

點選Save後規則就會出現於下方,打鉤表示啟用該規則

那麼現在可就可以重新點選“我的學習時長”來測試一下了

那這樣就成功了,挺好玩的

後記

修改了響應的body要注意 Content-Length 可能也要隨之修改,主要看字元個數,
比如 learnedTimeCount從26676改成56676沒問題,但是改成333326676會發現頁面沒有響應,控制檯也看不到報錯
這種情況將 Content-Length 加4(因為多了4個'3')即可