Charles使用指南

Charles使用指南

[TOC]

① Charles简介

Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

  • Charles 主要的功能包括:
  1. 截取 Http 和 Https 网络封包。
  2. 支持重发网络请求,方便后端调试。
  3. 支持修改网络请求参数。
  4. 支持网络请求的截获并动态修改。
  5. 支持模拟慢速网络。

② 将 Charles 设置成系统代理

Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。第一次启动Charles会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。

  • 为什么要设置系统代理?
  • Charles不仅仅用户手机抓包也可用于本机电脑抓包,设置成系统代理才会对本机所发送的网络请求达到截取的目的
Charles 设置成系统代理

③ 电脑设置Https证书

如果不进行https证书的设置,https的reqeust和response都是乱码,设置完之后https就可以正常解密愉快的玩耍。

第一步:安装证书到系统(windows同理):

点击Charles菜单的help->SSL->proxying->install charles root certificate

mac电脑安装信赖证书

第二步:在到电脑的钥匙串中信赖刚刚的证书:

mac电脑安装信赖证书
第三步:设置解密host:

1、在Charles的工具栏上点击设置按钮,选择Proxy Settings…

切换到SSL选项卡,选中Enable SSL Proxying。

2、SSL选项卡的Locations里填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名。比如填api.baidu.com,Port填443

mac端ssl设置

④ 手机设置代理

设置Charles代理

1、运行Charles程序,设置port
Proxy --> ProxySettings --> Proxies --> httpProxy



获取mac os当前ip

按住option键,点击右上角的wifi图标即可看到IP:


获取当前ip地址
或者在Charles中点击菜单:
image.png

⑤ 移动设备设置代理

打开iOS设置,进入当前wifi连接,设置HTTP代理,将服务器填为上一步中获得的IP,即192.168.199.147,端口填8888:(安卓原理相同)



<b>安卓因机型操作系统的不同,大致原理都相同。
注意:在不使用的时候需要将手机中得HTTP代理关闭,否则pc或者mac关机或者关闭软件后,手机无法正常上网!</b>


⑥ 移动设备安装https证书

安装证书的前提都是要先在移动设备上设置好代理

* ios安装证书

第一步:下载安装证书

ios相对比较简单,使用系统浏览器safari,输入地址:chls.pro/ssl,就会弹出描述文件安装弹层。按照提示安装描述文件即可
很多小伙伴在设置好代理,装好证书之后依然会出现https请求无法解包的情况!经过一段时间研究,找资料发现原来仅仅只是需要一个小设置即可!

设置-通用-关于本机-证书信任设置 , 打开相应证书的开关即可

证书信任设置
打开对应证书开关
打开对应证书开关
android安装证书

对于大部分安卓机型都可以使用相同的方法,系统浏览器输入地址:chls.pro/ssl,就会弹出安装证书的弹层安装即可
对于部分机型直接输入地址后下载的文件无法解析安装证书,可将Charles证书保存到本地,然后导入到安卓手机

安卓手机如何信任证书?

通用设置基本上都为:安全和隐私设置-更多安全设置-从sd卡安装证书即可


⑦ 过滤网络请求

通常情况下在抓包的时候,你可能只想关注一部分指定的域名所发送的网络请求,但是其他的请求总是那么多,那么下面就介绍两种方法来实现!

方法一:通过设置Recording Settings

Charles菜单选择“Proxy”->”Recording Settings” 选择Include 标签然后选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。
1、Protocol:不选择则不区分http和https
2、Host:可以设置泛域名,如 *.baidu.com
3、Port:可以不设置
4、Path:根据需求在需要只监控部分接口时使用
5、Query:根据需求在需要只监控部分接口时使用


Recording Settings
方法二:右键菜单Focus

这个方法比较简单快捷,在一些临时情况下可以很快进行过滤,比较方便,方法则是:在想过滤的网络请求上右击,选择 “Focus”


Focus

PS:有很多小伙伴在Focus之后就忘记了哪些Focus过,以至于Charles显示出来的过滤的请求比较杂!在菜单 “View->FocusedHosts...”中进行管理Focus过的域名


FocusedHosts...

⑧.模拟网络

不管是在做app开发还是app测试的时候,模拟慢速网络或者高延迟的网络看应用的表现是否正常都是必要的,可以通过以下设置进行操作:“Proxy”->”Throttle Setting”勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。

Throttle Setting

如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

Enable Throttling

⑨.编辑网络请求

有时候在调试或者测试的时候需要反复不断的尝试不同的参数来调用接口,Charles 可以方便地提供网络请求的修改和重发功能,只需要编辑一下,进行修改之后执行即可,如下Gif演示

compose

⑩.修改服务器返回内容

常常有时候需要模拟一些数据异常的情况,通过Charles对返回值进行修改,那么在进行测试的时候必然会事半功倍,不会受到后端程序和数据的禁锢!Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。

1、Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。

2、Rewrite 功能适合对网络请求进行一些正则替换。

3、Breakpoints 功能适合做一些临时性的修改。

1、Map

Charles 的 Map 功能分 Map Remote 和 Map Local 两种,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件

Map Remote

可以通过Map Remote+moke数据来实现:

Map Remote

对于Map Local,通俗来讲可以将一个接口的返回值通过Charles指向一个本地文件,本地文件中可以变成任何你想让接口返回的数据。比如本地当前保存过一个response文件(返回值文件,可以通过右键"save response"进行保存)

Map Local

Map Local 在使用的时候,有一个潜在的问题,如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是下面提到的 Rewrite 功能

2、Rewrite

Rewrite功能十分强大,在用的时候简直是事半功倍,打个比方:App已经做好了,但是接口这时候增加了一个参数,但是App本身是没问题的,App的人已经下班了,需要你验证一下这个接口发上去会不会影响到App,这时候就可以用rewrite了,通过重写接口请求,后把数据给App来查看app情况再合适不过了。好用到不能在好用。

举个栗子:

当前接口返回了一个分类叫“潮品”,这时候我想改成别的,比如“优雅的猪”。

1、首先进入rewrite菜单“Tools->Rewrite”

rewrite

2、首先要打开rewrite功能,勾选"enable rewrite"你会看到左边的菜单下面有个“ad

d”,点击添加一条rewrite规则

rewrite

3、设置location,要告诉Charles你要修改哪个

location

4、设置修改规则,Charles提供了多种类型的修改规则

Add Header:请求中增加请求头

Modify Header:修改请求头

Remove Header:删除请求头

Host:修改指向

Path:修改路径

URL:修改请求地址

Add Query Param:增加请求参数(GET接口)

Modify Query Param:修改请求参数(GET接口)

Remove Query Param:删除请求参数(GET接口)

Response Status:修改返回值的HTTP状态值,如:404

Body:修改返回值的详细内容(POST接口)

Rewrite

设置好之后,可以replay一下请求,也可以用调用接口的app再试一下

Rewrite

3、Breakpoints

Breakpoints 功能类似我们在设置的断点一样,以下一张Gif能说明,如果看不懂,那就多看几遍、

Breakpoints

需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。


关于和"代理"共存

在实际的使用当中,大部分人为了一些资料的查询,通常是要guge一下的。
但是大部分的"代理"软件和charles的原理都是一样的,通过设置系统代理,所以,就出现了用charles就不能"代理"的现状。
找了一部分资料,发现通过charles设置外部代理就可以解决这个问题
首先你要知道你的"代理"HTTP代理的端口是多少,在你"代理"软件的设置里


duo

进入charles菜单:proxy → External Proxy Settings...


image.png

勾选 use external proxy server
并且分别设置好http和https的ip和端口
端口即为:你"代理"软件里的端口
ip则为:你本地ip 127.0.0.1
image.png

设置完成,手机挂charles代理后,你会发现手机网络也可以实现google内容

其实原理即为:
让请求先通过charles,charles再转发给"代理"。指定http(s)代理端口为charles,charles设置外部代理为"代理"。最终访问网络的是"代理"后的网络,charles即作为前置代理。

end.解惑

  • 问:为什么我设置完代理之后就不能上网了?chales里面也没有请求?

  • 答:看看代理ip设置的对不对,电脑防火墙等等关闭没有!如果设置的没有问题的话,就再进入Charles菜单
    Proxy-Access Control Settings 增加你移动设备ip即可

  • 问:为什么我抓包https都是小锁,看不到内容?

  • 答:需要在设置https解密了,上文提到的第③部分

  • 问:为什么我抓包的https都是红色的unknown?

  • 答:明显就是https证书的问题了,要检查电脑证书有没有安装信任,手机证书有没有安装信任,没有没有设置https解密

  • 问:我自己手机能抓包,为什么这个手机不能抓包?

  • 答:每一台移动设备都需要重新安装你电脑Charles颁发的https证书,也就是说每台手机你只要想看,那么就要装证书

  • 问:不装https证书行不行?

  • 答:当然行!正常的http请求都是没问题的,只是看不到具体https的请求内容罢了,随意

  • 问:怎么抓电脑的包?

  • 答:charles默认就是可以抓电脑包的,设置了系统代理之后需要关注的就是,关闭其他"代理"软件即可

  • 问:从哪能搞到到破解版Charles?

  • 答:请支持正版软件,抵制不良破解软件


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容