需求


在开发/测试过程中有多台设备(PC/手机/模拟器)通过 Fiddler 代理上网时,如何方便地从满屏纷飞的 Session 中筛选出自己关心的那台设备的请求?

设想


通过 FiddlerScript 扩展,在 Session 的右键弹出菜单中添加一项,作为“查看所有设备请求”和“查看单个设备请求”的切换开关。

设计操作流程:

  1. 找到自己关心的设备发出的某一条请求,在它的右键弹出菜单里有我们添加的菜单项“开/关过滤单设备请求”。

  2. 点击该菜单项后:

    • 若当前状态为“查看所有设备请求”,则切换为“查看单个设备请求”状态,该设备为此条请求的发送者,并清除当前已显示的所有不关心的设备的请求。

    • 若当前状态为“查看单个设备请求”,则切换为“查看所有设备请求”状态。

实现


实现思路:

  • 通过修改 CustomRules.js,在右键弹出菜单上添加一个菜单项来切换请求筛选状态。

  • 每一条请求都带有 ClientIP,它在没有网络切换之类的情况发生时能较好地唯一标识一台设备。

  • 筛选规则是将非来自该 ClientIP 的请求隐藏掉。

实现步骤:

1. 打开 CustomRules.js。

启动Fiddler,依次选择菜单 Rules > Customize Rules...

2. 在 OnBeforeRequest 前添加如下代码:

// 是否过滤单设备请求标志
public static var gs_FilterDevice: boolean = false;
// 显示请求的设备的
ClientIPpublic static var gs_FilterClientIP: String = null;
static function IsUnMatchClientIP(oS:Session):Boolean {return (oS.m_clientIP != gs_FilterClientIP);
}
public static ContextAction("开/关过滤单设备请求")
function ToggleDeviceFilter(oSessions: Fiddler.Session[]){if (gs_FilterDevice) {gs_FilterDevice = false;return;}var oS: Session = FiddlerApplication.UI.GetFirstSelectedSession();if (null == oS) return;if (!gs_FilterDevice) {gs_FilterDevice = true;}gs_FilterClientIP = oS.clientIP;// 删除当前已显示的非所关心设备的请求FiddlerApplication.UI.actSelectSessionsMatchingCriteria(IsUnMatchClientIP);FiddlerApplication.UI.actRemoveSelectedSessions();
}

3. 在 OnBeforeRequest 函数里添加如下代码,用于在“查看单个设备请求”状态时将不关心的设备产生的新请求隐藏:

if (gs_FilterDevice && oSession.m_clientIP != gs_FilterClientIP) {oSession["ui-hide"] = "true";
}

最终效果如下图:

  • 筛选前

  • 筛选后

缺陷


当前做法有如下缺陷,尚未想到好办法解决:

  • 菜单项并不能标明当前的状态,不知道筛选是开是关,这可以通过查看当前 Session 列表里是否有多种设备的请求来判断。

  • 当设备有网络切换时,比如重启了路由或者离开又回到某 Wifi,ClientIP 可能发生了变化,需要关闭筛选后在设备以新的 ClientIP 产生的请求上右键再次开启筛选。

Fiddler大师之路系列(五)相关推荐

  1. Fiddler大师之路系列(一)

    江湖传言,Fiddler是捕获客户端与服务器之间的所有HTTP(S) 请求的利器,但是在具体使用过程中,发现使用Fiddler进行抓包时有一部分请求总是没到,多方苦寻之下发现客户端使用WinINET这 ...

  2. python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程

    前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...

  3. 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1

    <ASP.NET Core In Action>读书笔记系列五 ASP.NET Core 解决方案结构解析1 参考文章: (1)<ASP.NET Core In Action> ...

  4. Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)

    原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations) 正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Bl ...

  5. 盘点2013年那些最优秀的网页设计作品【系列五】

    这个系列的文章向大家展示2013年最优秀的国外网页设计作品,这些都是过去的一年在图片,纹理,导航等等各个方面的优秀网站.2013年,网页设计领域出现了几个新的流行趋势,最热门的就是响应式设计(Resp ...

  6. 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引

    数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引 [建立一个搜索引擎大致需要做这样几件事:自动下载尽可能多的网页:建立快速有效的索引:根据相关性对网页进行公平准确的排序.我们在介绍 Googl ...

  7. 智能路由器-OpenWRT 系列五 (NAS-SMB家庭共享)

    NAS是我觉得家里必不可少的一台设备,NAS 全称 Network Attached Storage,即网络附加存储服务器,它通过自身的操作系统和 SMB/NFS/CIFS/FTP 等多种通信协议来给 ...

  8. VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用

    VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用 1.TortoiseSVN上传项目文件 2.VS中同步该项目文件 到此VS 中配置使用Visual SVN系列已经完成如 ...

  9. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...

    为什么80%的码农都做不了架构师?>>>    版权声明:本文由本人撰写并发表于2012年9月份的<程序员>杂志,原文题目<一种支持自由规划的Sharding扩容方 ...

最新文章

  1. 查看服务器硬件配置信息(cpu/内存)
  2. ajax存储过程,jQuery-AJAX将下拉列表重新绑定到存储过程的结果
  3. Java面向对象编程学习
  4. python的pandas库中如何计算每列出现最多的值_Python Pandas:计算多个列的每个唯一值的显示次数...
  5. 锁 mysql_Mysql的锁(S锁和X锁的区别)
  6. delegate 委托方法
  7. 逻辑回归python实现
  8. s1200 博图高速脉冲计数值没有变化_如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?...
  9. avast高级版许可文件_明道云私有部署版已上架腾讯云镜像市场
  10. 电赛机器视觉——激光点定位
  11. babelua for vs 2015
  12. tl-wn821n无线网卡驱动 linux,tlwn821n 300m无线网卡驱动 官方最新版
  13. 对convertView和ViewHolder的理解
  14. 重装mac系统 未能与恢复服务器取得联系,进入 macOS 系统恢复模式 – 重新安装 macOS 系统...
  15. vcf构建idx索引
  16. 抖音测试距离的软件,抖音同款距离测量仪
  17. MacBook安裝系統報錯
  18. 域对抗(域适应)训练
  19. 20 虚幻4【UE4】场景中模型高亮轮廓
  20. 解析如何快速准确区别肖特基二极管与快恢复二极管的诀窍

热门文章

  1. cad立体图怎么旋转看图_CAD制图如何旋转图形?
  2. 计算机考研330分难吗,工科考研330分是什么难度应该怎么准备
  3. iphone11双卡怎么安装(苹果11门禁卡模拟)
  4. 【数模】典型相关分析
  5. 笔记本电脑什么软件测试温度,笔记本cpu温度多少正常
  6. 好机会!IT工程师恭喜了!纳入工信部-工业互联网人才库!8月31日报名截止
  7. 洛谷【入门3】循环结构
  8. word转html (正常的html代码)
  9. 凸优化学习笔记 10:凸优化问题
  10. 结构思考力系列:透过结构看清晰思考(转载)