Fiddler抓包(Android app)

简述:

在开发android app的时候,会涉及到与后端的交互,比如在触发事件后,后台有没有返回数据,向后台提交数据有没有成功。
举个例子:

测试登陆app界面的时候。输入用户名与密码。提交的时候,就需要向后端请求结果,后端会根据用户名和密码去查询数据库,如果正确,就返回一个true,就可以正确跳转到下一个activity.如果为false,就向用户显示密码或用户名错误。

在这个过程,就需要知道,点击按钮的时,手机app是否向后端发送了数据,发送数据成功,后端有没有回传一条数据,此时就需要用到抓包工具。
这里将介绍Fiddler抓包工具。

Fiddler可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全



1、下载安装 Fiddler


1 > 官网下载地址:Fiddler

2 > 百度搜索Fiddler下载

3 > 下载完成后,进行傻瓜式安装便可


2、配置 Fiddler电脑端


Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。

Fiddler通过伪造CA证书来欺骗浏览器和服务器。

1 > 启动Fiddler,开始设置

点击“Tools” -> “Fiddler Options”-> “HTTP

选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求




2 >点击“Tools” -> “Fiddler Options” -> “Connections

选中"Allow remote computers to connect".  是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来




记住端口号是:8888

电脑端配置完毕,重启Fiddler


3、配置 Android手机端


1 > 获取PC端IP地址,输入“ipconfig”回车即可。本人电脑是双IP,这里取其中一个IP:192.168.211.84




这时便获得PC的IP和端口了

2 > 确定手机端与电脑端必须连接在同一个局域网下,即手机与电脑须同时连接一个路由器。

进入手机的“设置”->“WLAN”->选择连接到的无线网,长按弹出选项框,选择修改网络配置。

选择显示高级选项,将代理设置成手动,将上面获取到的ip地址端口号填入,点击确定。





4、下载Fiddler的安全证书


在Android手机的浏览器输入:代理服务器主机名:代理服务器端口,这里是http://192.168.211.84:8888, 点"FiddlerRoot certificate" 然后安装证书,如图:





现在你可以在fiddler上对手机app进行抓包

此时你会发现fiddler抓取的数据包包括了电脑端和手机端的,而手机端的又包括了不同app的数据包。此时就需要过滤了。

稍后,会详细介绍如何过滤。


5、Fiddler字段说明


Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> “Capture Traffic。开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。




Fiddler开始工作了,抓到的数据包就会显示在列表里面,下面总结了这些都是什么意思:





名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值



图标

含义

clip_image001[13]

请求已经发往服务器

clip_image002[4]

已从服务器下载响应结果

clip_image003[4]

请求从断点处暂停

clip_image004[4]

响应从断点处暂停

clip_image005[4]

请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body)

clip_image006[4]

请求使用 HTTP 的 POST 方法

clip_image007[4]

请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道,

clip_image008[4]

响应是 HTML 格式,

clip_image009[4]

响应是一张图片,

clip_image010[4]

响应是脚本格式,

clip_image011[4]

响应是 CSS 格式,

clip_image012[4]

响应是 XML 格式,

clip_image013[4]

响应是 JSON 格式

clip_image014[4]

响应是一个音频文件

clip_image015[4]

响应是一个视频文件

clip_image016[4]

响应是一个 SilverLight

clip_image017[4]

响应是一个 FLASH

clip_image018[4]

响应是一个字体

clip_image019[4]

普通响应成功,

clip_image020[4]

响应是 HTTP/300、301、302、303 或 307 重定向

clip_image021[4]

响应是 HTTP/304(无变更):使用缓存文件

clip_image022[4]

响应需要客户端证书验证

clip_image023[4]

服务端错误

clip_image0244

会话被客户端、Fiddler 或者服务端终止,


  


6、Statistics 请求的性能数据分析


随意点击一个请求,就可以看到Statistics关于HTTP请求的性能以及数据分析了





7、Inspectors 查看数据内容


Inspectors是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容。





8、AutoResponder 允许拦截指定规则的请求


AutoResponder允许你拦截指定规则的求情,并返回本地资源或Fiddler资源,从而代替服务器响应。

1 > 字符串匹配(默认)

只要包含指定字符串(不区分大小写),全部认为是匹配。


字符串匹配(baidu) 是否匹配
http://www.baidu.com 匹配
http://pan.baidu.com 匹配
http://tieba.baidu.com 匹配


2 > 正则表达式匹配

以“regex:”开头,使用正则表达式来匹配,这个是区分大小写


字符串匹配(regex:.+.(jpg | gif | bmp ) $) 是否匹配
http://bbs.fishc.com/Path1/query=foo.bmp&bar 不匹配
http://bbs.fishc.com/Path1/query=example.gif 匹配
http://bbs.fishc.com/Path1/query=example.bmp 匹配
http://bbs.fishc.com/Path1/query=example.Gif 不匹配



9、Composer 自定义请求发送服务器


Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求
Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)


10、Filters 请求过滤规则


Fiters是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求。

1 > 勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host

Zone 指定只显示内网(Intranet)或互联网(Internet)的内容。

Host 指定显示某个域名下的会话


2  >例如,前面提到的想获取手机App的的包

在"show only if URL contains"里面输入你开发app与后端请求数据时后端的ip地址和端口号。此时就可以得到你想要的包了。




11、Timeline 请求响应时间


在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间




12、Fiddler 内置命令与断点


FIddler断点功能就是将请求截获下来,但是不发送,这个时候你可以干很多事情,比如说,把包改了,再发送给服务器君。






参考:

Fiddler抓包工具总结