你好,我是悦创。
抓包软件名称 | 支持的操作系统 | 使用平台 | 调试难易程度 | 软件功能程度 |
---|---|---|---|---|
Fiddler | Windows/Linux | 网页端、APP 端 | 一般 | 多 |
Mitmproxy | Windows/Mac/Linux | 网页端、APP 端 | 一般 | 多 |
Packet Capture | 安卓 | APP 端 | 简单 | 少 |
本章我将带大家学习 Fiddler 抓包软件的安装以及介绍,本章我将给大家介绍三款抓包工具,主要有:Windows 平台下的 Fiddler、Linux 平台下的 Mitmproxy、安卓平台的 Packet Capture,本节主要跟大家介绍一下,Fiddler。
1. 三款抓包软件的简单对比
首先,我们也是先来对比一下这三款抓包软件,第一个 Fiddler 支持 Windows 和 Linux 操作系统,在本专栏我们的主要操作环境是在 Windows 操作环境里面。
Fiddler 适用的平台是网页端和 APP 端,也就是说 Fiddler 既可以抓网页端的数据也可以抓手机端的数据,调试的难易程度相对来说也不是很难,属于一般的难度,软件支持操作(功能)的功能较多。
Fiddler:小提琴,用在MAC上面不方便,最早他是用来监测服务器数据的
第二个就是 Mitmproxy 虽然可以支持 Windows、Mac、Linux 三种平台,这里我们业主要用在 Linux 平台里面。**但是,**本章我们将把它装到 Windows 系统里面,它同样支持抓取网页端数据也可以抓 APP 端的数据,调试的难易程度也是和 Fiddler 的难易程度一样,属于一般难度,软件支持的操作(功能)也是比较多的。
第三个 Packet Capture 属于 APK 包,也就是安卓上面的一个 APP ,我们可以装在安卓操作系统上,仅适用 APP 端,也就是说只能抓取 APP 端的应用数据,调试的难易程度也比较简单,点几下就可以抓取到了,软件支持的操作(功能)少。
前两款抓包工具是我们最常用的,软件功能比较多,可以设置断点、可以处理接收或发送出去的数据等等功能,尤其是 Mitmproxy ,这款 Mitmproxy 包含另外两个组件,一个叫 mitmdump
,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本(也可以进行数据抓取的工作),实现监听后的处理;这个 mitmdump 我们即可以安装在 Windows 平台上也可以安装在 Linux 平台上。
另一个是 mitmweb
,它是一个Web 程序,通过它以清楚地观察到 mitmproxy 捕获的请求。(跟 charles 差不多)
补充:
mitmproxy
是一个支持 HTTP 和 HTTPS 的抓包程序, 类似 Fiddle、Charles , 只不过它通过 CMD 的形式操作。
2. Fiddler 抓包软件介绍
2.1 前言
Fiddler是一个很好用的用 c# 编写的 HTTP 网络抓包工具,使用它的话,我们就不必再浏览器的开发者工具里分析页面了,可以在更加专业和智能化的 Fiddler 里面对页面参数进行请求调试。
我们的 Fiddler 是一款 Web 调试代理平台,可以监控和修改 Web 数据流,本身是一款免费开源的不管是开发人员还是测试人员都可以帮助用户查看数据流。
我们可以看一下上图(图一)我们的 Fiddler 在我们的用户(客户端)和 Web 服务器的中间,作为一个代理中间件存在,它可以捕获客户端发起的请求并进行转发,服务器收到 Fiddler 转发的请求之后进行一个相应(response)Fiddler 再一次的捕获到返回的数据,再一次的转发给客户端。通过如上的描述,我们可以知道 Fiddler 在中间也就是个中间人那么我们可以通过这个中间人来进行捕获所有的数据,并且进行修改,我们抓取 APP 包的方法也是基于此原理的。
2.2 功能强大
- Fiddler 的功能非常强大,它支持 IE、Chrome、Safari、Firefox 和 Opera 等浏览器,针对这些浏览器,它可以更加具体的展现出表示层的数据是如何传递的,展示出数据的格式,语言类型,传送方式缓存机制以及连接方式等等。
- 可以在 iPhone、iPad 等移动设备上进行连接抓取。
对于 Fiddler 的优缺点我们要进行一些了解:
1. 优点
- 它的优点是可以查看所有浏览器、客户端应用或服务器之间的 Web 数据流;
- 可以手动或自动修改任意的请求和响应;
- 可以解密 HTTPS 数据流以便查看和修改;
- 修改请求的数据,甚至可以实现请求自动重定向,从而修改服务器返回的数据。
2. 缺点
- Fiddler 只支持 Http、Https、ftp、Websocket 数据流等相关的协议;
- 无法监测或修改其他数据(也就是它不支持的数据类型),如:SMTP、POP3 等;
- Fiddler 无法处理请求和响应超过 2GB 的数据。
3. Fiddler 软件下载
接下来,我们来看一下 Fiddler 软件的下载和安装。我们可以直接通过该地址:https://www.telerik.com/fiddler 来访问它的下载界面,界面如下所示(图二):
点之后,就会出现如下界面(图三)需要我们填写信息,如果不知道 填什么,可以按我的图片填写即可,邮箱填你自己的:
点击之后他就会自动开始下载了。
4. Fiddler 安装
下载完成之后,我就要进行安装了。安装起来也是非常的简单,基本上就一直点击下一步就可以了。这里要注意的是 Fiddler 安装之后是不创建快捷方式的,所以可以自定义安装路径方便你之后的查找和运行。当然在开始 当中也是可以看见的。
为了方便同学们安装,我将 Fiddler 安装录成了视频,同学们可以点击下面连接进行观看:
第一次启动有可能会出现如下信息(图四),点击否即可。
正常运行的界面如下(图五):
5. Fiddler
5.1 基础介绍
Fiddler一旦启动就会自动开始工作,我们此时打开浏览器随便点击几个页面就可看到 Fiddler 抓取了许多网络包。(图六-1)
5.2 软件基本界面
接下来我们来进一步解析一些 Fiddler。
Fiddler 每个部分的名称已经在上图(图六),最上面是我们的工具栏,左边是我们的会话列表,左下是命令行工具,右边 HTTP request(图上我 request 多打了一个 s 抱歉),右下也就是 HTTP response。
- 左下角的 Captuing 是 Fiddler 控制抓取的开关。
- 会话列表:也就是我们抓到的数据都会在会话列表显示;
- 命令行工具:我们可以进行一些过滤等操作,我们可以直接在命令里面输入
help
就会自动弹出一个页面,更多信息或者命令行命令可以从跳出的这个页面了解。 - HTTP request:也就是我们 http 的请求信息,里面包含请求方法、http 协议、请求头(user-agent)等等;
- HTTP response:也就服务器给我们返回的信息;
我们继续往下看这张图(图六-3):
- [#] Request 顺序
- [result] HTTP 状态码
- [protocol] 请求使用协议
- [Host] 请求地址域名
- [URL] 统一资源定位符,请求的地址
- [Body] 请求大小 byte
- [Caching] 缓存控制
- [Context-Type] 请求响应类型
- [Process] 发出请求的进程名称
- [Comments] 用户添加的备注
- [Custom]用户设置的自定义值
5.3 Fiddler 模拟场景
在 Ruels 里面可以模拟各种场景:
- 请求之前进行登陆验证;
- 对网页进行压缩,测试性能;
- 模拟不同客户端的请求;
- 模拟不同网速不同情况,测试页面容错性;
- 禁用缓存,方便调试服务器静态资源;
- Hide Image Request :隐藏图像请求(我一般开启);
- Hide CONNECTs:把我们的 TCP/IP 握手过滤掉,因为我们不需要看它三次握手三次挥手(我一般开启);
- Apply GZIP Encoding:开启页面压缩,也就是说服务器不用一次性传输很多数据,就类似在电脑上压缩文件来节约空间一样,目的是把页面压缩以达到更好的性能;
5.4 查看请求内容
随意双击左侧的一个网络包,右侧的 inspectors 里就可以查看请求内容,与浏览器开发者选项卡中的内容相同。(图七)
5.5 对于HTTPS网站的信息我们是无法查看的
我可以看到下面图的黄色提示(图八),别急接下来会讲到的。
5.5 设置
那上面所说的一些基本界面中的信息它不难,那难在哪里呢?
答:难在如何进行一个设置
那接下来我们来一起设置一下我们的 Fiddler 让它可以抓取我们的浏览器数据的数据包,后面会给同学们讲解 App 的数据包。
5.5.1 设置抓取浏览器的数据包——HTTPS 选项卡
接下来,我继续往下设置,也还是在 Tools 里面的 Options ,我们可以看到有很多的选项卡如下图(图八-2):
我们不仅要抓取 HTTP 的数据包,也还要抓取 HTTPS 的数据,相同手机 APP 上也是有 HTTP 和 HTTPS。所以这里我们需要它解密 HTTPS 数据流量,这里也顺便解决上面提到无法抓取 HTTPS 的问题。
所以,我们可以通过伪造 CA 证书来欺骗浏览器和服务器,从而实现 HTTPS 解密,就是把 Fiddler 伪装成为一个 HTTPS 服务器,在真正的 HTTPS 服务器面前 Fiddler 又伪装成浏览器(其实也就是在中间,不清楚的可以看上面的图一)。
我们先点击工具栏中的 Tools,然后点击 Options,如下图(图九):
接下来点开 HTTPS 选项卡,勾选 Decrypt HTTPS 如下图所示(图十):
全部选是,之后再次访问HTTPS网站就可以抓包查看了。上图(图十)的图十的提示就是我们要安装一个 CA 证书,不过这个证书是 Fiddler 自己的证书,我们选是即可,在这里 Fiddler 其实扮演的就是中间人***。
虽然上面提到了,那为了让大家更清晰,我这里再提一下:大家可以看上图(图十一) 理解一下,也就是我们客户端发出去的请求会由我们的 Fiddler (中间人)来捕获,由 Fiddler 的证书来进行解密,解密完成之后再由 Fiddler 的证书进行加密然后转发到服务器上面。服务器再将所请求的数据返回(加密过的),Fiddler 接收到数据之后再进行解密,解密完成之后再发数据返回给客户端(明文数据)。这也就是我们 Fiddler 在中间做的一个中间人操作。
我接下来可以看见,在 Decrypt HTTPS 下面还有一个选项,如下图(图十二):
这是让你选择抓取的对象:
- …from all processes:抓取所有的进程;
- …from browsers only:仅抓取浏览器;(这里为了方便小白入门以免抓取到其请求的信息,我们先选择“仅抓取浏览器进程”)
- …from non-browsers noly:抓取除浏览器进程之外的数据;
- …from remote clients only:仅抓取远程客户端;(当我们抓取 App 数据端的时候,就可以选择该选项)
最终我们在 HTTPS 选项卡中设置的最终版如下图所示(图十三):
5.5.2 Connections 选项卡
接下来,我们来设置一下 Connections 选项卡,点击 Connections 选项卡之后,界面如下(图十四):
这里需要设置 Fiddler 设置端口号(Fiddler listens on port)一般这里的端口号都可以设置只要不是系统的端口号冲突即可。这里,我一般设置成 8889,当然默认也是可以的。并且你也要勾选允许远程电脑进行连接(Allow remote computers to connect)如果你不勾选你的手机是连不到 Fiddler 的,也就是说你的抓包工具是抓不到你手机上的数据包的。
当你点击(Allow remote computers to connect)的时候,会弹出如下提示框(图十五):
点击确定即可,然后点击“ok”即可,操作如下动图(图十六):
截止这里,就已经设置好了,我们就可以抓取浏览器的数据了。
6. 简单操作 Fiddler
6.1 清空会话列表中的信息
方法有两种,第一种是下图的操作方法,先全选(Control + A)然后鼠标右键,选择“remove”>>> “All Sessions”即可。具体操作看下图(图十七):
第二种方法,直接上动图(图十八):
6.2 设置浏览器代理
上面我们简单的配置了一下 Fiddler 接下来需要配置一下我们的浏览器,使我们的浏览器通过代理来访问互联网,那我们应该如何设置呢?
这里我们需要用到 Chrome 上的一个插件,名称叫做:Proxy SwitchyOmega 这里需要到谷歌应用商店,链接:https://chrome.google.com/webstore/category/extensions?hl=zh-CN,然后输入:Proxy SwitchyOmega 即可添加该扩展程序,但考虑到大部分人不支持“*”这里提供三个链接下载:
操作视频:https://www.aiyc.top/archives/450.html
推荐下载地址:https://www.aiyc.top/archives/450.html
s随便选择一个下载地址下载即可,安装也很简单可以直接拖拽到浏览器即可安装。一般安装成功后,都会出现在下图位置(图十九):
点击上图的红色方框里面的插件,就会出现下图所示(图二十):
点击”选项“之后就会出现如下页面(图二十一):
点击“新建情景模式”之后你会看见如下界面(图二十二):
配置信息可参考如下图片填写,然后点击创建即可(图二十三):
点击创建之后,你会看到如下界面(图二十四):
接下来,我们来进一步设置,代理协议选择 HTTP
代理服务器填写 127.0.0.1
代理端口就是上面设置 Fiddler 时设置的端口,这里我设置的是 8889
,所以填的也就是 8889
,下图已经给出(图二十五):
记得修改完成之后点击“应用选项”否则你这个情景模式是无法保存的。接下来我们就可以把浏览器改成 Fiddler 的情景模式,也就是说我们可以通过 Fiddler 来抓取数据了。操作如下动图(图二十六):
以上就是配置好了,不过这里要注意的是,我们配置完成之后要重新启动一下 Fiddler 不然会显示未连接到互联网如下图(图二十七):
重启应用之后,我们可以把 Fiddler 会话列表清空,然后访问:https://www.aiyc.top/ 操作如下图(图二十八):
从上面的操作可以看到,我们成功抓取到了数据,那如何看里面的信息呢?
我们直接点击相应的数据即可,操作如下动图(图二十九):
上面我们选择 Inspectors
然后点击 Headers
我们一般使用 Raw
查看,我们还可以查看一下我网站返回的数据,操作如下动图(图三十):
之后会给大家讲解如何设置抓取 App 的手机的数据包,那这里还有一个要设置的,不过在讲如何设置之前,我们来看看为什么要设置,这里我们也是 先清空会话列表,请求百度网址,并查看返回的数据,操作如下动图(图三十一):
我们可以看见,给我返回的数据是乱码,如下图(图三十二):
那该如何解决呢?
方法一点击如下图位置的提示即可解决(图三十三):
不过,方法一的话,每次遇见乱码都得再点以次,这样显然不是我们想要的,我们可以再进行一步设置,如下图设置(图三十四):
这样就可以解决了。
6.3 自定义请求发送
在右边的 Composer 选项卡中,我们可以自定义请求,手动写一个,也可以从左边的会话中拖拽一个过去。
我们只需要编写简单的URL,当然还可以定制一些 user-agent
7. 总结
今天这章就讲到这,希望同学们下去配置一下 Fiddler 并熟悉一下 Fiddler 的操作,我们下节课再见,记得按时来上课噢!