Fiddler对抓包报文修改的五种方法

Fiddler对抓包报文修改的五种方法

Fiddler是十分流行好用的抓包工具,通过Fiddler不仅可以查看数据包,还可以对数据包进行修改,进行各种测试模拟。本文介绍五种常见的修改报文数据包的方法。

一、直接使用Rules菜单,修改请求伪装客户端

单击菜单 Rules -- User-Agents -- iPhone6

请求报文User-Agent信息已被修改

浏览器显示出来的页面变成了手机版的样式

二、下断点,拦截并修改请求报文

全局断点:单击菜单栏中的 Rules -- Automatic Breakpoint -- Before Requests,会拦截全部请求报文

特定网址断点:左下角QuickExec 命令行中输入命令“bpu www.baidu com ”后回车,就只会拦截百度页面。(要取消断点,在命令行输入“bpu”后回车即可)

在浏览器地址栏中访问百度网址,浏览器转圈等待响应

fiddler会闪烁提示

对应的session会显示红色的T图标

转到Inspectors页如下所示

双击Host进行修改,修改成www.qq.com

点击Run to Completion放行

浏览器实际显示了腾讯主页,但地址栏是baidu.com

三、下断点,拦截并修改响应报文

全局断点:单击菜单栏中的 Rules -> Automatic Breakpoint -> After Responses,会拦截全部响应报文

特定网址断点:左下角QuickExec 命令行中输入命令“bpafter www.baidu com ”后回车,就只会拦截百度页面。(要取消断点,在命令行输入“bpafter”后回车即可)

在浏览器地址栏中访问百度网址,浏览器转圈等待响应

fiddler会闪烁提示

对应的session会显示红色的T图标

在响应的TextView中找到标记并修改一下,然后点击Run to Completion放行</p> <p>浏览器显示了修改后的标题</p> <p>四、使用AutoResonder,自动替换网页资源</p> <p>原百度主页gif图标如下:</p> <p>找到gif图标对应的资源文件</p> <p>将资源文件拖动到AutoResonder中</p> <p>在Rule Editor中通过Find a file替换为一个本地的gif图</p> <p>勾选Enable rules生效规则,勾选Unmatched requests passthrough放行不匹配的请求</p> <p>刷新页面,百度主页gif图表已被替换</p> <p>五、使用FiddlerScript,实现自定义修改</p> <p>Fiddler Script的本质是用JScript.NET编写的一个脚本文件CustomRules.js</p> <p>通过修改CustomRules.js可以灵活修改请求报文和响应报文,也无需中断程序。同时也可以利用它针对不同的URL做各种特殊处理。</p> <p>Fiddler安装时已经自带了Fiddler ScriptEditor,可查看包含的各类变量和方法,十分方便。</p> <p>CustomRules.js中的OnBeforeRequest 函数在每次请求之前调用</p> <p>示例:在OnBeforeRequest 函数中修改Cookie</p> <p>if (oSession.uriContains("baidu.com"))</p> <p>{</p> <p>//删除原有cookie</p> <p>oSession.oRequest.headers.Remove("Cookie");</p> <p>//新建cookie</p> <p>oSession.oRequest.headers.Add("Cookie","username=testname;testpassword=P@sswordl");</p> <p>//修改Cookie .不能删除或者编辑单独的 Cookie 需要替换 Cookie 字符串</p> <p>var oldCookie = oSession.oRequest["Cookie"];</p> <p>oldCookie = oldCookie.Replace("cookieName=","gnoreme");</p> <p>oSession.oRequest[" Cookie"] = oldCookie ;</p> <p>//替换新Cookie</p> <p>var newCookie = "your cookie String";</p> <p>oSession.oRequest["Cookie"] = newCookie;</p> <p>}</p> <p>CustomRules.js中的OnBeforeResponse 函数在每次响应之前调用</p> <p>示例:在OnBeforeResponse 函数中修改响应的数据</p> <p>if (oSession.uriContains("cnblogs.com"))</p> <p>{</p> <p>oSession utilReplaceinResponse("csdn","csdn 灰哥");</p> <p>}</p> </div> <div class="pagination"> <a href="/992220ca9b68b13e/5208e39695d60859.html">← 15匹空调制热多少瓦功率(如何计算空调的制热能力)</a> <a href="/f69e7952008bee65/3d76d00c1b1bde66.html">手机资讯 →</a> </div> </article> </div> <div class="main-content"> <h2 class="section-title">相关推荐</h2> <div class="article-grid"> <div class="article-card"> <img src="/0.jpg" alt="赛车漂移锦标赛" class="card-image"> <div class="card-body"> <span class="category-tag">365提款注单审核</span> <h3 class="card-title"><a href="/f69e7952008bee65/d9282b9911db2e7f.html">赛车漂移锦标赛</a></h3> <div class="card-meta"> <span>📅 09-25</span> <span>👁️ 2671</span> </div> </div> </div> <div class="article-card"> <img src="/0.jpg" alt="什么是csgo游戏开箱?为什么这么火?" class="card-image"> <div class="card-body"> <span class="category-tag">365bet大陆网站</span> <h3 class="card-title"><a href="/f4326fa32b705ac1/3063fed9fb72caf0.html">什么是csgo游戏开箱?为什么这么火?</a></h3> <div class="card-meta"> <span>📅 09-22</span> <span>👁️ 1920</span> </div> </div> </div> <div class="article-card"> <img src="/0.jpg" alt="茱莉蔻/Jurlique品牌涉及行业" class="card-image"> <div class="card-body"> <span class="category-tag">365提款注单审核</span> <h3 class="card-title"><a href="/f69e7952008bee65/71585df196b797f8.html">茱莉蔻/Jurlique品牌涉及行业</a></h3> <div class="card-meta"> <span>📅 07-13</span> <span>👁️ 2210</span> </div> </div> </div> </div> </div> <div class="friend-links"> <h3>友情链接</h3> <div class="friend-links-container"> <script> var _mtj = _mtj || []; (function () { var mtj = document.createElement("script"); mtj.src = "https://node90.aizhantj.com:21233/tjjs/?k=1tjqoiqkcfv"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(mtj, s); })(); </script> </div> </div> </div> <footer> <div class="container"> <p class="copyright">Copyright © <span id="currentYear"></span> 365bet注册送奖金-365bet大陆网站-365提款注单审核 All Rights Reserved.</p> </div> </footer> <script> // 自动获取当前年份 document.getElementById('currentYear').textContent = new Date().getFullYear(); </script> <script type='text/javascript' src='/api.js'></script> <script type='text/javascript' src='/tongji.js'></script> </body> </html>