前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fiddler 还能这么玩?

Fiddler 还能这么玩?

作者头像
用户5521279
发布2019-07-10 14:56:01
8820
发布2019-07-10 14:56:01
举报
文章被收录于专栏:搜狗测试搜狗测试

最近一段时间,团队来了一些新的测试小伙伴,但发现大家对Fiddler的用法还都比较基础,因此总结了一些我个人常用的稍微高级的用法给大家,以便大家发散思考,通过对Fiddler的定制,提高测试效率和测试技巧。

1. 双击Session时,使响应页始终显示到”json”tab页;使请求页始终显示到“webform”tab页

在QUICK EXEC命令执行窗口,执行

代码语言:javascript
复制
PREFS SET fiddler.ui.inspectors.response.alwaysuse "json"
PREFS SET fiddler.ui.inspectors.request.alwaysuse "WebForms"
2. 显示每个Session 的请求IP地址

打开Fiddlerscript 在main()中写与以下代码:

代码语言:javascript
复制
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
3. 修改响应Header中的Content-Type

打开Fiddlerscript在onBeforeResponse()中添加

代码语言:javascript
复制
// 如果host中包含tugele,把响应Content-Type修改为 json类型
if (oSession.host.Contains("tugele")){
    oSession.oResponse["Content-Type"] = "application/json;charset=UTF-8";
}
4. 右键session 直接使用浏览器打开url

打开Fiddlerscript,在class Handler中添加

代码语言:javascript
复制
public static ContextAction("Open in Chrome")
function DoOpenInIE(oSessions: Fiddler.Session[]){
    if (null == oSessions){
       MessageBox.Show("Please choose at least 1 session."); return;
    }
    for (var x = 0; x < oSessions.Length; x++){
    //执行cmd 命令
    System.Diagnostics.Process.Start("chrome.exe", oSessions[x].url);
    }
}
5. Session列中,显示每个请求的响应时间

打开Fiddlerscript,在class Handler中添加

代码语言:javascript
复制
public static BindUIColumn("TimeTaken/ms", 120)
function TimeTaken(oS: Session):String{
    var sResult = "0";
    var t1_ms = oS.Timers.ClientBeginResponse.ToUniversalTime().Millisecond;
    var t1_m = oS.Timers.ClientBeginResponse.ToUniversalTime().Minute;
    var t1_s = oS.Timers.ClientBeginResponse.ToUniversalTime().Second;
    var t1 = t1_m*60*1000 + t1_s*1000 + t1_ms;

    var t2_ms = oS.Timers.ClientDoneRequest.ToUniversalTime().Millisecond;
    var t2_m = oS.Timers.ClientDoneRequest.ToUniversalTime().Minute;
    var t2_s = oS.Timers.ClientDoneRequest.ToUniversalTime().Second;
    var t2 = t2_m*60*1000 + t2_s*1000 + t2_ms;

    if(t1 >= t2){
        var t3 =  t1 - t2;
        sResult = t3.toString();
        }
    return sResult;
}
6. 发送请求时,拦截并修改请求的url

打开Fiddlerscript在onBeforeRequest()中添加

代码语言:javascript
复制
// 指定包含 biaoqing 的url,替换url中的字符串
if (oSession.fullUrl.Contains('biaoqing')){
   if (oSession.fullUrl.Contains('abc')){
       oSession.fullUrl = oSession.fullUrl.Replace('abc','bcd');
   }
   // 在fiddler log中查看实际的请求
   FiddlerObject.log(oSession.fullUrl);
}
7. 模拟弱网环境

菜单栏,打开 Rules > Performance > Simulate Modem speed 开关 打开Fiddlerscript ,修改以下代码中的阈值,调整上下行流量的延迟时间,单位是ms

代码语言:javascript
复制
if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded.
    oSession["request-trickle-delay"] = "300";
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = "550";
}
8. 获取上一个请求的响应内容,作为下一个请求的Body,并使用Fiddler构造该请求

打开Fiddlerscript,在onBeforeRequest()中添加

代码语言:javascript
复制
//解密开关每次打开关闭都要去脚本中修改不太方便,因此把解密开关配置在Fiddler UI菜单栏中
public static RulesOption("Dectryt tugele")
    var tgl: boolean = true;

static function OnBeforeResponse(oSession: Session) {
    //tgl为解密开关,配置在UI RULES选项卡中
    if (oSession.host.Contains("tugele") && tgl){
        //获取请求的响应内容string
        var oBody: String = oSession.GetResponseBodyAsString();
        var eBody: String = "content=" + encodeURIComponent(oBody);
        //把String 转为 byte[]类型
        var Content: byte[] = System.Text.Encoding.UTF8.GetBytes(eBody);
        //构造一个header对象
        var oRQH: HTTPRequestHeaders = new HTTPRequestHeaders("/tools/decrypt", ['User-Agent: Fiddler','Host: test.example.com','Content-Length: '+Content.length.ToString(), 'Content-Type: application/x-www-form-urlencoded']);
        //定义请求方法为post
        oRQH.HTTPMethod = "POST";
        //定义oSD(参数需要,一般为空)
        var oSD = new System.Collections.Specialized.StringDictionary();
        //发送请求,生成一个新session
        FiddlerApplication.oProxy.SendRequestAndWait(oRQH, Content, oSD, null);
    }
}

以上就是我总结的一些方法,希望对大家能有所帮助,当然 Fiddler 还有很多其它高级的用法值得探索,也期待你的分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 双击Session时,使响应页始终显示到”json”tab页;使请求页始终显示到“webform”tab页
  • 2. 显示每个Session 的请求IP地址
  • 3. 修改响应Header中的Content-Type
  • 4. 右键session 直接使用浏览器打开url
  • 5. Session列中,显示每个请求的响应时间
  • 6. 发送请求时,拦截并修改请求的url
  • 7. 模拟弱网环境
  • 8. 获取上一个请求的响应内容,作为下一个请求的Body,并使用Fiddler构造该请求
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档