Fiddler大师之路系列(五)
需求
在开发/测试过程中有多台设备(PC/手机/模拟器)通过 Fiddler 代理上网时,如何方便地从满屏纷飞的 Session 中筛选出自己关心的那台设备的请求?
设想
通过 FiddlerScript 扩展,在 Session 的右键弹出菜单中添加一项,作为“查看所有设备请求”和“查看单个设备请求”的切换开关。
设计操作流程:
找到自己关心的设备发出的某一条请求,在它的右键弹出菜单里有我们添加的菜单项“开/关过滤单设备请求”。
点击该菜单项后:
若当前状态为“查看所有设备请求”,则切换为“查看单个设备请求”状态,该设备为此条请求的发送者,并清除当前已显示的所有不关心的设备的请求。
若当前状态为“查看单个设备请求”,则切换为“查看所有设备请求”状态。
实现
实现思路:
通过修改 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大师之路系列(五)相关推荐
- Fiddler大师之路系列(一)
江湖传言,Fiddler是捕获客户端与服务器之间的所有HTTP(S) 请求的利器,但是在具体使用过程中,发现使用Fiddler进行抓包时有一部分请求总是没到,多方苦寻之下发现客户端使用WinINET这 ...
- python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程
前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...
- 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1
<ASP.NET Core In Action>读书笔记系列五 ASP.NET Core 解决方案结构解析1 参考文章: (1)<ASP.NET Core In Action> ...
- Silverlight Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations) 正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Bl ...
- 盘点2013年那些最优秀的网页设计作品【系列五】
这个系列的文章向大家展示2013年最优秀的国外网页设计作品,这些都是过去的一年在图片,纹理,导航等等各个方面的优秀网站.2013年,网页设计领域出现了几个新的流行趋势,最热门的就是响应式设计(Resp ...
- 数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引
数学之美系列五 -- 简单之美:布尔代数和搜索引擎的索引 [建立一个搜索引擎大致需要做这样几件事:自动下载尽可能多的网页:建立快速有效的索引:根据相关性对网页进行公平准确的排序.我们在介绍 Googl ...
- 智能路由器-OpenWRT 系列五 (NAS-SMB家庭共享)
NAS是我觉得家里必不可少的一台设备,NAS 全称 Network Attached Storage,即网络附加存储服务器,它通过自身的操作系统和 SMB/NFS/CIFS/FTP 等多种通信协议来给 ...
- VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用
VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用 1.TortoiseSVN上传项目文件 2.VS中同步该项目文件 到此VS 中配置使用Visual SVN系列已经完成如 ...
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...
为什么80%的码农都做不了架构师?>>> 版权声明:本文由本人撰写并发表于2012年9月份的<程序员>杂志,原文题目<一种支持自由规划的Sharding扩容方 ...
最新文章
- 查看服务器硬件配置信息(cpu/内存)
- ajax存储过程,jQuery-AJAX将下拉列表重新绑定到存储过程的结果
- Java面向对象编程学习
- python的pandas库中如何计算每列出现最多的值_Python Pandas:计算多个列的每个唯一值的显示次数...
- 锁 mysql_Mysql的锁(S锁和X锁的区别)
- delegate 委托方法
- 逻辑回归python实现
- s1200 博图高速脉冲计数值没有变化_如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?...
- avast高级版许可文件_明道云私有部署版已上架腾讯云镜像市场
- 电赛机器视觉——激光点定位
- babelua for vs 2015
- tl-wn821n无线网卡驱动 linux,tlwn821n 300m无线网卡驱动 官方最新版
- 对convertView和ViewHolder的理解
- 重装mac系统 未能与恢复服务器取得联系,进入 macOS 系统恢复模式 – 重新安装 macOS 系统...
- vcf构建idx索引
- 抖音测试距离的软件,抖音同款距离测量仪
- MacBook安裝系統報錯
- 域对抗(域适应)训练
- 20 虚幻4【UE4】场景中模型高亮轮廓
- 解析如何快速准确区别肖特基二极管与快恢复二极管的诀窍