使用Fiddler调试手机程序 | 前端和运维利器

2015-11-27  zhy97031  文章来源  阅 688  转 4
 

作者:Uncle Chen

原文:http://unclechen.github.io/2015/04/30/使用前端开发利器Fiddler调试手机程序/

Fiddler是一个非常好用的web前端调试工具,它能记录客户端和服务器的http和https所有请求和响应,允许监视、设置断点,修改输入输出数据。与其他的抓包工具,例如wireshark、firebug等不同,Fiddler可以允许你在调试CGI接口时,修改返回的数据,也就是可以构造请求模拟响应

此外,Fiddler还可以支持模拟低速网络(如手机网络)过滤请求等等,安装了Willow插件以后你还可以轻松实现修改Host等操作。可惜的是目前Fiddler只支持Windows系统,没办法,毕竟是基于.net框架开发的嘛。

1. Fiddler的安装和配置

下载安装:

官网下载Fiddler:http://www.telerik.com/download/fiddler

注意:由于Fiddler4是基于.net框架的,所以需要在自己的电脑上先安装.NetFrameWork,安装好了以后,就可以下载Fiddler4进行安装了。

配置:

打开将Fiddler,在菜单中选择Tools->Fiddler Options,如下图所示把Fiddler设为全局的监听,再把浏览器或者软件的的http proxy设置为127.0.0.1,端口设为8888。选择ok后,关闭Fiddler并重新打开Fiddler,就可以用Fiddler抓取本地所有的流量了。

2. 抓取手机数据包

抓取手机数据包和抓去电脑上的数据包一样,只需要将手机的代理设置为Fiddler。

具体操作:让手机连接的wifi和你安装Fiddler的电脑处于同一网段,然后在手机的wifi设置中,选择高级选项,设置代理,指向你电脑的ip,端口设置为8888即可。

如上图所示,我电脑的ip是10.4.66.135,于是在手机连上wifi以后,勾选高级选项,代理选择手动,代理服务器主机名输入10.4.66.135,代理服务器端口输入8888,点击保存即可。

配置好以后,手机上所有网络请求和响应都会走Fiddler代理,这样就可以分析手机的网络流量了。我们在手机上打开一个大家熟悉的地址www.baidu.com,可以看到抓取的数据流量包了,Fiddler的工具栏看起来很复杂,如下图所示,稍微熟悉一下之后就会发现其实很简单。左侧界面是数据包按照时间顺序的列表,右边是对应每一个包的解析,我们可以看到详细的http header头文件以及表单、json数据等等。

3. 修改网络响应response

有的时候我们调试程序的时候,需要服务器返回新格式的数据,或者有时候发现原来的服务器上的某个js/css文件有问题,需要修改。如果这时我们要求同事帮忙修改文件,重新发布的话,将会非常麻烦,也可能会影响到现有的线上环境。对大公司来说,这不仅效率低下,而且一不小心就可能酿成大事故。所以通常的做法是在测试环境进行修改,然后等测试通过以后,再部署到线上环境中去。

但是有了Fiddler之后,我们可以直接在本地客户端进行调试了。通过Fiddler修改HTTP数据的特性,替换服务器发给我们的回包,等本地客户端调试通过以后再确认发布。说了一堆没用的,我们直接进入实战。

使用Fiddler修改网络响应包有两种操作:

  • 使用AutoResponder对回包进行重定向

  • 使用Willow插件管理重定向规则

这两种操作方法是一样的,都是对服务器返回的数据包(下面简称回包)进行规则的设置,使得回包被替换成我们指定的文件。不过Willow插件用起来比较方便,所以我们一般都会安装Willow插件。

现在我们以Willow插件为例介绍这个非常好用的回包替换功能,我这里安装的是1.4版的Willow,支持Fiddler4.0版本。安装了Willow插件的Fiddler,在右侧的网络数据解析界面上会多出一个Willow标签菜单,如下图所示。

从图上看出,Willow的图标是一个小树,当回包重定向功能开启时,这颗小树会变成绿色,普通状态下小树是灰色的。

在下面的列表中,Fiddler、Temp 1、unclenought等都是一个一个的Willow project,这些project对应的是一组一组的规则,这里我们添加一个unclenought的project。在Willow菜单内右键可以选择Add Project、Edit Project以及Add Rule等等。

其中我们最常用就是Add Rule功能了,通过这个我们可以设置一些规则,将回包进行重定向。右键选择Add Rule以后,我们在Match栏填写正则表达式来匹配网络请求,Action栏选择我们本地的一个文件来替换match栏对应的请求的回包,这里我选择了自己写的一个hello fiddler.html测试文件。记住,规则保存好了以后,必须勾选Willow菜单左上角的小勾,使得回包替换功能开启,确保Willow小树的图标变成了绿色的!

hello fiddler.html文件的代码如下:

此时我们在打开手机浏览器输入m.baidu.com以后,不会再看到正常的百度首页,而是本地文件的hello fiddler.html测试页面了。

再回到Fiddler左侧的流量包界面,我们可以看到命中的数据包被标注为黄色了。因此我们判断自己定义的规则是否生效,可以看看数据包是不是被标为黄色了。此外由于,Fiddler回包替换的规则支持正则表达式,所以有时写的规则不一定是完全正确的,大家要多检查下rule中设置规则。

此外Fiddler还支持修改Host的功能,通过Willow插件可以一键修改,方法也是在Willow菜单下,右键点选一个project,选择Add Host,填写需要替换domain和ip地址即可。关于Fiddler的基本使用就介绍这些,至于断点调试等等,以后有机会再补充!

手机调试 fiddler的更多相关文章

  1. 手机通过fiddler调试页面

    fiddler设置 首先我们打开Fiddler->Tools->Fiddler Options在Connection面板里将Allow remote computers to connec ...

  2. Ubuntu杂记——Ubuntu下以USB方式连接Android手机调试

    在Ubuntu下进行Android开发,发现自己的手机就算打开USB连接.USB调试还是连不上,一直都是显示??????.百度了很多,发现都是要改“ /etc/udev/rules.d/50-andr ...

  3. adb链接手机调试android应用

    adb链接手机调试android应用 hulk@hulk-Lenovo:~$ adb devices List of devices attached  ???????????? no permiss ...

  4. 手机连接fiddler之后,安装证书的方法

    1. 手机设置锁屏密码2. 手机连接fiddler测试网络3. 手机访问    电脑IP:fiddler设置的端口号4. 点击页面中的链接,下载并安装证书,随意命名即可 (还不清楚证书有啥用,先记录下 ...

  5. Mac eclipse 连接 手机调试

    Mac eclipse 连接 手机调试 更新:2014-11-10 20:13 1 2 3 4 5 6 分步阅读 很多Android程序员 用Mac 来开发.但是Mac下eclipse连接 手机存在一 ...

  6. 关于 Android Studio 如何连接手机调试

    第一步:设置-> 打开开发者选项,以及USB调试模式 第二步:关于手机->版本号,点击版本号会弹出提示:已经处于开发者模式,无需操作 第三步:设置->在搜索框中输入HDB,此时会弹出 ...

  7. cordova应用使用手机调试

    对于cordova应用的调试,最方便调试方式还是作为h5应用在浏览器来调试,调试好了再打包cordova应用和打包apk.然而h5应用时的效果跟最终在安卓手机运行还有少数情况会不一样,因此,也需要有能 ...

  8. Fiddler抓包工具使用指南|手机安装Fiddler的安全证书

    Fiddler 4 1.设置: Tools ->  Telerik Fiddler Options 勾选远程 手机安装证书 ->使用Android手机的浏览器打开:http://10.2. ...

  9. 手机设置Fiddler代理后无法访问Https网络的解决办法

    第一种方法: 首先,下载最新版本的Fiddler,将手机和PC设置为统一局域网(手机链接PC的wifi) 打开手机设置-无线网络设置,设置代理为手动,输入pc的ip和Fillder的端口8888(Fi ...

随机推荐

  1. rpm和yum的区别

    rpm 只能安装已经下载到本地机器上的rpm 包, yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的.

  2. 安全测试4_客户端的安全漏洞(XSS、CSRF、点击劫持、URL跳转)

    那个fanh前面学习的都是基础,现在开始正式学习下安全的知识,这一章主要讲解客户端常见的安全漏洞. 看到这个不错,给大家记一下: 1.常见的安全事件: 2.XSS(跨站脚本),英文全称:Cross S ...

  3. Java压缩图片的实现类

    package com.function; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; ...

  4. 自写UiAutomator 调试类

    package sms_test; import java.lang.*; import java.util.ArrayList; import java.util.Collection; impor ...

  5. [Unity插件]Lua行为树(八):行为节点扩展

    先看一下之前的行为节点是怎么设计的: BTAction.lua BTAction = BTTask:New(); local this = BTAction; this.taskType = BTTa ...

  6. 二级VB备考中

    今天安装了一个VB软件,二级备考中,每天一套牌卷子. 在Html5中 align 与valign改变了属性 vertial-align  是垂直方向的改变 面对网站首页的建立需要首先画好一份区域设计图 ...

  7. JavaScript实现图片裁剪预览效果~(第一个小玩具)

    感觉开始学习的前一个月真的太不珍惜慕课网的资源了  上面蛮多小玩意真的蛮适合我这样刚入门JavaScript的同学加深使用理解 大概收藏了百来门或大或小的课程  有一个感觉就是学这个真的比光是看书看概 ...

  8. canal 配置

    参考:https://www.2cto.com/database/201609/547661.html Spring配置 spring配置的原理是将整个配置抽象为两部分: xxxx-instance. ...

  9. redistemplate优雅地操作redis redis 工具类

    参考:https://www.cnblogs.com/superfj/p/9232482.html redis 工具类 package com.service; import org.springfr ...

  10. SqlDataSource.FilterExpression Property

    SqlDataSource.FilterExpression Property 定义 命名空间: System.Web.UI.WebControls Assembly: System.Web.dll ...