charles是PC端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调式端口外,charles也可以用于分析第三方应用的通讯协议。配合chales的SSL功能,Charles还可以分析Https协议。

charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

该软件是用Java写的,能够在windows,mac,linux上使用。开发ios都在mac系统上吧,安装charles的时候要先装好java环境

青花瓷Charles工具大郅原理

charles作为一个中间人代理,在客户端给服务器端发消息的时候,会截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信。服务器返回数据时将截取的数据发送给客户端

伪装成服务器与客户端进行通信

charles主要的功能包括

  1. 截取Http和Https网路封包
  2. 支持重发网络请求,方便后端调试
  3. 支持修改网络请求参数
  4. 支持网络请求的截获并动态修改
  5. 支持模拟慢速网络
  6. 支持SSL代理。可以截取分析SSL的请求
  7. 支持AJAX调试。可以自动将JSON或XML数据格式化,方便查看

安装Charles

安装:打开浏览器访问Charles官网https://www.charlesproxy.com/,下载相应系统的Charles安装包,然后一键安装即可,直接下载安装即可,过程比较简单。破解:官方版本只支持免费使用30天,可通过替换安装包内容中的 charles.jar 文件进行破解。

或者用老师给的直接用接收的或者是已有的然后进行安装将 Charles 设置成系统代理

在之前的简介里有提到过,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。

启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。

Charles主界面介绍





Charles主界面介绍(请求导航栏)

charles提供两种查看封包的页签

一个是structure,另一个是Sequence

  • structure:树状结构显示,将网络请求按访问的域名分类
  • sequence:水平结构显示,将网络请求按访问的时间排序

任何程序都可以在charles中的structure窗口中看到访问的域名

从上至下的图标解释:

扫把按钮:点击之后可清除抓取到的所有请求

图标按钮:红点亮起说明正在抓取请求,红点展示为灰色说明目前不在抓取请求状态

乌龟按钮:灰色乌龟是网速设置正常,绿色乌龟指慢速网速开启了

六角形图标:断点图标,灰色说明断点未开启,红色说明在使用断点

钢笔图标:编辑请求,点击之后可以修改请求的内容

刷新图标:重复发送请求的图标,先选定某一请求点击该图标则请求会被再次发送

扳手图标:对应于导航栏中的tools图标,有些许功能

设置图标:设置charles中的情况

File:文件

Edit:编辑

View:视图

Proxy:代理服务器

Tools:工具

Window:窗口

Help:帮助

黄色区展示的是某一制定请求的请求内容,可以切换导航栏查看请求的各种详细情况。例如:请求响应时间,请求头,请求详细内容,请求体等各种情况。

我们先看一下常用的几个选项:

Overview:会展示该请求的一个大体情况,例如:请求头,请求响应结束时间,请求开始时间以及自己的notes等

content:如上图所示的该请求的具体内容和服务器的相应内容(配合下面的导航栏进行查看该请求的具体内容header,cookies&&选择呈现方式form,raw)

summary:也是展示一个该请求的大体资源分布情况。例如:服务器响应了多长时间,host是什么等等

chart:以表格形式告诉我们一个响应时间的分布情况。

notes:已经很清楚了,点击之后自己可以对该请求记录一些东西,方便后续查看该接口的用途,可在overview中查看

绿色区展示的是请求相应内容。同样,是点击导航栏会展示响应内容的详细情况。

header:响应的头信息

text:文本形式展示响应内容

hex(16进制)和compressed(压缩)一般不予查看

json:以json格式查看响应内容内容,简单明了

json text:将json格式的内容展开书写

raw:详情内容的详细情况

Proxy菜单

Tools菜单

charles的http协议

HTTP状态码

状态码 响应类别 原因短语
1XX 信息性状态码(Informational) 服务器正在处理请求
2XX 成功状态码(Success) 请求已正常处理 ,完毕
3XX 重定向状态码(Redirection) 需要进行额外操作已完成请求
4XX 客户端错误状态码(Client Error) 客户端原因导致服务器无法处理请求
5XX 服务器错误状态码(Server Error) 服务器原因导致处理请求出错
状态码 响应类别 原因短语
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态码必须和WWW=Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,eg :输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

截取安卓手机,Iphone上的网络封包

Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求,抓取移动设备发送的Http请求先将移动设备连接到Charles客户端,下面我们就讲解如何进行相应操作Charles 上的设置

查看本机连接无线网络的IP地址,这个地址作为移动设备连接Charles客户端的代理地址,移动设备必须要和计算机在同一网络中才能连接上。

打开Charles客户端,点击Proxy->Proxy Settings菜单,可以设置移动设备连接到Charles的端口,这样移动设备代理配置需要的ip地址和端口号都有了。

Charles是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,本地系统(如果通过浏览器发送请求)发送出去的请求都能被截取下来。因此,如果想只抓取手机APP发送的请求的话,可以不勾选WindowsProxy选项,这样在测试时就不会被本机Http请求所干扰。

另外,如果想要抓取浏览器发送的请求包,勾选WindowsProxy选项之后还是抓取失败,可能是浏览器没有设置成使用系统的代理服务器,只要设置成使用系统的代理服务器,或者将浏览器的代理服务器设置成127.0.0.1:8888也可以成功。

获取所在电脑的Ip地址

首先我们需要获取所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址

Windows + R 然后CMD去到黑色命令窗口,输入ipconfig / all然后按下回车键,接下来就可以找到所在电脑的IP地址了,“IP Address……192.168.1.100”

打开电脑的控制面板,找到 “网络和共享中心”,双击点开,找到本地连接,点开,然后就会自动弹出本地的连接状态的对话框,找到“详细信息”点开,这时就会弹出详细的信息窗口,在列表中我们可以找到IPv4就是我们要找的ip地址了

截取安卓手机,iPhone上的网络封包

在 iPhone 和安卓的 “ 设置 “中的” 无线局域网 “ 中,我们可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888

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

断点功能

方法:

在会话列表中右键点击某个会话,然后在菜单中选择Breakpoints;

通过Proxy-Breakpoint settings...中手动新建/启用某个断点;要求勾选enable breakpoints

之后当下次再有该请求时,会自动进入断点模式;

一个完整请求会进入断点模式2次:

request的发出之前;收到服务器的response但尚未返回给客户端的时候;

断点request的时候,可以修改request信息,不过我们程序都有对请求header做校验和处理,修改参数后一般就直接报错了,所以看看response就好

模拟慢速网络(弱网)

在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

点击上方菜单栏 –> Proxy –> Throttling Settings,打开Throttling Settings弹窗。

勾选Enable Throttling,开启限网功能。

在 Throttle Preset 下选择网络类型即可,具体设置可以根据实际情况自行设置。

(自行选择,如果不是很明显的话那就调到56 kbps Modem)

(当然,也可以自定义网络设置,看个人或者是需求)

如果只想对特定地址的请求进行弱网测试,,勾选Only for selected hosts,添加请求地址的信息。

对特定地址的请求进行弱网测试

过滤网络请求

通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com , 那么只需要在 Filter 栏中填入 yuantiku 即可。

方法二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。



修改网络请求内容

有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求

我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便

给服务器做压力测试

我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。

我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项

接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

下面的图中,选择了三个接口,每次迭代中3个接口同时请求,迭代1000次(总计请求3000次接口),

每个接口每次并发100次请求。

模拟 接口404/403返回值(blacklist方法)

2.允许启用黑名单功能,选择接口返回错误的形式(404 或者403),添加接口地址并保存

注:【blocking connection】 选项可以选择“drop connection”或者 “403 respose”.前者接口会直接返回404错误,后者接口返回403错误

再次请求

屏蔽Web网页的抓包信息(Proxy)

应用场景:屏蔽web网页的抓包信息

proxy-->windows proxy(前面没有对勾,就不会抓到 PC浏览器的包)

proxy-->macOS proxy(mac电脑)

Get与post请求的区别

1、GET使用URL或Cookie传参。而POST将数据放在BODY中。  

2、GET的URL会有长度上的限制,2kb,则POST的数据则可以非常大。  

3、POST比GET安全,因为数据在地址栏上不可见。  

4、一般get请求用来获取数据,post请求用来发送数据。

Cookie与Session

Session和Cookie的主要区别在于:Cookie是把数据保存在浏览器端的内存中Session把数据保存在服务器端的内存中

cookie与session的联系:

当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹

愉快的了解Charles的更多相关文章

  1. Web开发生存工具使用指南

    这里安利两款我认为开发中能够极大的提高生产力的工具,Charles 和 Postman. P.S. Charles(查尔斯)..不要再读查理斯了,金刚狼中被老铁扎心的博士就叫 CharlesP.P.S ...

  2. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

  3. 如何使用Charles抓包-- 入门篇

    下载地址 注意:首先需要下载java的运行环境支持(一般用burp的人肯定也都有装java环境).装好java环境后,可以直接去百度搜索并下载charles的破解版,下载到破解版之后,里面一般会有注册 ...

  4. 抓包工具 Charles 使用心得

    前言 虽然实习工作还没有着落,但学习还是要继续的嘛,今天就来学习使用下 Mac 下截取网络封包的工具:Charles. 我想,如果你是个善于利用搜索引擎的人,那么在 Google 中输入「Charle ...

  5. charles支持https抓包配置

    自从公司站点全部启用https后,使用charles就不能像以前那样愉快的抓包啦!不过没关系,这里教你怎么配置charles,使其支持https抓包.之前有一篇介绍charles的使用,参考这篇:ht ...

  6. charles抓包https设置

    写在前面 https抓包的实现 (一)首先,电脑得装个证书 (二)然后,移动设备上安装证书 (三)最后,Charles添加SSL Proxying 写在前面 开发时,面对各种接口数据,绝大多数时间都会 ...

  7. Mac上安装Charles进行抓包全流程设置

    安装 -- 官网下载最新版的Charles版本,按照提示安装即可 破解 -- https://blog.csdn.net/qq_25821067/article/details/79848589. M ...

  8. .NET微信开发Charles突破微信授权,获取任意微信网页源代码(含Https)

    简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用.开发iOS都在 ...

  9. 抓包工具Charles的使用心得

    简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用.开发iOS都在 ...

  10. charles本地调试之map和rewrite功能

    charles是一款mac下代理调试工具,对于前端开发同学来说是相当方便的一个调试接口的工具:不过charles需要收费,不过在天朝几乎收费的软件都能找到破解方法: 使用charles前,需要将cha ...

随机推荐

  1. WebSocket魔法师:打造实时应用的无限可能

    1.背景 在开发一些前端页面的时候,总是能接收到这样的需求:如何保持页面并实现自动更新数据呢?以往的常规做法,是前端使用定时轮询后端接口,获取响应后重新渲染前端页面,这种做法虽然能达到类似的效果,但是 ...

  2. 龙芯发布 .NET 8 SDK 8.0.100-rc2 LoongArch64

    随着.NET 8的发布的临近,国内的社区朋友们也很关心龙芯.NET 团队对于Loongarch .NET 8的发布时间,目前从龙芯.NET编译器团队的可靠信息,Loongarch .NET 8的发布会 ...

  3. 微信小程序记住密码,让登录解放双手

    密码是用户最重要的数据,也是系统最需要保护的数据,我们在登录的时候需要用账号密码请求登录接口,如果用户勾选记住密码,那么下一次登录时,我们需要将账号密码回填到输入框,用户可以直接登录系统.我们分别对这 ...

  4. 大立科技DM63红外相机SDK开发Ⅱ-获取仪器红外图像

    目录 1.开发准备 2.导入头文件 3.数据初始化 4.获取红外图像 5.关闭红外图像 6.完整代码 1.开发准备 为了方便发开,需要下载Visual Studio,本开发基于Visual Studi ...

  5. 如何通过C++ 给PDF文档添加文字水印

    因PDF文档具有较好的稳定性和兼容性,现在越来越多的合同.研究论文.报告等都采用PDF格式.为了进一步保护这些重要文档内容免受未经授权的复制或使用,我们可以添加水印以表明其状态.所有权或用途.针对工作 ...

  6. MySQL锁粒度是什么意思?MySQL锁粒度是什么?

    MySQL锁粒度就是我们通常所说的锁级别.数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源. MySQL数据库有三种锁的级别,分别是:页级锁.表级锁 .行级锁. 锁粒度 锁粒度就是我们通常所说 ...

  7. 赛意SMOM和金蝶云星空单据接口对接

    赛意SMOM和金蝶云星空单据接口对接 数据源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多 ...

  8. 🎉开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!

    你好,我是 Kagol. 前言 从今年2月份开源以来,有不少朋友给我们 TinyVue 组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些 ...

  9. RDBMS与Hbase对比 HDFS与HBase对比 Hive与HBase对比

    RDBMS: HBASE: HDFS与HBase对比: Hive与HBase对比: Hive与HBase总结

  10. 虚拟化M搭建及基本操作

    虚拟化MH搭建 虚拟化概念: 虚拟机安装分为2块:RHEVM .RHEVH RHEVM:负责管理角色 RHEVH:负责运算角色 2016-09-23_0-52-54.png hypervisor: 提 ...