charles 安装 ssl_玩转Charles抓包工具

Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request,response和HTTP headers(包含cookies与caching信息)。

811c0c782a3742eca3f3f3495fd57baa

Charles主要功能:

1.支持SSL(SecureSockets Layer,安全套接层)代理。可以截取分析SSL的请求。

2.支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

3.支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

4.支持AMF调试。可以将FlashRemoting或FlexRemoting信息格式化,方便查看。

5.支持重发网络请求,方便后端调试。

6.支持修改网络请求参数,request和response。

7.支持网络请求的截获并动态修改。

8.检查HTML,CSS和RSS内容是否符合W3C标准。

一、安装

1.1 下载程序包

前往charles官网,地址:https://www.charlesproxy.com/download/。

目前charles支持三种操作系统共5个版本,本文以MacOS系统版本讲解。

566977b7c2de44daad68746aa084adc7

注意:Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。

1.2安装程序包

1.2.1 dmg包安装

1)安装如下图

aa26f9d48a584309a647ee30d9ec1508

2)安装完成后,首次启动,需要等待10s,如下图

904e87ecc74d4aad9e1ebaeac6cb6617

3)授予charles自动配置所在机器的网络设置权限,选择“Grant Privileges“,如果意外点错“NotYet“,在程序下次启动会重新询问,如下图。

a8e32a0e04a1429aaecd20501e3cc5ae

4)获得权限后,进入Charles主界面

0464a60982034a6889080ac5e7ca8d99

设置HTTP Prxoy端口号,Proxy--Proxy Settings,一般设置为8888。

a44df71d65c547aca7d856062847eda7

1.2.2 Mac端Charles Root Certificate证书安装

1)Help栏SSL Proxying —InstallCharles Root Certificate

72096547f07e4ec8b173c2337dd54a02
42661c6e06c547bf894a9882b253546c

2)进行CA根证书安装

9b266abfad0547e39ab7b4e003aae425

选择“始终信任“

d760e9fbbca94c5bb68265c54bd345af

1.2.3移动端证书安装

1)安装提示

Help栏SSL Proxying —Install Charles Root Certificate on a MobileDevice or Remote Browser。

675a65fafa0244bbb57dccd4ab0b3955

将移动设备连接上网络代理

924ed535a32940259406388e6b0f4fe2
35a066b71d724ebe99cea4b4da7bb5fd

2)根据提示使用IOS设备连接代理192.168.0.106,端口号8888,

5b82dfdb2dad4f7a879d3e5a42676cac

此时charles会提示有连接charles的请求,选择“Allow“,如果意外选择”Deny“,会在程序重新启动后再次询问。

6422f69500b041b68f3d372c3aa29296

3)移动端证书安装

网络代理设置好后,打开safari浏览器(推荐使用safari,其他品牌浏览器可能存在兼容性问题),在地址栏输入chls.pro/ssl。

配置描述文件,选择“允许“。

4fd669ef735648a2be92a41bd17d1d0f

安装描述文件

d732350b7f884b33bc2669464ccd2d11

“安装“证书

9c2658dee37e4e409a6fbfc29f9abaf0

全部安装完成后,在iphone设置 --通用 --描述文件与设备管理,查看已安装的证书

0099d4b633a548fa9ec4898dbc8a7948

4)启用SSL解析

13404d4fd0c4437d850403a3a5d71e17

右键Enable SSL

d6f9d35bd332405dadd1ed5cc0c1b1ed

所有步骤完成,结果仍然无法进行抓包,检查信任证书是否完全开启,ios10.3之后加入新的特性,需要在IOS设备中,通用 --关于本机 --证书信任设置,针对CA根证书开启完全信任,通过后如下图。

77867a71820e4a52be6d2527db4e293e

点击视图中的“扫把”图标,清空列表后,再次抓包。

67ed4c6d013a4f5a8fa67b6a1b4e99b7

如上图所示,现在已经可以进行完全解析https的抓包。

二、使用

Charles提供强大的视图功能,能够方便在可视化界面进行操作。

2.1视图功能

Structure(结构)视图

67ed4c6d013a4f5a8fa67b6a1b4e99b7

Sequence(序列)视图

根据请求的时间顺序进行接口展示

68c28e08438447f68f8539084ab8f730

2.2Modify修改网络请求

在日常的测试开发过程中,经常需要修改接口中的request或者response参数,下面举例说明如何修改某接口中的请求request参数。

1)选中某个接口

2)点击Edit功能按钮

3)选择请求数据以Form格式显示

af2ebc70b31f4d1bae0a53d1e9b8497a

4)选中下图中osType参数,修改值为02,最后执行

4e8d200680b44a86981e9c56a8417eeb

5)查看修改后的结果

d61e5501b0484bdc808570ed89bd799a

2.3设置重复网络请求

1)右键对应接口,选择Repeat或者RepeatAdavanced,Repeat表示重复请求一次

366e18fdc8154949848307e48e397b38

2)Repeat Advanced设置请求的单位时间次数,Iterations重复次数,Concurrency并发,Repeatdelay请求间隔。

c404f17808d1410eb1aef366c49ae884

执行重复请求10次,结果如下图。

7e15303306084eb1b65ad7719d55d33d

2.4设置BreakPoint断点debug模式

1)接口右键选择Breakpoints

2e7cea0d97044d72b0628e88b4f57442

2)修改请求参数4150 --4160,以Form方式显示,执行。

1ae912e4979c40bf8291ab4ca328462d

3)修改后请求的结果

292460c05aa249a99022fffc260aa2f7

注意:同样的方式可以修改服务端给到前端的response参数,伪造不同的接口返回,校验客户端业务逻辑。

2.5 MapLocal映射本地

将2.4中提到的接口修改response数据,修改endDate字段为“133000”,映射到本地,方便今后同样需要请求改参数值的情况。

1)接口选择save response保留至本地,如下图。

934e21a0662d450abea67d10cb3e412c

2)右键接口mapLocal,选择之前保留在本地文件

dd45869046df4e17b066ebfcf629afc2

3)再次请求,同样的接口,直接映射本地文件中的response数据。

e4bfe131f6b1487980ff40a65b44e1de

2.5网络流量控制

日常的测试过程需要模拟弱网、2g、3g、4g等网络带宽的情况,Charles同样提供相应的功能。

1)Proxy --Throttle Settings打开网络带宽限值界面,选中“EnableThrottling”。

Throttle preset阀门预设配置

Bandwidth带宽

Utilisation利用率

Round-trip-latency往返延迟

MTU最大传输单元(Maximum Transmission Unit)

Reliability可靠性

Stability稳定性

Unstable quality range不稳定质量幅度

1bb7f31e45034fc780b39deb74a58910

2.6其他常用功能

1)Focus关注,指定关注某个接口。

2)Ignore忽略,不再关注某个接口,撤回在Proxy--Recording Settings--Exclude。

3)Sort By排序,提供根据Name、Start Time、End Time、Request Size、Response Size、Size、Duration对接口进行排序。

三、工作原理

通过上述的第一、二章节,对怎样安装使用Charles进行了介绍,那Charles是如何工作的呢?

先来看看官网的介绍:

Charles is a web proxy (HTTP Proxy / HTTP Monitor) thatruns on your own computer. Your web browser (or any other Internet application)is then configured to access the Internet through Charles, and Charles is thenable to record and display for you all of the data that is sent and received.

In Web and Internet development you are unable to seewhat is being sent and received between your web browser / client and theserver. Without this visibility it is difficult and time-consuming to determineexactly where the fault is. Charles makes it easy to see what is happening, soyou can quickly diagnose and fix problems.

Charles作为一个“中间人代理”,当客户端和服务器通信时,Charles接收服务器的证书,但动态生成一张证书发送给客户端,也就是说Charles作为中间代理在客户端和服务器之间通信,所以通信的数据可以被Charles拦截并解密。由于Charles更改了证书,浏览器校验不通过会给出安全警告,必须安装Charles的CA证书后才能进行正常访问。具体流程如下:

3a77244f66b24bc48daba5ba62a8d214

1.客户端向服务器发起HTTPS请求。

2.Charles拦截客户端的请求,伪装成客户端向服务器进行请求。

3.服务器向“客户端”(实际上是Charles)返回服务器的CA证书。

4.Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)

5.客户端接收到服务器(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给服务器(实际是Charles)。

6.Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)

7.服务器用自己的私钥解密对称密钥,向客户端(实际是Charles)发送响应。

8.Charles拦截服务器的响应,替换成自己的证书后发送给客户端。

9.至此,连接建立,Charles拿到了服务器证书的公钥和客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了服务器证书公钥和HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。

希望大家通过此文能够对Charles抓包工具有系统完整的了解,谢谢!

参考文献:

1.rushjs.浅谈Charles抓取HTTPS原理. https://www.jianshu.com/p/405f9d76f8c4.

来自金管家测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值