Android中Fiddler的使用技巧
来源:互联网 发布:阿里云邮箱密码找回 编辑:程序博客网 时间:2024/05/17 07:46
对于前端开发,Fiddler应该是比较常用的网络请求监听工具了,之前为了跨平台还想使用wireshark,但是发现相比起来不太友好,折腾过后才发现原来Fiddler也有linux和mac版本(多亏了.net开源,需要安装mono,后面会有链接,当然体验会差点),本文就介绍几个有用却被用得比较少的技巧(本文基于Fiddler V4.6);
Fiddler在客户端和服务器之间假设了一个代理,我们可以通过它对请求和响应进行各种操作,
1. 下载安装
win
mac/linux
linux中需要安装mono:
sudo apt-get install mono-completemono Fiddler.exe
2. 插件安装
Fiddler也可以安装插件,由于安装的时候碰到点坑,这里也记录一下: 到 这里 下载插件,我下载了一个 Traffic Differ
, 是个 exe
文件,双击安装并重启Fiddler( File-exit
,然后重新启动)后,选择了任意两个请求, 右键-compare(ctrl+w)
,提示我找不到 WinDiff.exe
,使用 EveryThing
搜索后发现生成的 WinDiff.exe
在 C:\Program Files (x86)\Microsoft WebMatrix
中,这个目录不再我系统 path
环境变量下,导致找不到,添加下即可;
P.S. 插件运行后除了生成 WinDiff.exe
外,还在 Fiddler2/Scripts
目录下生成了 Differ.dll
,可以查看下,另外,插件是否安装也可以在 tools
– Telerik Fildder Options
– Extensions
面板中查看;
3. 开启代理,实现请求中转
1. 设置Fiddler端口,允许远程连接
单击菜单栏: tools
– Telerik Fildder Options
– Connections
,进行如下设置,其中端口号可以自定义,不冲突即可,并允许远程连接;
2. 手机端设置Wifi代理
当然,Fiddler安装的主机要跟手机在同一个无线网络中,在手机中设置wifi代理参数,其中端口号就是Fiddler中设定的,而路由ip地址是Fiddler所在主机的网址:
至此我们就成功使用Fiddler作为手机的代理了;
3. Filters过滤器设置
主要设定好后,要单击 Actions
- Run Filterset Now
来使过滤条件生效
4. Composer模拟请求
可以直接拖拽会话列表中的已有请求到本页面,修改数据后,execute执行,但是我们有另一个利器 postman,就不需要这里了吧;
5. 模拟弱网络情况
直接上图
6. 重定向资源/模拟数据
开发时候,通常客户端和服务器是两拨人马在做,经常是接口文档已出,但接口并未实现或者无数据或数据不完整,导致客户端测试时候很痛苦,需要在程序中各种判断各种假数据,使用Fiddler可以使用本地资源替换服务端的response即可;
另外,Fiddler支持多种url匹配的方式(可以从 url pattern
下拉列表中查看):
* 字符匹配
如输入 csdn
,可以匹配 http://www.csdn.net/
或者 http://blog.csdn.net/
等
* 精确匹配
以 EXACT
开头表示完全匹配,如上边的例子 EXACT:http://blog.csdn.net
* 正则表达式匹配
以 regex:
开头,如 regex:(?insx).*.(css)$
表示匹配所有以css结尾的请求url ;
如下图,可以指定某个请求url后,指定其要返回的数据,比如某个根据接口文档信息生成的json文件,虽然同样都是造假数据,但是一来不影响程序逻辑,不增加代码,多人协同开发时,还方便复用和重现;
P.S. 即可要勾选 Unmatched requests passthrough
, 不然所有请求的返回都会被拦截的;
7. 其他方式修改reqeust/response
常碰到需要测试某个数据的时候,服务端又没有要求的数据,等着后台生成数据或者使用上面的方法模拟全部数据都比较麻烦,我们其实可以直接修改response内容,然后再返回给客户端的,这就是断点功能(这里以断response为例);
P.S. 修改request的话可以如下图
1. 菜单栏启用断点After responses
这种方式会对所有请求都进行断点
response被断点后,可以在 Inspectors
- Response TextView
面板中直接修改返回的数据,也可通过 Choose Response
下拉菜单中选择预定义的模板或者 通过 find a file
来指定本地文件作为resposne,类似上面说过的重定向资源:
2. 命令行临时断点
菜单栏开启断点会对所有请求都做断点操作,不太方便,我们其实也可以临时对符合指定条件的请求做断点:
命令行中支持的几个断点方式如下:
// 当这些命令没有加参数时,会清空所有设置了断点的Http请求:bpafter xxx: 中断 URL 中包含指定字符的全部 session 响应bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应bpv xxx: 中断指定请求方式的全部 session 响应bpm xxx: 中断指定请求方式的全部 session 响应,等同于bpv xxxbpu xxx:与bpafter类似
比如输入: bpafter csdn
,就会对所有请求url中含有 csdn
请求,在返回时进行断点操作;
P.S. 其他比较有用的命令行:
?text 选择所有 URL 匹配问号后的字符的全部 session=status 选择响应状态等于给定状态的所有HTTP请求=method 选择请求方式为指定method的请求会话,如 =get>size 或者 <size 选择响应大小大于/小于size(单位b)的请求,如 >1k@host 选择包含指定 host 的全部 HTTP请求bold xxx 加粗满足指定条件的会话名,如 bold csdn,则包含 `csdn` 的请求会被加粗显示cls 或者 clear 清空会话列表,不过我习惯用快捷键ctrl+a ctrl+x来删除select xxx 选择Content-Type头中包含指定字符串的响应,可用于选择文件格式,如 select imagego 跳过当前断点,跟常用工具栏上的 `go` 按钮功能一样urlreplace www.demo.com www.dev.demo.com 将host为 'www.demo.com'的请求替换为'www.dev.demo.com'
3. 脚本配置修改
官方文档
其实跟从菜单栏启动断点功能差不多,只不过更灵活, 通过 Rules
- Customize Rules(Ctrl+R)
开启编辑器,初次运行可能会提示安装编辑器:
单击编辑器菜单 go
- before OnBeforeResponse
会定位到 OnBeforeResponse
函数,在response返回给客户端前会先进入该方法,我们可以在里面进行某些设置:
if(oSession.uriContains("http://fepapi.debug.web.nd/v1/master_infos/2080998854")){ oSession["ui-color"]="#0000ff";//设置颜色 oSession.oResponse["newResponseHead"]="hello";//添加一个请求头 oSession.oResponse.headers.Remove("Date");//删除请求头,测试大小写不敏感,request的类似}
我们可以修改 OnBeforeRequest
函数,对请求头进行处理:
// 修改查询路径和条件 if(oSession.PathAndQuery==”/v1/master_infos/2080998854”){//除主机名后面的完整部分 oSession[“ui-color”]=”red”;// 满足条件时显示颜色 oSession.PathAndQuery=”/v1/master_infos/2079941150”//修改查询路径 }//修改请求主机名 if (oSession.HostnameIs(“fepapi.debug.web.nd”)) { oSession.hostname=”www.baidu.com”; }
8. 其他
部分快捷键
定位到命令行 : alt+q
快速改变会话行颜色 : ctrl+N (N为数字,0表示取消颜色,1为红色 … 可通过 右键-mark
查看)
删除选中的会话 : ctrl+x
反选会话 : ctrl+i (这个配合命令行过滤以及ctrl+x可以让会话列表变得清爽清晰很多)
9. 参考资料
- 官方文档
- Fiddler Script 与 HTTP 断点调试
- 调试之Fiddler修改返回结果Response
- Fiddler(一)-Fiddler简介
- Fiddler(二)-使用Fiddler做抓包分析
- Fiddler(三)-Fiddler命令行和HTTP断点调试
- 用Fiddler模拟低速网络环境
- Fiddler常用命令
- Mac/linux下使用Fiddler-虚拟机
- Android中Fiddler的使用技巧
- Fiddler使用技巧
- Fiddler使用技巧
- fiddler高级使用技巧
- fiddler 使用技巧
- FIDDLER的使用方法及技巧总结[连载3]---FIDDLER使用技巧及方法
- Fiddler的一些技巧
- Android 抓包之Fiddler的使用
- 使用Fiddler抓Android应用的包
- Fiddler使用技巧及下载
- Fiddler使用技巧及常见问题
- 使用Fiddler监听Java HttpURLConnection请求的小技巧
- 使用Fiddler监听Java HttpURLConnection请求的小技巧
- FIDDLER的使用方法及技巧总结[连载1]---FIDDLER快速入门及使用场景
- Android使用Fiddler
- Android Fiddler使用
- 第十五篇 Android中使用Fiddler实现手机抓包的基本设置
- Fiddler 的一些技巧分享
- 代码笔记 | 洗牌算法
- IntelliJ IDEA 常用快捷键
- 代码笔记 | TCP 组包和拆包算法
- iOS开发集成友盟,新浪微博登录授权失败,responseCode等于5051
- Google推荐的图片加载库Glide介绍
- Android中Fiddler的使用技巧
- Struts2的初识
- 代码笔记 | PHP实现N*M的字符矩阵90度旋转
- POJ 2484A Funny Game
- 大型支付系统后台对账系统的控制和管理
- C++四种强制类型转换运算符总结
- Go-goroutines
- 2016-09-01收获-原创+转载(知乎) 电商SKU介绍-1
- POJ 3667Hotel