玩轉(zhuǎn)Fiddler 第五節(jié) ?關(guān)于數(shù)據(jù)修改,你知道多少笋额?元暴!

?關(guān)于數(shù)據(jù)修改,你知道多少兄猩?茉盏!

?Fiddler 功能

大家都說(shuō)Fiddler工具很強(qiáng)大鉴未,那么Fiddler到底有哪些功能呢?我們用下面這幅圖就可以簡(jiǎn)單地概括總結(jié)一下:


圖片雖然不是很美觀鸠姨,但是將fiddler的功能總結(jié)得很是精辟歼狼,它高大上的內(nèi)涵足以支撐簡(jiǎn)陋的門(mén)面,厲害了享怀,老鐵!

言歸正傳趟咆,從這幅圖上我們可以很清晰的看出Fiddler是用來(lái)捕獲數(shù)據(jù)添瓷,并對(duì)數(shù)據(jù)進(jìn)行分析,甚至可以對(duì)數(shù)據(jù)進(jìn)行修改值纱。在平時(shí)的測(cè)試工作中用到最多的功能也是修改數(shù)據(jù)鳞贷,在我的博客中瀏覽量最高的也是關(guān)于如何修改數(shù)據(jù)的文章,所以就專門(mén)寫(xiě)這篇文章來(lái)總結(jié)一下修改數(shù)據(jù)的幾種方法虐唠,大家可以權(quán)衡一下利弊搀愧,根據(jù)實(shí)際情況來(lái)選擇合適的方法,提高自己的工作效率疆偿。

一咱筛、打斷點(diǎn)修改數(shù)據(jù)

(一)Request

打斷點(diǎn)修改Request的數(shù)據(jù),步驟如下:

1杆故、設(shè)置Rules->Automatic Breakpoints->Before Requests迅箩。


2、發(fā)起請(qǐng)求处铛,被Fiddler攔截饲趋。


3、雙擊被攔截的請(qǐng)求撤蟆,在Inspectors->右上方(右上方展示的是request的相關(guān)信息)->SyntaxView tab頁(yè)中直接修改數(shù)據(jù)奕塑,例子中我們將”country”: “CN” 修改為 “country”: “US”。在Inspectors其它類似的tab頁(yè)中也可以修改數(shù)據(jù)家肯,只是我比較習(xí)慣在SyntaxView 這個(gè)tab頁(yè)中修改龄砰。數(shù)據(jù)可以做任何的修改,當(dāng)然也可以整體替換這些請(qǐng)求的數(shù)據(jù)息楔。

4寝贡、修改之后,點(diǎn)擊綠色的Run to Completion 放行斷點(diǎn)值依。

5圃泡、斷點(diǎn)被放行之后,驗(yàn)證Request的參數(shù)是否修改成功愿险,如圖所示”country”: “US”颇蜡,說(shuō)明修改成功价说。


(二)Response

打斷點(diǎn)修改response數(shù)據(jù),步驟如下:

1风秤、設(shè)置Rules->Automatic Breakpoints->Before Responses鳖目。

2、發(fā)起請(qǐng)求缤弦,被Fiddler攔截领迈。

3、雙擊被攔截的請(qǐng)求碍沐,在Inspectors->右下方(右下方展示的是response相關(guān)的信息)->SyntaxView tab頁(yè)中直接修改數(shù)據(jù)狸捅,數(shù)據(jù)可以被任意修改,例子中我們把”adaction”:”install” 修改成”adaction”:”install—zwf”累提。


4尘喝、修改之后,放行斷點(diǎn)

5斋陪、斷點(diǎn)被放行之后朽褪,驗(yàn)證response的數(shù)據(jù)是否修改成功。如圖所示”adaction”:”install—zwf”无虚,說(shuō)明response的數(shù)據(jù)修改成功缔赠。


敲黑板知識(shí)點(diǎn)

OK,這個(gè)方法學(xué)會(huì)了嗎骑科?是不是很簡(jiǎn)單呢橡淑?!那我們來(lái)簡(jiǎn)單的分析總結(jié)一下:打斷點(diǎn)修改Request數(shù)據(jù)的方法和修改Response數(shù)據(jù)的方法兩者很相似咆爽,也很簡(jiǎn)單梁棠,在Fiddler的窗口界面上都可以完成操作。但是斗埂,轉(zhuǎn)折來(lái)了啊符糊,請(qǐng)大家注意,打斷點(diǎn)修改數(shù)據(jù)的方法不太適合頻繁的修改接口的數(shù)據(jù)呛凶,操作步驟雖不復(fù)雜但是擱不住大量的操作男娄,在修改的過(guò)程中也很容易出現(xiàn)一不小心手一抖將數(shù)據(jù)修改錯(cuò)誤的情況,同時(shí)這種方式修改數(shù)據(jù)要特別留意請(qǐng)求超時(shí)的問(wèn)題漾稀。

二模闲、局部修改數(shù)據(jù)

什么是局部修改數(shù)據(jù)呢?就是在接口原本的數(shù)據(jù)上進(jìn)行數(shù)據(jù)的調(diào)整崭捍。我們不再在界面上操作了尸折,而是通過(guò)修改CustomRules.js腳本來(lái)實(shí)現(xiàn)。

快捷鍵 Ctrl+R 打開(kāi) Fiddler ScriptEditor殷蛇。

(一)Request

找到static function OnBeforeRequest(oSession: Session) {}实夹,在此方法中進(jìn)行Request數(shù)據(jù)的修改橄浓。看方法名也很容易明白這個(gè)方法的作用亮航,在發(fā)送請(qǐng)求之前進(jìn)行的操作荸实。

需求:把A接口Request中的country=CN 中的CN調(diào)整為US。


CustomRules.js腳本文檔調(diào)整如下:

在 OnBeforeRequest(oSession: Session) 中添加以下的代碼:

if (oSession.uriContains(“sdk/v4”)) {

oSession[“ui-color”] = “red”;

oSession.utilReplaceInRequest(“CN”, “US”);

}

講解一下:

1缴淋、首先需要先定位到該接口准给,判斷oSession的uri中是否包含關(guān)鍵字【sdk/v4】(請(qǐng)求的接口地址)

2、oSession[“ui-color”] = “red”;設(shè)置為該接口為紅色重抖,方便查看

3圆存、oSession.utilReplaceInRequest(“CN”, “US”); 將Request的Body中所有的CN修改為US。

4仇哆、驗(yàn)證一下,如下圖夫植,說(shuō)明修改成功讹剔。


該方法中最關(guān)鍵的方法是 oSession.utilReplaceInRequest(String A,String B),將Request的Body中所有的A修改為B详民,所有的A修改為B延欠,所有的A修改為B,重要的事情說(shuō)三遍沈跨。

在Response中也有與此相對(duì)應(yīng)的方法由捎,oSession.utilReplaceInResponse(String A,String B),將Response的Body中所有的A修改為B饿凛。

(二)Response

找到static function OnBeforeResponse(oSession: Session) {}狞玛,在此方法中進(jìn)行Response數(shù)據(jù)的修改。

上面utilReplaceIn**()修改數(shù)據(jù)的方法需要提前很明確地知道替換的內(nèi)容涧窒,可是在實(shí)際的工作中接口的數(shù)據(jù)都是動(dòng)態(tài)獲取的心肪,很顯然這個(gè)方法就有些局限了。

工作中遇到最多的是調(diào)整某個(gè)key的value值纠吴,value值是動(dòng)態(tài)的硬鞍,但是key絕對(duì)是固定不變的。

一個(gè)請(qǐng)求無(wú)論是post方法還是get方法戴已,發(fā)送的Request還是接收的Response都是有固定的數(shù)據(jù)格式固该,比如application/json,application/x-www-form-urlencoded糖儡。這些數(shù)據(jù)格式是通過(guò)content-type來(lái)定義伐坏,什么是content-type呢?顧名思義休玩,內(nèi)容類型著淆,用來(lái)指定不同格式的數(shù)據(jù)信息劫狠。 就是在header中指定body中的數(shù)據(jù)格式。

application/x-www-form-urlencoded:數(shù)據(jù)被編碼為名稱/值對(duì)永部。這是標(biāo)準(zhǔn)的編碼格式独泞。 application/json : json格式的數(shù)據(jù)。

Fiddler中怎么查看content-type苔埋?

如下圖所示懦砂,查看A請(qǐng)求Request的content-type信息:application/x-www-form-urlencoded:


如下圖所示,查看A請(qǐng)求Response的content-type信息:application/json:


需求:將A接口Response的Body中的adaction(key)的value值變成”install—zwf”


CustomRules.js腳本文檔調(diào)整如下:

在 OnBeforeResponse(oSession: Session) 中添加以下的代碼:

if(oSession.uriContains(“sdk/v4”)) {

? oSession[“ui-color”] = “red”;

? var content_type = oSession.oResponse.headers[“Content-Type”];

? //先判斷Content-Type是否為json组橄,為ture才可以進(jìn)行json數(shù)據(jù)格式的轉(zhuǎn)換

? ? if(content_type.IndexOf(“application/json”) != -1){

? ? // 獲取Response Body中JSON字符串

? ? var responseStringOriginal = oSession.GetResponseBodyAsString();

? ? // 轉(zhuǎn)換為可編輯的JSONObject變量

? ? var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);

? ? // 修改JSONObject變量荞膘,修改字段數(shù)據(jù),這里涉及到j(luò)son數(shù)據(jù)的解析玉工,相關(guān)知識(shí)請(qǐng)大家自行腦補(bǔ)

? ? responseJSON.JSONObject[0][“adaction”] = “install—zwf”;

? ? // 重新設(shè)置Response Body

? ? var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);

? ? oSession.utilSetResponseBody(responseStringDestinal);

? ? }

}

捕捉請(qǐng)求羽资,驗(yàn)證一下,如下圖所示遵班,修改成功:


一定要根據(jù)content-type的數(shù)據(jù)格式進(jìn)行相應(yīng)的數(shù)據(jù)轉(zhuǎn)換和解析屠升。同理面氓,Request類似數(shù)據(jù)的修改也可以參照這個(gè)方法交汤。

三闻葵、整體替換數(shù)據(jù)

整體替換數(shù)據(jù)熊咽,就是不在原本的接口數(shù)據(jù)上進(jìn)行調(diào)整靴拱,直接將整個(gè)body一鍋端都替換掉铁材,這個(gè)思路很是簡(jiǎn)單粗暴呢碗暗。

(一)Request

CustomRules.js腳本文檔調(diào)整如下:

static functionOnBeforeRequest(oSession: Session) {

? //在OnBeforeRequest中增加以下代碼

? if(oSession.uriContains(“/sdk/v4”)) {

? ? oSession[“ui-color”] = “green”;

? ? //獲取request中的body字符串

? ? varstrBody = oSession.GetRequestBodyAsString();

? ? strBody = “修改后的body內(nèi)容 “;

? ? oSession.utilSetRequestBody(strBody);

? }

}

也可以通過(guò)類似的思路方法整體替換Response的數(shù)據(jù)探熔。

(二)Response

整體替換Response的數(shù)據(jù)亩鬼,除了上面提到的方法殖告,還有一個(gè)更簡(jiǎn)單粗暴行之有效的方法。Fiddler的AutoResponder功能雳锋。如下圖所示:


備注:Fiddler的AutoResponder功能若不是很熟悉的話丛肮,請(qǐng)大家自行學(xué)習(xí)一下(另一本書(shū):fiddler抓包讓數(shù)據(jù)無(wú)處可藏),本篇只提供這樣的一種解決思路和方法魄缚。

敲黑板知識(shí)點(diǎn)

另外需要特別強(qiáng)調(diào)一點(diǎn)的是宝与,如果A接口通過(guò)AutoResponder功能來(lái)替換Response的數(shù)據(jù),那么該請(qǐng)求就沒(méi)有發(fā)送到服務(wù)端冶匹,fiddler在前端捕獲到A接口之后习劫,就直接將AutoResponder指定的Response返回給前端或者客戶端。這一點(diǎn)很是重要嚼隘!重要7汤铩!重要7捎肌0啤灸眼!

四、總結(jié)

幾種修改數(shù)據(jù)的方法已經(jīng)和大家分享了墓懂,意不意外焰宣?驚不驚喜?開(kāi)不開(kāi)心捕仔?刺不刺激匕积?居然還有這種操作?扎心了榜跌,老鐵闪唆!? 那么趕快操練起來(lái)吧,童鞋們钓葫,拿出你的FreeStyle悄蕾,秀出你的魔性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末础浮,一起剝皮案震驚了整個(gè)濱河市笼吟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霸旗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戚揭,死亡現(xiàn)場(chǎng)離奇詭異诱告,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)民晒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)精居,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人潜必,你說(shuō)我怎么就攤上這事靴姿。” “怎么了磁滚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵佛吓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我垂攘,道長(zhǎng)维雇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任晒他,我火速辦了婚禮吱型,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陨仅。我一直安慰自己津滞,他們只是感情好铝侵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著触徐,像睡著了一般咪鲜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锌介,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天嗜诀,我揣著相機(jī)與錄音,去河邊找鬼孔祸。 笑死隆敢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崔慧。 我是一名探鬼主播拂蝎,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惶室!你這毒婦竟也來(lái)了温自?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤皇钞,失蹤者是張志新(化名)和其女友劉穎悼泌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夹界,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馆里,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了可柿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸠踪。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖复斥,靈堂內(nèi)的尸體忽然破棺而出营密,到底是詐尸還是另有隱情,我是刑警寧澤目锭,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布评汰,位于F島的核電站,受9級(jí)特大地震影響痢虹,放射性物質(zhì)發(fā)生泄漏键俱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一世分、第九天 我趴在偏房一處隱蔽的房頂上張望编振。 院中可真熱鬧,春花似錦、人聲如沸踪央。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)畅蹂。三九已至健无,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間液斜,已是汗流浹背累贤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留少漆,地道東北人臼膏。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像示损,于是被迫代替她去往敵國(guó)和親渗磅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載地址 image.png 前言 fiddler是一個(gè)很好的抓包工具检访,默認(rèn)是抓http請(qǐng)求的始鱼,對(duì)于pc上的htt...
    菜菜編程閱讀 21,110評(píng)論 0 28
  • 使用 HTTP 服務(wù)器或客戶端功能必須調(diào)用require('http')。 Node 里的 HTTP 接口支持協(xié)議...
    保川閱讀 1,379評(píng)論 0 1
  • github地址会烙,歡迎大家提交更新。 express() express()用來(lái)創(chuàng)建一個(gè)Express的程序双泪。ex...
    Programmer客棧閱讀 2,503評(píng)論 0 1
  • 再?gòu)?fù)雜的事情,在剛開(kāi)始的時(shí)候都是非常簡(jiǎn)單的密似,抓住事情的本質(zhì)是非常必要的焙矛。 面對(duì)復(fù)雜的問(wèn)題時(shí),要能現(xiàn)在更高的角度去思...
    飛鷹于凱閱讀 336評(píng)論 0 0
  • 高紅蓮每天都去找不同的堂口頭領(lǐng)残腌,念叨本旗的兄弟如何如何不好好干活村斟,如何如何靠不住,誰(shuí)誰(shuí)誰(shuí)人品有問(wèn)題抛猫,誰(shuí)誰(shuí)誰(shuí)又是申掌...
    黑豆齋閱讀 158評(píng)論 0 1