-
2021-01-20 15:58:49
简介
Charles是一款常用的抓包工具,抓包工具可以截取通过它设置代理服务器下所有通过他发起与返回的网络请求,和fiddler、wireshark,原理是一样的
Charles主要功能
-
支持SSL代理。可以截取分析SSL的请求。
-
支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
-
支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
-
支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
-
支持重发网络请求,方便后端调试。
-
支持修改网络请求参数。
-
支持网络请求的截获并动态修改。
-
检查HTML,CSS和RSS内容是否符合W3C标准。
使用
抓取网络请求
一. 将Charles设置成系统代理
Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。
如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。Mac:
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成127.0.0.1:8888 也可达到相同效果
二. 截取移动设备上的网络请求包
我们在调试移动APP时,需要抓取APP发送的数据包,首先进行设置,Proxy -> Proxy Settings默认端口是8888,根据实际情况可修改。
查看本机IP地址:Help -> Local IP Addresses然后配置手机代理:
IOS和 Android 类似,以 IOS 举例
打开要调试的APP,请求就会先发送到Charles,然后验证是否允许访问。
三. 抓取 HTTPS 请求包
默认我们是看不到https的请求数据的。我们需要安装证书。
包括服务端证书和客户端证书安装代理服务器-服务端整数
双击打开Charles Proxy CA安装客户端证书
手机配置完代理(必须的操作)后,浏览器打开http://chls.pro/ssl
然后配置Proxy -> SSL Proxying Settings… 添加要抓取的https请求
更多相关内容 -
-
charles使用教程
2022-04-14 14:51:51安装 Charles 去 Charles 的官方网站(http://www.charlesproxy.com)下载...之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。 启动 Char安装 Charles
去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下即完成安装。
破解版下载链接:http://charles.iiilab.com/。
将 Charles 设置成系统代理
之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。
启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” –> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:
之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。
Charles 主界面介绍
过滤网络请求
通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:
方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com , 那么只需要在 Filter 栏中填入 yuantiku 即可。
方法二:在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:
通常情况下,我们使用方法一做一些临时性的封包过滤,使用方法二做一些经常性的封包过滤。
方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
这种方式可以临时性的,快速地过滤出一些没有通过关键字的一类网络请求。
截取 iPhone 上的网络封包
Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。
Charles 上的设置
要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
iPhone 上的设置
首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”–>“Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:
在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:
设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。
截取 Https 通讯信息
安装证书
如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的 CA 证书。具体步骤如下。
首先我们需要在 Mac 电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。如下图所示:
需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择 SSL proxy,如下图所示:
这样,对于该 Host 的所有 SSL 请求可以被截取到了。
截取移动设备中的 Https 通讯信息
如果我们需要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:
按照我们之前说的教程,在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项。
模拟慢速网络
在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。
在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
修改网络请求内容
有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求。如下所示:
我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:
给服务器做压力测试
我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。
我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:
接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。
悄悄说一句,一些写得很弱的投票网站,也可以用这个办法来快速投票。当然,我也拿 Charles 的 Repeat 功能给一些诈骗的钓鱼网站喂了不少垃圾数据,上次不小心还把一个钓鱼网站的数据库打挂了,嗯,请叫我雷锋。
修改服务器返回内容
有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。
根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:
Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
Rewrite 功能适合对网络请求进行一些正则替换。
Breakpoints 功能适合做一些临时性的修改。
Map 功能
Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。
在 Charles 的菜单中,选择 “Tools”–>“Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。
对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。下图是一个示例,我将所有 ytk1.yuanku.ws(测试服务器)的请求重定向到了 www.yuantiku.com(线上服务器)。
对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
下图是一个示例,我将一个指定的网络请求通过 Map Local 功能映射到了本地的一个经过修改的文件中。
Rewrite 功能
Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。
例如,我们的客户端有一个 API 请求是获得用户昵称,而我当前的昵称是 “tangqiaoboy”,如下所示:
我们想试着直接修改网络返回值,将 tangqiaoboy 换成成 iosboy。于是我们启用 Rewrite 功能,然后设置如下的规则:
完成设置之后,我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 iosboy,如下图所示:
Breakpoints 功能
上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。
Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。
下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。
需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。
7. charles使用问题汇总
Charles是一款很好用的抓包修改工具,但是使用的时候肯定会遇到各种感觉很莫名其妙的问题,下面列出一些常见问题:
1 为什么下载后打不开?
因为charles是需要java环境才能运行的,需要先安装java环境才可以。
Java: http://www.java.com/zh_CN/
2 为什么用着用着就自动关闭了?大概30分钟就会关闭一次?
因为charles如果没有注册,每打次只能打开30分钟,然后自动关闭。
所以最好在使用前先按照说明去进行工具的注册操作。
3 为什么在操作的时候工具界面卡死,关不掉,只能用任务管理器才可以关掉?
这个是charles这个工具的一个bug,按照下面那样操作就可以解决:首先随便抓些包,要求有图片的请求。
然后选中一个图片的请求,分别点击 Response - Raw ,那里会加载其中的内容,加载完毕后做任何操作就不会有问题了。
4 为什么用了charles后,我就上不了网页了,但是qq可以。
因为如果charles是非正常状态下关闭的话,那么IE的代理就不会被自动取消,所以会导致这种情况。解决办法:
第一种:直接打开charles,然后再正常关闭即可。
第二种:去将IE浏览器代理位置的勾选去掉。
5 为什么我用charles不能抓到socket和https的数据呢?
首先,charles是不支持抓去socket数据的。
其次,如果抓不到https的数据的话,请查看你是不是没有勾选ssl功能。
最后,看下代理设置:Proxy - Proxy Settings - SSL 设置
6 为什么我用charles抓取手机APP,什么都是配置正确的,但是却抓不到数据。
首先,请确保电脑的防火墙是关闭状态,这个很重要。
如果,防火墙关了还是不行,那么请把手机wifi断掉后重新连接,这样一般就可以解决问题了。
如果以上方法还是不行的话,请检查手机wifi中Http Proxy:server是否为电脑ip, port 是否8888。
7 抓包后发现form中有些数据显示是乱码怎么办?
请在Raw模式下查看,Raw模式显示的是原始数据包,一般不会因为编码问题导致显示为乱码。
8 我用charles抓手机app的数据,但是同时也会抓去到电脑端的数据,可以设置吗?
点击状态栏 Proxy -> Mac OS X Proxy 、Mozilla Firefox Proxy 这两个勾选去掉,勾选表示接收电脑的数据抓包.
如果只想抓去APP的数据请求,可以不勾选此功能,减少其他信息干扰。
9 为什么我用IE可以抓到数据,但是用360或者谷歌浏览器就不行?
请确保360或者谷歌的代码设置中是不是勾选设置的是 使用IE代理。
10 想要复制粘贴某些数据的话,怎么办,右键没有相应功能啊?
请直接使用Ctrl +C 和 Ctrl+V 即可。 -
Charles使用教程
2021-05-13 10:41:19一、Charles教程 (一)Charles使用教程 Charles是一个HTTP代理/ HTTP监视器/反向代理,能够查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量。这包括请求,响应和HTTP标头(包含cookie和缓存信息) Charles...一、Charles教程
(一)Charles使用教程
Charles是一个HTTP代理/ HTTP监视器/反向代理,能够查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量。这包括请求,响应和HTTP标头(包含cookie和缓存信息)
Charles 是在 Mac /Windows下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议
推荐购买正版Charles
- Charles: 网络封包分析 开发者调试工具
- 购买正版Charles地址:数码荔枝商城
- 正版的优点:
- 可以使用账号登录,具有完美的用户体验,有问题可以直接发工单,不用心惊胆战的担心突然不能用了;
- 盗版因为不能用账号登录,一般数据也都是临时的,不能使用云相关的功能。
- 可以使用最新版的软件功能,整体体验非常好;
- 不到200块的价格,购买Charles后,一次购买,终身使用,非常的实惠。
Charles 相关
如果您有前端测试的需求,推荐 SwitchHosts 这个小工具,当然您如果对 chrome 浏览器的在线改 host 感兴趣,也可以用下 Host Switch Plus
Charles 和 windows 下的 Fiddler 都是同性质的代理抓包工具;
我常借用 Charles 做这些事情
- 抓取 Http 和 Https 的请求和响应,抓包是最常用的了。
- 重发网络请求,方便后端调试,复杂和特殊情况下的一件重发还是非常爽的(捕获的记录,直接 repeat 就可以了,如果想修改还可以修改)。
- 修改网络请求参数(客户端向服务器发送的时候,可以修改后再转发出去)。
- 网络请求的截获和动态修改。
- 支持模拟慢速网络,主要是模仿手机上的 2G/3G/4G 的访问流程。
- 支持本地映射和远程映射,比如你可以把线上资源映射到本地某个文件夹下,这样可以方面的处理一些特殊情况下的 bug 和线上调试(网络的 css,js 等资源用的是本地代码,这些你可以本地随便修改,数据之类的都是线上的环境,方面在线调试);
- 可以抓手机端访问的资源(如果是配置 HOST 的环境,手机可以借用 host 配置进入测试环境)
charles 相当于一个插在服务器和客户端之间的“过滤器”
当客户端向服务器发起请求的时候,先到 charles 进行过滤,然后 charles 在把最终的数据发送给服务器;
注意:此时 charles 发给服务器的数据,不一定是客户端请求的数据;charles 在接到客户端的请求时可以自由的修改数据,甚至可以直接 Block 客户端发的请求;
服务器接收请求后的返回数据,也会先到 charles,经过 charles 过滤后再发给客户端;
同理:客户端接收的数据,不一定就是服务器返回的数据,而是 charles 给的数据。
注意问题
如果想要抓包,第一件事情,就是把 charles 设置成为本机和服务端之间的”过滤器”;
让所有的网络请求全部经过 charles,这样就可以捕获并记录到你请求的内容和返回数据了,原理请参照上面那张图片;需要注意的是,如果你访问的是 web,可以把所有请求抓到;
但如果你想抓某些应用(比如手机上的应用等),应用使用的某些资源,如果没有向服务器发送请求,而是通过调用内部资源的方式进行展现,那么此时 charles 是抓不到的;验证这个的方式很简单,就是把网络断掉后,如果还可以继续展现,就是属于调用内部资源的,这种时候就不要想着通过抓包工具来捕获资源了,他都没有像服务器发起请求,手机点烂也抓不到的。
第一次启动 Charles
启动 Charles 后,第一次 Charles 会询问你是否把 Charles 设置为系统的代理,如果此时你忽略了这个询问敞口,你可以在后期设置的;将 Charles 设置成系统代理:选择菜单中的 “Proxy” -> “Mac OS X Proxy/windows proxy” 来将 Charles 设置成系统代理,参考如下,如果 Mac 下有管理密码,需要输入密码后方可进行。
(二)Charles官网
请认准 charles 唯一官网 : www.charlesproxy.com
(三)Charles下载&安装
Charles下载地址:https://www.charlesproxy.com/latest-release/download.do
根据不同的系统,选择对应的链接下载
Charles安装
window安装,Charles下载后,打开安装程序,按照提示一路下一步,就可以安装成功了
(四)Charles破解
软件开发不易,请尽量支持 Charles 正版!推荐购买正版Charles
Charles 破解原理一:文件覆盖
Charles 4.X.X
- 下载Charles v4.X.X 并安装 Charles 下载
- 安装后先打开 Charles 一次(Windows 版可以忽略此步骤)
- 下载破解文件
charles.jar
- 替换掉原文件夹里的charles.jar
- MAC,选择 Charles, 选择显示包内容;找到 /Java/charles.jar 所在的目录,把破解文件覆盖即可
- windows 系统;\lib 下面的 charles.jar,把破解文件覆盖即可
- 完成!
Charles 破解原理二:注册码进行注册
在
Help窗口
内选择Register Charles
。Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
这是属于注册码进行注册的方式。
// 适用于Charles任意版本的注册码。
// Charles 4.2目前是最新版,可用。
(五)Charles抓包配置
proxy setting(代理设置)
设置的主界面如下:
动态端口
启用动态端口选项来监听动态端口,每次查询启动时选择。这样可以避免与计算机上可能运行的其他网络服务的冲突,包括Charles的其他实例(如果是共享计算机)如果你开的端口很多,搞到你自己都记不清楚了,那么推荐你用这个;但是我都是写好一个端口的,比如代理写8888,别的就不会监听这个端口了,而且为了手机方便连接,都是使用指定好的端口。
注意;如果你charles设置了8888的端口,别的服务就不能再使用这个端口号了,否则冲突会发生意外的错误。
透明的HTTP代理
透明代理使Charles能够支持不支持HTTP代理服务器的客户端,或者不知道他们正在使用HTTP代理服务器,例如TCP / IP连接由路由器或防火墙重定向到Charles。这里可以被手机连接;
手机连接的时候,http代理那里写=选手动,并填写此时charles的本机地址和上面设置的8888端口即可。
options 里 主要是设置 绕过代理
这里可以设置您的浏览器/操作系统遇到哪些域名的时候,使用默认而不用Charles;配置的列表使用空格或逗号分隔,并在Charles配置其代理设置时注入浏览器。
(六)Charles 设置HTTPS代理抓包方法及原理
PC设置https代理抓包
第一步:电脑端安装 Charles 的 CA 证书(必须)
1、在Charles的菜单栏上选择“Help”->“SSL Proxying”->"Install Charles Root Certificact",
出现证书安装页面,点击“安装证书(I)...”,进入证书导入向导,下一步...完成安装
第二步:电脑上charles的SSL抓取设置(必须)
charles并不是默认抓取ssl的,所以即使你安装完证书之后,Charles 默认也并不截取 Https的信息,你需要在SSL proxy里设置需要抓的域名,因为charles的location配置都是支持通配符的,所以在HOST里设置一个”*”就可以了,port不写;
Charles 手机抓包HTTPS设置以及证书安装
手机抓包的原理,和PC类似
第一步:设置charles为允许状态,并设置好接入端口;
在Charles的菜单栏上选择“Proxy”->“Proxy Settings”,填入代理端口8888(注意,这个端口不一定填写8888,也可以写别的端口,但是需要记住这个端口,因为这里设置的允许接入的端口,手机端配置的时候需要用到),并且勾上”Enable transparent HTTP proxying” 就完成了在Charles上的设置。如下图
需要找到charles的本机IP;点击HTLP -> local IP Address 可以看到当前的本机IP地址;
也可以在终端打开查看,比如window,cmd下;输入ipconfig可以查看本机的IP
如上,charles允许手机接入的IP和端口是10.36.198.189:8888 在浏览器输入 这个HOST会发现charles会提示一个窗口问你是否允许接入;点击Allow,即可接入代理
第二步:把手机按照charles的IP和端口进行配置;
手机链接wifi,wifi的HTTP代理选择手动那项(安卓类似)
在iPhone的 “设置”->“无线局域网“中,可以看到当前连接的wifi名,通过点击右边的详情键,可以看到当前连接上的wifi的详细信息,包括IP地址,子网掩码等信息。在其最底部有“HTTP代理”一项,我们将其切换成手动,然后填上Charles运行所在的电脑的IP,以及端口号8888
第三步,手机配对成功后,charles弹窗询问是否允许;
设置好之后,我们打开iPhone上的任意需要网络通讯的程序,就可以看到Charles弹出iPhone请求连接的确认菜单
如上图的弹窗,点击Allow即可;此时已经配对成功,开始愉快的抓包吧;
如果您的charles没有配置过,是抓取不到HTTPS这种加密协议的内容的;
如果需要抓取HTTPS网站的资源,请查看 Charles的HTTPS抓包方法及原理
注意:需要明白一个可能存在的弊端,如果你把手机的上网相关事情委托给了charles,那么当charles出错或者没有开启的时候,此时手机必定没有办法正常上网;这个一定要了解,因为很多人把手机的IP委托给charles进行代理后,第二天早晨上本的时候,手机wifi会默认链接你常用的高清度wifi;而此时的wifi的设置里面可能已经委托给charles了,但是此时电脑刚没有开charles或者重启后ip变动等;造成charles无法正常使用;由此而导致了无法上网的问题;
注意charles此种捕获方式,只能捕获发出请求的资源,如果是APP里,内部的代码和资源,因为没有向服务器发情请求,所以这是抓不到的;
判断是不是调用内部资源,你可以把手机的网络给断了,如果此时还可以正常的显示,说明该资源是写在APP内部的,通过代理的方式是抓不到的;
手机抓取https
手机安装SSL证书(如果你需要抓取手机访问的HTTPS网站,需要做此设置,但如果你不需要手机抓取HTTPS,就没有必要安装了)
和上面类似,也是HTLP下面的 SSL Proxying,选择”Install Charles Root Certificate on a Mobile Device or remote Browser” (在移动设备或远程浏览器上安装SSL证书)
然后会看到一个弹窗,提示你该怎么操作
configure your device to use charles as its HTTP proxy on 10.36.198.189.8888,then browse to chls.pro/ssl to download and install the certificate
大概的意思是让你把手机上的wifi信息设置了 HTTP代理,内容是10.36.198.189.8888;然后用浏览器浏览chls.pro/ssl就可以下载并安装证书了
手机安装证书:在浏览器中输入:chls.pro/ssl 下载安装证书即可(安卓建议不要用手机自带浏览器下载,可能会出现安装不上的情况,如果安装不上,找到设置->安全与隐私->加密和凭证->从存储设备安装(安卓下载证书或安装证书有问题建议使用其他浏览器下载)。Ios手机:1.设置->通用->描述文件与设备管理,安装证书;2.通用->关于本机->证书信任设置-开启)
二、Charles常见操作
(一)过滤域名
方法一:直接过滤域名;
在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。
方法二:修改Include的域名和端口
在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,
然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。
这样就可以只截取目标网站的封包了;
通常情况下,我们使用方法一做封包过滤,方法二做一些唯一的域名抓包,正常情况下,不推荐这种设置方法;
因为这种方法,你的charles只能抓你配置的域名;
如果某天早晨,你的charles一切正常,访问也正常,而且在active commections里也看到了某个域名的请求信息,但是在主界面死活看到获取到的信息;
不用着急,非常有可能是因为你设置了include的指定域名;
而且是设置后你忘记解除了,导致你一脸懵逼;
这种方法非常不推荐,太粗暴了,除非你这半个月都只看某个HOST下的信息,否则千万千万别这么搞,很容易在以后使用时候的忘记解除;
如果你只是为了更清楚的查看某个域名下的请求和响应信息,推荐使用结构视图模式下的焦点域名设置;那种模式比这种方法更好,下面是过滤焦点域名后在序列模式下的调用方法;
方法三:过滤焦点域名
①点击fillter后面的focused来筛选你的做的focus标记文件
②在目标的网络请求上右键,选中focus(此时,该域名已经被设置为一个焦点标记了;
你设置的焦点域名在"View"->”focused Hosts”里面可以查看和管理
结构视图,这种模式下的展现更加人性化;
当你设置某个域名为焦点域名的时候,会把当前域名单独显示在上面,
而其它的非焦点域名,都会在other Hosts里显示;
三、Charles主界面的介绍
主界面
Charles 主要提供两种查看封包的视图,分别名为
- Structure
- Structure/结构视图,将网络请求按访问的域名分类,比如某个域名下有n个资源请求,那么所有此域名下的请求都会在这里做一个详细的分类;
- Sequence
- Sequence/序列视图,将网络请求按访问的时间排序,按照你的电脑的发送请求顺序进行
contents是最常用的一个标签,其中上半部分是请求,下半部分是响应;
请求部分中,会根据请求的内容,而分为很多项;
比如如果是表单提交,还会有form的选项供你查看提交的内容(表格图形化的方式),
最后一项”Raw”是未经处理的请求信息,可以理解为,raw左侧的所有项目都是对raw信息的拆分和美化,以便直观查看;
当然响应区域的raw和其它项目的关系也是一样,响应部分的Raw是接收到的全部未处理信息;
如果响应内容是 JSON 格式的,那么 Charles 可以自动帮你将 JSON 内容格式化,方便你查看。
如果响应内容是图片,那么 Charles 可以显示出图片的预览
右键菜单
在网址、域名上右键
- 区域 1 基本操作 :基本的URL复制,文件保存,以及选中文件内搜索
- 区域 2 重写操作 :重写发送请求(调用接口合适),或者发到gitlist里
- 区域 3 查看区 :排序之类的
- 区域 4 设置关注 :可以设置哪些你关心的或者需要忽略的
- 区域 5 清除区 :垃圾清理使用
- 区域 6 工具区 :对应常见工具的入口
- 区域 7 映射区 :把文件映射到本地或者原创URL
在 overview区域 和 contents区域 右键
charles overview是请求文件的概览,对HTTP/s分析非常重要
四、Charles文件菜单
charles 文件菜单总结
file(文件菜单)
charles 创建新会话
使用方式1:
File
->new session
使用方式2: Ctrl + N
这不是新的请求意思,是再开一个标签页,进行抓包的;
Edit(编辑菜单)
charles 偏好设置
偏好设置,注意作用如下
视图选项
启动设置
警告设置
焦点host
Focus Host是焦点域名
在序列视图的时候,选择focued后,就会只保留你的焦点域名
五、Charles代理菜单
一、常用功能开关区
- stop/start recording 开始/暂停记录,需要注意就是后面的session1代表当前你将要操作的会话窗口;就是切换是否进行捕获记录
注意:这里的开关只是是否记录信息的开关,并不是charles的开关;也就是说如果你stop recording 那么只是界面上不再抓取信息了,charles还是一直会工作的
- stop/start throttling 开始/暂停节流,就是模拟手机上2G/3G/4G的速度,对应工具栏的的小乌龟图标
一般选择多少网速就可以了,下面默认即可;
注意如果你本身网速快;是限速;如果你网速low,你选个100Mbps的,其实也到不了的;
- enable/disable breakpoints 启用/禁用断点
当启用断点后,再次请求到该接口时,会出现断点界面,可以修改参数,修改后点击Execute即可执行
二、常用功能设置区
- recording settings 记录设置
- throttle settings 节流设置
- breakpoint settings 断点设置
三、反向代理和端口转发区域
- reverse proxies 反向代理
正向代理和反向代理的区别:
正向代理:是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;在客户这一端的,替客户收发请求(类似现在正常使用的charles的功能)
反向代理:是代理服务器,为服务器收发请求,使真实服务器对客户端不可见;在服务器这端的,替服务器收发请求,应用场景常见是就是请求分发到多台服务器的负载均衡应用。
一句话就是:
正向代理:代理端代理的是客户端。
反向代理:代理端代理的是服务端。
反向代理的设置
本地端口;
本地主机上的端口创建反向代理。该字段可能会自动填充一个可用的端口。如果有另一个应用程序使用该端口,则在反向代理启动时将收到一条警告消息。
远程主机和端口
作为反向代理的目的地的远程主机的主机名或IP地址和端口。远程端口默认为80,这是HTTP的默认端口。
重写重定向
重定向远程服务器的响应将被重写以与反向代理源地址相匹配。默认为开。
远程服务器的重定向响应是完全限定的URL,即使它们在同一网站内。如果重定向到远程服务器地址,则需要将其重写为反向代理本地地址,否则客户端将使用重定向URL到远程主机,因此不再通过反向代理连接。
保留主机头
Host HTTP标头从传入请求不变地传递,而不是正常重写主机头以匹配反向代理远程主机。默认为关闭。
仅当您具有特定要求时,才需要保留主机头;普通使用的时候没有必要使用的。
监听特定地址
如果要指定本地地址以侦听反向代理,则可以启用此选项并在此处输入IP地址。如果要在同一台机器上运行多个网络服务,但在同一台机器上的不同IP地址上运行,则此功能非常有用。
禁用此选项时,反向代理将绑定到所有可用的本地地址。
- port forwarding 端口转发
端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。
端口转发使您能够将本地TCP或UDP端口透明地转发到远程主机和端口。 所有在端口的请求和回复可能会记录在查尔斯。
端口转发流量记录在Charles中作为
socket//hostport/URL
如果您有要使用Charles监控的非HTTP应用程序,则端口转发非常有用。
将端口创建到原始目标服务器,然后将客户端应用程序连接到本地端口;
端口转发对客户端应用程序是透明的,并使您能够查看Charles先前可能无法使用的流量
四、charles的代理身份配置区域
- windows proxy Windows代理(开启整个系统通过charles作为代理)
五、常用的高级设置区
- proxy setting 代理设置
设置的主界面如下:
动态端口
启用动态端口选项来监听动态端口,每次查询启动时选择。这样可以避免与计算机上可能运行的其他网络服务的冲突,包括Charles的其他实例(如果是共享计算机)如果你开的端口很多,搞到你自己都记不清楚了,那么推荐你用这个;但是我都是写好一个端口的,比如代理写8888,别的就不会监听这个端口了,而且为了手机方便连接,都是使用指定好的端口。
注意;如果你charles设置了8888的端口,别的服务就不能再使用这个端口号了,否则冲突会发生意外的错误;
透明的HTTP代理
透明代理使Charles能够支持不支持HTTP代理服务器的客户端,或者不知道他们正在使用HTTP代理服务器,例如TCP / IP连接由路由器或防火墙重定向到Charles。这里可以被手机连接;
手机连接的时候,http代理那里写=选手动,并填写此时charles的本机地址和上面设置的8888端口即可;
options 里 主要是设置 绕过代理
这里可以设置您的浏览器/操作系统遇到哪些域名的时候,使用默认而不用Charles;配置的列表使用空格或逗号分隔,并在Charles配置其代理设置时注入浏览器。
- ssl proxy setting ssl代理设置
最常用的设置就是第一个ssl proxying,这里记录了需要捕获哪些ssl的信息;
注意,如果你不在这里设置,虽然你安装了ssl的charles证书,你依然无法正常捕获;
通过SSL代理,您的浏览器或应用程序将收到由Charles签名的证书,而不是来自远程Web服务器的原始证书。这将在您的浏览器或应用程序中触发警告,某些应用程序实际上可能会拒绝该连接。
您可以将浏览器或应用程序配置为接受Charles的证书;为在这里设置了通配符,表示为要捕获记录所有ssl协议的请求和响应。- access control setting 访问控制设置
这个访问控制确定谁可以使用这个charles,
本机是永远都可以访问的,默认的访问控制列表如果是空的;
意味着除了这台电脑以外,没有任何设备可以使用charles。
如果你把下面的提示开始,未经授权的设备连接时候会提示你是否允许;
类似下面这种提示框
当你手机访问的时候,电脑会提示的;
这里设置后的host,连接时候是无需确认的;
- extornal proxy setting 外部代理设置
有时候您可能需要使用网络上的代理服务器才能访问Internet。
在这种情况下,您需要为Charles配置外部代理。
您可以为每种代理类型配置身份验证信息。
Charles支持基本身份验证和NTLM身份验证。对于NTLM身份验证,您可以输入“域名”选项。
如果您没有配置身份验证和外部代理请求认证,Charles会将验证请求传递给浏览器,
就像Charles本身正在请求身份验证一样。
排除列表
您可以输入绕过外部代理的loacation列表。
该列表是空格分隔的,每个location都是一个主机或ip地址与可选端口匹配(例如hostname:port),并且支持通配符。
请注意:之前的Charles自动在排除location列表中进行了前缀匹配。- web interface setting Web界面设置
Web界面可以让您使用Web浏览器控制查询,您可以访问
http://control.charles
的Web界面,当查询运行时,您可以启用此功能并配置下面的访问控制
首先你必须要开启web inter face,
否则你访问
http://control.charles
的时候就提示你没有开启;如下的提示
七、Charles工具菜单(Tools)
charles 工具菜单总结
主要是下面的功能,具体可以点击对应菜单查看
-
禁用缓存
No caching Settings/无缓存工具的用法
通过修改请求和响应头来防止缓存;
无缓存工具
无缓存工具阻止客户端应用程序(如Web浏览器)缓存任何资源。因此,请求总是发送到远程站点,并且您始终看到最新版本。
适用范围
该工具可以作用于每个请求(选中 Enable No Caching 即可),也可以仅对你配置的HOST启用(启用的nocaching同时,请选中 only for selected locations);
当用于”only for selected locations”时,可以将no caching的效果限制在你所配置的主机上;
当然location配置也非常灵活;
我比较喜欢用全部禁止,选中 Enable No Caching,并且下面的only选项不要选,就可以了;
不过这样做也有一个不好的地方,就是你访问的时候,同样的资源,在视图中,每调用一次,就会出现一次;
关于WEB缓存
WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户访问延迟增大,WWW服务质量日益显现出来。缓存技术被认为是减轻服务器负载、降低网络拥塞、增强WWW可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral Locality)原理,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站,而是由Cache中保留的副本提供。
Web内容可以缓存在客户端、代理服务器以及服务器端。
研究表明,缓存技术可以显著地提高WWW性能,它可以带来以下好处:- (1)减少网络流量,从而减轻拥塞。
- (2)降低客户访问延迟,其主要原因有:①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取,从而减小了传输延迟②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取。
- (3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程服务器负载。
- (4)如果由于远程服务器故障或者网络故障造成远程服务器无法响应客户的请求,客户可以从代理中获取缓存的内容副本,使得WWW服务的鲁棒性得到了加强。
Web缓存系统也会带来以下问题:
- (1)客户通过代理获取的可能是过时的内容。
- (2)如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。因此在设计Web缓存系统时,应力求做到Cache命中率最大化和失效代价最小化。
- (3)代理可能成为瓶颈。因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少同客户直接和远程服务器相连的效率一样。
http://baike.baidu.com/item/%E7%BC%93%E5%AD%98
No caching的运行原理
无缓存工具通过操纵控制缓存响应的HTTP头来防止缓存;
从请求中删除If-Modified-Since和If-None-Match头,添加Pragma:no-cache和Cache-control:no-cache。
从响应中删除Expires,Last-Modified和ETag标头,添加Expires:0和Cache-Control: no-cache。
因为客户端的所有请求和服务端响应都经过charles进行处理,所以charles可以很容易的做到这些
- 禁用Cookies
禁用Cookie工具
禁用Cookie工具阻止发送和接收Cookie。 它可以用来测试网站,就像您的浏览器中禁用Cookie一样。
请注意,网络蜘蛛(如Google)通常不支持Cookie,因此该工具也可用于模拟蜘蛛网站的视图。
适用范围
该工具可以针对每个请求启用,也可以仅对选定的位置启用。选中 enable block cookies 即可
当用于某个域名时,可以将禁用Cookies的效果限制在你所配置的主机上;同时选中 only for selected locations 即可;
原理
Cookie头部从请求中删除,防止将cookie值从客户端应用程序(例如Web浏览器)发送到远程服务器。
Set-Cookie头将从响应中移除,从而防止客户端应用程序从远程服务器接收cookie的请求。
注意
很多网站的登录是通过写入Cookies然后通过读取Cookies的值来进行网站用户身份和权限管理的;如果你禁用了Cookies,这将会到导致你登录某个网站的一直,一直停留到登录页,这是因为写入您Cookies的方法没有值导致的;表现就是你一直登录,虽然账号密码正确但一直还是停留在登录页;也就是说如果你不是特意的测试cookie禁用的情况下,没有必要使用这个工具;
选中 only for selected locations 的设置
设置单个匹配可以查看 [charles location的匹配方式.md],设置的方式都是一样的;
-
远程映射到URL地址
远程映射/Map Remote Settings
功能:把你要请求的地址,映射到一个远程地址;相当于把你的请求地址修改了;
远程映射工具
远程映射工具根据配置的映射更改请求位置,
以便从新位置“可见的”地提供响应,就像原始请求一样。
此映射使您能够从B站点提供A站点的全部或部分(A是原始的目标,B是你远程映射的地方)。使用建议
如果您想开发某个网站,并且已经有了开发环境的网站,并希望把刚更新的某些文件应用到线上网站,测试下效果如何,则“远程映射”将非常有用。
想达到同样的效果也可以通过修改本地HOST的方式来实现;当然如果你通过修改host的方式,可能也非常容易,不过这可能需要借助一个host管理神器 switchhosts
虽然不推荐远程映射,但是非常推荐用”本地映射”
locations匹配
每个位置匹配可能包含协议,主机,端口和路径模式,以匹配特定的URL。位置可能包括通配符。
-
映射到本地
本地映射/Map Local Settings
功能:把需要请求网络的文件映射为请求本地文件
本地映射工具
本地映射工具使您能够使用本地文件,就好比他是你访问的目标网站一部分一样,流程是,客户端获取资源文件的时候,可以向服务器正常发起资源请求,但在charles就已经被截断了,并且把当前的资源请求重定向到你设置的备注;
本地映射可以大大加快开发和测试的效率,否则您将不得不将文件上传到网站来测试结果。使用Map Local,您可以在开发环境中安全地测试。
动态文件(如包含服务器端脚本的文件)不会由Map Local执行,因此如果文件中有任何脚本将脚本返回到浏览器(可能不是预期的结果)。
位置匹配
每个位置匹配可能包含协议,主机,端口和路径模式,以匹配特定的URL。位置可能包括通配符。
本地映射
本地映射包含一个位置匹配和本地目录,从该目录尝试提供匹配。
使用相对路径在本地目录中搜索文件。相对路径是匹配路径部分之后剩下的请求位置的一部分;
本地映射可以区分大小写;-
重写工具
重写工具/rewrite Srttings and rewrite rule
功能:在通过charles时修改请求和响应
重写工具
重写工具可以让你在有请求响应的时候,修改请求和响应的rule。
rule(规则):添加或更改标题或替换响应体中的一些文本,编辑相关的数据。
重写集重写集可以单独激活和停用。每个集合包含位置和规则的列表。这些位置选择规则将要运行的请求和响应。
重写rule:每个rule描述单个重写操作。rule可能会影响请求URL的标题,正文或部分内容;它可以根据请求或响应来操作;
那么它可以定义搜索和替换或者只是替换样式重写,重写rule编辑对话框中,提供了有关重写rule的更多文档,可以看下。
local匹配 每个local匹配可能包含协议,主机,端口和路径模式,以匹配特定的URL。local可以使用通配符。
调试
当重写操作无法正常工作时,重写工具可能难以调试。如果您有麻烦,请尝试添加一个基本的rule,例如添加一个非常明显标题的rule,以便您可以看到您写的rule是否与请求匹配。
还可以在错误日志中打开调试,以获取从Charles窗口菜单访问的错误日志中打印的一些调试信息。
规则重写 rewrite rule
每个rule描述单个重写操作
Type 类型
该类型指定要执行的重写操作的类型。重写规则类型有四种不同类别;标题规则,
URL规则,
查询参数规则,
响应状态规则和正文规则。
头和查询参数规则分别影响头字段和查询字符串参数;添加,修改或删除标头和参数。
URL和主体规则执行查找和替换URL和主体的不同部分。响应状态规则执行查找和替换响应状态代码和描述,
例如。 200 OK
Where
选择应用重写规则的位置;在请求,响应或两者上。
Match
匹配字段包含请求或响应中要匹配的文本,以决定是否触发此规则。您可以将名称或值留空或同时保留,以匹配任何值。
如果您将名称和值字段都留空,您将匹配所有请求/响应。
可以启用正则表达式支持,为您的匹配提供Perl风格的正则表达式。如果您在正则表达式中包含组,则可以在匹配字段中使用它们。
除非正则表达式启用,否则名称字段是完全匹配字段,在这种情况下,它支持部分匹配。名称字段对于正则表达式和正常匹配都不区分大小写。如果要创建不需要的重写规则类型,则可能会禁用该名称字段。值字段是部分匹配,除非您打开匹配整数值,在这种情况下,它是完全匹配的。值字段对于正则表达式和标头和查询参数规则的正常匹配都不区分大小写,并且对URL和正文规则区分大小写。
新建/替换
新/替换字段包含在触发此规则时在请求或响应中添加或替换的文本。将名称或值留空,以使它们与匹配的名称或值相同。
如果为匹配启用了正则表达式支持,则可以使用$1,$2等引用匹配组。
名称和值字段的行为取决于匹配。如果存在相应的匹配,则该字段将作为匹配文本的替代,否则如果匹配为空,则字段将替换整个名称或值。
值字段支持替换第一个或替换所有模式。如果名称匹配是正则表达式,则名称字段始终以替换优先模式运行,否则是完全匹配并替换整个名称。
如果要创建不需要的重写规则类型,则可以禁用名称或值字段。
建议
如果不按预期工作,重写规则可能难以调试。经常测试,最好慢慢建立一个rule。
我很少用到这个,一般都是在已经有的请求上再次修改的;然后repeat;
-
黑名单
Black List Settings
功能:阻止对匹配HOST的请求;可以直接把请求丢掉,也可以直接返回403状态码
-
白名单
白名单工具,允许您阻止除选定位置之外的所有请求。
注意:如果一个请求与“黑名单”和“白名单”同时匹配成功,则会被阻止。
白名单工具
白名单是除了你设置的HOST以外,阻止所有请求。
当Charles收到与白名单不匹配的请求时,Charles会阻止该请求。 您可以选择Charles是否会简单地关闭浏览器的连接,或者向浏览器返回错误页面(具有403响应)。
黑名单工具,用于仅屏蔽选定的域名。 如果一个请求与“黑名单”和“白名单”都匹配,则会被阻止。
-
DNS欺骗
DNS欺骗/DNS Spoofing
功能:通过将您自己的主机名指定给远程地址映射来欺骗DNS查找
一般的开发流程中,在上线之前都需要在测试环境中先行进行验证,而此时手机客户端请求的域名是不太容易改变的,可以通过设置dns方式把域名转发到测试机上,具体设置Tools->DNS Spoofing Settings
比如要把所有包含xxxxxx.com的域名转到10.0.0.71的服务器上,其实用修改HOST的方式是可以解决的;
下面是官方文档上的介绍:DNS Spoofing工具使您能够通过将您自己的主机名指定给远程地址映射来欺骗DNS查找。 当请求通过Charles时,您的DNS映射将优先。
在DNS更改之前,DNS Spoofing可用于测试虚拟托管网站,因为您的浏览器将会像DNS更改一样运行。
DNS更改通常需要长达24小时才能生效,并且没有DNS欺骗,DNS变更生效后,网站将会变得非常困难。
您可以将主机名映射到IP地址或另一个主机名,这些名称将由Charles在DNS中查找以查找其IP地址。
主机名可能包含通配符。
-
镜像工具
镜像工具会在你浏览指定网站时,把抓取到的文件克隆一份,并保存在你指定的路径下;
注意:如果你配置是www.aaa.com; 那么只会抓这个域名下的文件,这个域名如果引用了123.abc.com的外部资源(如前端CSS,JS等),引用的外部资源并不会被保存;
charles一般用于捕获确定的资源;如果你想把别人的整站clone下来,推荐用httrack这个工具,charles在clone网站上做的并不好,可以说是非常垃圾的战五渣。
但储存目标的少量文件还是没问题的;
保存文件的路径会与你浏览网站的目录结构相同,并且charles会为主机名创建一个根目录。文件名从URL导出并转换为适合的数据进行保存。
实际中的应用:你可以把访问的数据缓存下来,让app在没有server的时候,通过map Local 映射到你抓取到的文件,这样app也能继续跑;
你也可以用镜像工具保存网站内容后,通过map Local 映射到你抓取到的文件;通过修改文件,达到本地的线上调试的功能(你调试的内容因为用的资源都是本机的,所以并不会真正的影响到线上文件的);
查询字符串包含在文件名中。
如果收到相同URL的两个响应,则后面一个文件会覆盖前面的同名文件,因此您保存是镜像中的最新数据。
镜像工具在数据通过Charles时就开始储存了,因此不受模拟慢速设置的限制影响(慢网速只是对你本地的前端看到效果有影响,但是真正速度还是实际速度)。所选HOST
该工具可以针对每个请求启用,也可以仅对选定的host启用。
当然,如果你设置host的时候,所写的资源,路径等都可以用模式匹配。星号”*”和”?”都是可以用的;替代方法(右键save)
在使用“镜像”工具之后,您也可以右键单击charles目录中的一个节点(文件/文件夹),在捕获记录后将所有抓取结果保存本地,这会配置镜像更具更加简单,而且避免一些垃圾文件。
唯一的区别就是镜像工具不受录制设置中设置的录制限制,而后来的保存响应是有限的,可能在模拟慢速的时候存在丢失数据的情况。
可能会遇到的坑
如果镜像工具启用了,它将导致任何压缩或编码的响应被解码。
因此,如果服务器提供了一份压缩后的响应,那么在被传递给客户端之前,它将被Charles解压缩(charles相当于是客户端和服务端之间的一个过滤器,任何请求和响应都会经过charles);
即时返回了一份解压缩后的文件,一般也不会有任何影响的;
但如果您已经构建了自己的客户端,或者你本身就是想要那种压缩的响应,那么此时你是得不到的;-
自动存储
自动保存工具 auto_save
“自动保存”工具会在你设定的间隔后,自动保存并清除抓取到的内容。假设你设置了3分钟,则每隔三分钟会保存一次,
并且保存后会把charles当前的会话清除掉;(这样可以保证后三分钟保存的不会把之前保存的重复计算在内)
如果您离开Charles监视长时间的网络活动,并希望将记录分解为可管理单元,或者避免由于大量数据可能发生的内存不足情况,这很有用。
输入保存间隔(分钟)和保存会话文件的目录。您可以选择是否在每次运行Charles时启动“自动保存”工具,否则,Charles启动时,“自动保存”工具将始终被禁用。
您可以选择以超过小时的保存间隔分钟的倍数启动保存间隔定时器。您的第一个保存间隔将缩短以将间隔对齐到多个。例如,如果您的保存间隔为15分钟,并在10:10启动该工具,则第一个保存间隔将为10:15,以对齐15分钟的倍数,然后每15分钟一次。
会话文件以其名称格式yyyyMMddHHmm(即年月日小时分钟)保存,以便按字母顺序排列时按正确的顺序显示,比如charles201705180927
-
客户端进程
客户端进程工具/client_process
显示使每个请求的本地客户端进程;
客户端进程工具显示负责进行每个请求的本地客户端进程的名称。
客户端进程通常是您的Web浏览器,例如firefox.exe,但客户端进程工具可以帮助您发现许多可能未知的HTTP客户端。
客户端进程名称显示在每个请求的“备注”区域中。
如果您可以在Charles中看到您不确定起始过程的请求,则客户端进程工具很有用。 它仅适用于在运行Charles的计算机上发出的请求。
该工具将在Charles接受每个连接之前引入一个短暂的延迟。 延迟通常不明显或显着。
指定域名
该工具可以针对每个请求启用,也可以仅对选定的位置启用。 当用于所选位置时,可以将工具的效果限制在指定的主机和使用简单而强大的模式匹配的路径上。
-
修改请求compose
撰写工具/compose和Compose New
compose 是在原有的请求基础上,修改;
可以写各种状态;
– URL:
– Method:
– GET
– POST
– PUT
– DELETE
– HEAD
– TRACE
– Content type:
– application/x-www-form-urlencoded
– multipart/form-data; boundary=********
– text/plain
– text/xml
– text/json
– text/javascript
– Protocol version:
– HTTP/1.0
– HTTP/1.1
– HTTP/2.0这个发送后,该编辑还继续存在,你可以再次修改的;
书写的时候,域名上会出现一个书写笔的标记,代表这个文件是可以书写的;
其实在文件上右键更方便,
-
新的修改请求
compose New 是新出一个弹窗,自己手动一个个的去写
其他的跟compose差不多
-
批量重复请求
重复发包工具/repeat
Charles 让你选择一个请求并重复,在测试后端接口的时候非常有用;
Charles将请求重新发送到服务器,并将响应显示为新请求。
如果您进行后端更改并希望测试它们,用了charles后,你就没必要在浏览器(或其他客户端)中重复该请求,charles可以非常方便的完成。
特别是如果重新创建请求需要传一些列参数的时候(比如在游戏中获得分数,比如填写一大串表单的请求时候),这将节省大量的精力。
请求的重复在Charles内部完成,因此您无法在浏览器或其他客户端中查看响应;
响应只有在Charles才能看到。
-
高级批量重复请求
高级重复发包/Repeat Advanced
Advanced Repeat就是重复发包多次,这个功能用来测试短信轰炸漏洞很方便。
或者测试后端的性能;
这个在文件的右键菜单上也是有的,在那里操作会更方便和明确;
-
验证工具
验证工具/validate
验证工具
Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应。验证报告在Charles中显示,并显示出与响应源中相应行的警告或错误(双击错误消息中的行号可以切换到源视图)。
因为Charles测试它记录的响应,它可以测试不容易测试的场景,例如在提交表单后显示错误消息。
重新验证
验证后,您可以从验证结果中选择响应并重复,重复原始请求,然后重新验证结果。
您可以修复任何验证问题,并重新验证页面,而无需返回浏览器。
– -/这个目前还不会用;-
发布Glist
Publish Gist /发布代码段
选中某个文件,点击Publish Gist,如果你没有github,这个文件将被匿名发布,您也就无法删除它;
当然你可以在 publish gist setting中,进行发布设置,可以使用您的github帐户来保护发布;代码会被发布到 https://gist.github.com/
-
导入/导出设置
-
界面
-
Glist发布设置
charles Glist发布设置
在这里可以设置Github账户,
发布list的大小限制;等等
八、Charles帮助菜单
charles的window和help的菜单介绍
其中window菜单中Active connections;可以用它来看charles进行了哪些访问/charles是否还在工作
help菜单中:
Local IP Address :本地的IP地址查看
SSL Proxying :SSL代理辅助,Charles Root Certificate Help 安装根证书
Install Charles Root Certificate on a mobile device or Remote Browser
-
charles使用教程指南
2019-08-10 01:05:59NULL 博文链接:https://xiaojingjing.iteye.com/blog/2202947 -
Charles使用教程(Mac)
2020-07-12 15:01:05一、下载并安装新版Charles 官网地址:https://www.charlesproxy.com/download/ 说明:当前安装的最新版是4.5.6,以下下载的jar包也是针对此版本 二、替换本地charles.jar包 1.下载地址:...一、下载并安装新版Charles
官网地址:https://www.charlesproxy.com/download/
说明:当前安装的最新版是4.5.6,以下下载的jar包也是针对此版本
二、替换本地charles.jar包
1.下载地址:https://pan.baidu.com/s/1frWu2r48ZclQ6qa2ZEjA3Q 提取码:9x93
或者:https://download.csdn.net/download/dou_being/12605423
2.下载好对应的jar包后,找到安装目录,然后替换里面的Charles.jar
各系统的安装目录如下:
(1)macOS: /Applications/Charles.app/Contents/Java/charles.jar
(2)Windows: C:\Program Files\Charles\lib\charles.jar
(3)Ubuntu: /usr/lib/Charles-proxy/charles.jar
三、Charles的配置及使用
1.电脑端配置
(1)打开连接的Wi-Fi网络设置,如下图:
(2)打开Charles,在菜单栏点击【Proxy】—》【macOS Proxy】,macOS系统HTTP/HTTPS代理将会被自动设置为本地代理,默认端口8888,如图:
(3)点击菜单栏【Proxy】—》【SSL Proxy Settings】,在SSL Proxying选项卡中添加需要抓包的域名和端口,如图
(4)点击菜单栏,【Proxy】—》【Proxy Settings】,设置如下:
(5)点击菜单栏【Help】—》【SSL Proxying】—》【Install Charles Root Certificate】,安装Charles根证书,并设置为信任,如图
(6)点击菜单栏【Help】—》【SSL Proxying】—》【Install Charles Root Certificate on a Mobile Device or Remote Browser】,如图
(7)然后进行客户端配置
2.客户端配置(以iOS配置为例)
(1)手机端连接与电脑端连接相同的Wi-Fi
(2)点击连接Wi-Fi的感叹号按钮,打开代理设置,输入上面(6)步骤弹出的电脑端IP地址和端口号,如图
备注:首次连接,在电脑端会弹出如下弹窗,点击【Allow】即可,如图
(3)打开safari浏览器,输入:chls.pro/ssl,下载证书
(4)进入手机设置,【通用设置】—》【描述文件】,点击刚才下载的证书,进行安装,如图
(5)打开证书信任开关,【通用设置】-【关于】-【证书信任设置】,找到Charles证书,将开关设置为打开,如图
以上步骤都配置好后,就可以在客户端抓包了。(下面附上一张成功抓包的截图:)
欢迎关注公众号:
-
Charles使用教程(Windows版本)
2021-03-31 10:53:30下载安装与使用过程 1、下载: 从官网下载对应系统的 Charles 最新版本,双击下载的安装包,一路默认安装,安装完成会在桌面生成类似花瓶的图标。 官网地址:https://www.charlesproxy.com/download/ 2、注册: ... -
Charles抓包工具使用教程_Mac版
2018-03-27 11:27:54文档介绍了Mac版本的Charles抓包工具的使用方法,包括安装、配置、连接手机及如何使用工具进行数据抓包,这个工具非常适合做手机软件开发的技术人员使用。 -
Windows下charles 使用教程指南
2018-05-10 11:10:35下面是pc端的抓包使用情况 Charles支持抓去http、https协议的请求,不支持socket。然后charles会自动配置IE浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了。 这里打开百度抓包下,工具界面和相关... -
【测试】 抓包工具 Charles 使用教程
2022-01-13 23:00:49文章目录简介Charles 实现原理安装CharlesCharles 主界面Charles 抓包教程PC端抓包移动端抓包HTTPS 抓包Charles 常用功能压力测试模拟弱网修改请求和响应editMAPRewriteBreakpoints反向代理 大家好,我是洋子(B站 ... -
Charles使用教程-Mac版和iphone版本
2018-11-08 12:22:15charles是一个抓包工具,可以抓取手机或者电脑上的包。 1.charles的下载安装 官网地址: https://www.charlesproxy.com/ 2.mac版本配置 proxy setting->设置好端口号四位,注意避开8080等特殊端口。... -
mac charles使用教程抓取手机端http https
2019-01-09 00:11:011.下载链接v4.0 链接:https://pan.baidu.com/s/11r7Mk5oVOlAqHVu2s4U-lw ... ...gt; Registered -> 输入激活码 mac charles 永久激活码 Registered Name: https://zhile.io License Key: 48891cf209c6d32b...