美文网首页
Charles抓包工具简介

Charles抓包工具简介

作者: 栗子_2019 | 来源:发表于2019-03-07 09:04 被阅读0次

    1、工具介绍

    Charles是一款在Mac下常用的数据包截取工具,在做移动开发时,为了调试移动端与服务端的网络通讯协议,常常需要截取网络数据包来进行分析。

    Charles主要功能包括:

    截取Http和HTTPS网络封包;

    支持重发网络请求,方便后端调试;

    支持修改网络请求参数;

    支持网络请求的捕获并动态修改;

    支持模拟慢速网络。

    Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

    Fiddler的功能非常多,在实际使用过程中,经常用到的功能其实就那么几项,所有说fiddler有点大材小用,相反Charles界面简洁,这也是我一接触就抛弃fiddler的原因。

    2、菜单功能介绍

    首先来看下界面,包括两种视图模式(Structure + Sequence),如下图:

    Structure模式

    Sequence模式

    包括6个主菜单,分别为:File、Edit、View、Proxy、Tools、Window。

    2.1、File菜单介绍

    该菜单下包括如下功能:

    New Session:开启一个新会话,可以新建一个会话页面,这样就能在不同的会话页面抓取不同页面的数据包了。

    Open Session:打开保存的会话文件

    Clear Session:清除会话内容,会清空已经抓取到的数据包

    CloseSession:关闭会话

    Save Session:保存会话

    Save Session As:会话另存

    Import:导入会话信息

    Export Session:导出会话信息

    与Fiddler对比:在fiddler中新建会话会再启动一个客户端,Charles则相对来说更加方便。

    2.2、Edit菜单介绍

    该菜单下包括如下功能:

    Cut:剪切-对选中的请求执行剪切操作

    Copy:复制-对选中的请求执行复制操作

    Paste:粘贴-对剪切的请求执行粘贴操作

    Select All:选中当前会话页面的所有请求

    Find:可以在制定的范围内查找关键字内容

    Preferences:界面样式及字体等设置

    2.3、View菜单介绍

    该菜单下包括如下功能:

    Structure:工具介绍一章中介绍的两种视图模式,按访问的域名分类

    Sequence:工具介绍一章中介绍的两种视图模式,按访问的时间排序

    Overview:HTTP/HTTPS请求的概要信息

    Request:请求的详细内容

    Response:服务端根据请求返回的数据内容

    Summary:汇总请求包括哪些资源,耗时及数据包大小信息

    chart:请求包括的资源耗时分析

    Notes:日志信息

    View Request As:以怎样的方式查看请求

    View Response As:以怎样的方式查看服务端返回的内容

    后续的菜单一般很少用到,这里不再列举

    2.4、Proxy菜单介绍

    Start Recording:结合Recording Settings使用,捕获的开关;

    Start Throttling:结合Throttling Settings使用,模拟各种网络环境;

    Enable Breakpoints:结合Breakpoint Settings使用,启用断点;

    Recording Settings:监听设置,可以设置监控的目标主机名、协议、端口和关键字等信息;

    Throttling Settings:模拟各种网络环境,包括:3G、4G等场景;

    Breakpoint Settings:断点设置,有时候对于一些特殊请求在发往服务器之前想要修改一些参数,或者在服务器响应完成之后修改响应信息,此时可以使用Charles的断点功能;

    Reverse Proxies:反向代理功能,将发往目标端口的数据,发送到本地

    Port Forwarding:重定向功能,将发往本地端口到的数据,发到其他环境中

    Windows Proxy/Mozilla Firefox Proxy:设置为系统代理/设置为火狐浏览器代理

    Proxy Settings:代理的设置选项

    SSL Proxying Settings:抓取https数据包的设置

    Access Control Settings:设置抓取的目标IP的

    External Proxy Settings:把经过Charles的请求转到其他代理服务器(如fiddler),适用于特殊情况下需要用到两个软件的特点进行开发的时候;

    Web Interface Setting:在web页面访问Charles,用处不大

    2.5、Tools菜单介绍

    该菜单下包括如下功能:

    No Caching:无缓存访问请求,接来下的都不再从缓存中读取

    Block Cookies:阻止发送和接收cookie,默认针对所有请求,也可以针对指定请求

    Map Remote:将指定的网络请求重定向到另外一个地址

    Map Local:将指定的网络请求重定向到本地的地址,将网络请求通过 Map Local 映射到了本地的一个经过修改的文件中;

    Rewrite:对某一类的网络请求进行一些正则替换,以达到修改结果的目的;

    Black List:黑名单列表,输入不想访问的地址等,

    White List:白名单列表,输入允许访问的地址等信息

    DNS Spoonfing:DNS 欺骗设置

    Compose/Compose New:手动构造请求

    Advanced Repeat:请求迭代次数的设置

    后面几项基本不用,不在列举

    2.6、Window菜单介绍

    该菜单下包括如下功能:

    Session*:切换会话窗口,如果有多个会话的话,这里就会显示多个会话列表

    Error Log:显示程序的错误日志

    Active Connections:显示处于未关闭状态的连接请求

    3、操作介绍

    3.1、过滤网络请求

    在抓包的时,通常会抓到大批量的数据包,后期不方便查看,这时候我们需要对网络请求进行过滤,有3种方法:

    在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如要查看”www.baidu.com”的数据包

    选择Proxy下的Recording Settings,填写要过滤的信息,如下图

    确定后,再访问页面时,”www.baidu.com”之外的数据包不会被抓取到。

    ③选中要过滤的某类请求,右键选中”Focus”,再在主界面上勾选”Focused”。

    3.2、抓取http的数据包

    选择“Proxy”下的“Proxy Settings”,在“Proxies”页面填写监听的端口号,勾选“Enable transparent HTTP proxying”,如下图:

    在手机网络设置里面填写代理服务地址信息

    确保手机和电脑在一个网段(连接同一个路由器),服务器中填写电脑的IP,端口就填写刚才页面的Port端口号,返回wifi列表页。

    设置好之后,我们打开手机上的任意需要网络通讯的程序,就可以看到 Charles 弹出请求连接的确认菜单(如下图所示),点击“Allow”即可完成设置。

    确定后就可以抓到手机app发给后台的数据包了。

    3.3、抓https的数据包

    如果需要截取分析Https协议相关的内容。那么需要安装Charles的CA证书。

    首先需要在电脑上安装根证书。选择”Help”>>”SSL Proxying”>>”Install Charles Root Certificate”,弹出证书的安装页面,如下图:

    点击“安装证书”,直接全选择“下一步”,可以看到提示“导入成功”,最后点确定关闭页面。

    接下来在手机上安装证书,点选择“Help”>>“SSL Proxying”>>“Install Charles Root Certificate on a Mobile Phone or Remote Browser”,按照弹出菜单将手机的代理设置为。

    提示中的IP地址和端口号,设置完成后用手机浏览器访问“http://chls.pro/ssl”即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。

    手机设置代理IP时,系统有可能出现如下提示信息:

    这里选择“Allow”,否则就无法抓取到数据包了。

    需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,试着抓包后发现还是加密的内容,选择“Proxy”>>“SSL Proxying Settings”>>“Add”,填写服务端地址和端口(443),确定后就可以抓取https数据包了。

    注意:

        通过工具可以抓包,是不是说https就是不安全的了呢,毕竟所有的请求对我们来说都是透明的呢。其实刚才的过程很重要的一点就是我们下载并且安装了Charles的根证书。而对https的安全来说,https安全的前提就是可信的根证书!!!!而之前的操作无疑是在我们系统里面安装了不可信的根证书。使得Charles对我们的通信造成了中间人攻击!。简单的说就是我们与服务器进行通信,会先获取服务器的证书,进行校验校验过程是用本地的可信根证书进行校验,而装入Charles的根证书后,Charles可以伪造证书,获取我们与服务器通信的秘钥,进行破解我们的通信。所以对我们我们系统来说安装证书是一个多么危险的操作!

    哐哐哐!!查水表!!!

    3.4、模拟慢速网络

    在调试代码的过程中,有时候要模拟各种各样的网络场景,目的是验证服务端能否正确的处理请求,应用的表现是否正常。而Charles对此需求做了很好的支持。选择“Proxy”>>“Throttle Setting”,弹出菜单中选择“Enable Throttling”同时可以指定主机的请求模拟慢速网络。

    支持的网络场景包括ADSL、3G、4G等。设置完毕后选择“Proxy”>>“Start Throttling”开始模拟场景。

    3.5、修改网络请求

    切换到Sequence模式,在需要修改的请求上右键,选择“Compose”后在下方就会新建一个请求,接着就可以修改请求的参数值了。

    3.6、简单压测操作

    在要选择的请求上右键,选择“Repeat Advanced”填写要重复执行的次数后,点击ok之后就会按照设置的次数进行重复访问了。

    3.7、Map重定向功能

    重定向功能包括Map Remote 和 Map Local两种。顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

    在 Charles 的菜单中,选择“Tools”->”Map Remote”或“Map Local” 即可进入到相应功能的设置页面。

    如下就是实现将测试环境的请求重定向到线上环境

    3.8、Breakpoints功能

    待续

    3.9、反向代理功能

    Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(test.deji.com)的8080端口上了。这样当我访问本地的 61234 端口时,实际返回的内容会由 test.deji.com 的 8080 端口提供。

    选择“Proxy”>>“Reverse Proxies”,弹出如下图:

    填写端口号和服务端的IP即可。

    相关文章

      网友评论

          本文标题:Charles抓包工具简介

          本文链接:https://www.haomeiwen.com/subject/oreqpqtx.html