Charles使用总结

Charles简介

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

Charles界面功能介绍

image.png

左侧栏
Structure: 将网络请求按访问的域名分类
Sequence: 将网络请求按访问的时间排序
工具栏:
从左到右,一次为:
1、扫帚: 清除会话

2、圆: 开始/停止抓取会话
3、锁: 没啥用。
4、乌龟: 开启/关闭限流
5、六边形: 开启/关闭断点

6、笔: 编辑会话,然后执行
7、刷新箭头: 重新发一遍请求
8、勾勾: 验证会话

9、篮子: 跳转官网购买
10、扳手、齿轮: 一些其他功能的设置

Charles安装
官网下载地址: https://www.charlesproxy.com

Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。
因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为Charles强制关闭而遇到影响。


场景一: 抓取电脑网页上的网络请求

设置系统代理: Charles是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。

image.png

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

场景二: 抓取移动设备上的网络请求包

1、设置代理端口
Proxy > Proxy Settings,默认端口是8888,根据实际情况可修改。勾选Enable transparent HTTP proxying。


image.png

2、查看本机IP地址: Help > Local Ip Address。
当然,你也可以直接到电脑的 设置 > 网络 中选中连接的wifi直接查看。


image.png

3、配置手机代理: 手机需要和电脑连接同一个Wifi,连接后点击Wifi右边的感叹号,进入Wifi详情页,滑动到底部,点击HTTP代理下面的配置代理,进入配置代理页,改为手动配置,然后填入服务器、端口等信息。


IMG_1807.jpg

4、配置完手机代理后,打开需要抓包的app,请求就会发送到Charles,这时Charles会弹出一个Connection from的确认框,点击Allow就可以了。

5、当点击允许后,可以在Charles的Proxy > Access Control Settings里看到可以访问此代理服务器的列表。
这里第二个IP便是Charles允许访问的手机的IP地址。
注意: 如果第四部弹出确认框是手抖点了不允许,可以在Access Control Settings里手动添加手机的IP地址到允许访问列表里。或者重启Charles,手机再次启动app放松网络请求,会再次提示选择。

image.png

6、到这里,如果是抓取HTTP的包的话,基本OK了。如果要抓去HTTPS的包的话,还要经过一些额外配置,见下文。


抓取Https的额外配置

在不做任何证书配置的情况下,抓取Https看到的response是一堆乱码的字符。左侧Structure里看到的请求host也是一把锁的样子,点击展开后,下面的请求也都是一把锁,显示的<unknown>。


image.png

默认我们是看不到https的请求数据的。我们需要安装证书。一般需要如下两个步骤:

第一步: 配置电脑证书 (不配置好像也没问题)

1、在Charles的顶部菜单栏,选择 Help > SSL Proxying > Install Charles Root Certificate,就会把证书安装到电脑的钥匙串里。


image.png

打开钥匙串,钥匙串选择登录,种类选择证书,就可以看到安装的Charles证书了。


image.png

如果证书上有个红色的叉,是因为此证书不被信任,双击证书,展开信任那一栏,选择始终信任就可以了。信任完后,钥匙串看到的证书,红叉就会变成加号。


image.png

2、SSL Proxing > Install Charles Root Certificate on a Mobile Device or Remote Browser

第二步: 配置手机描述文件
  1. 下载描述文件。浏览器打开http://chls.pro/ssl,最好用手机自带的Safari打开,微信直接打开不会显示下载弹框。

    IMG_1803.PNG

  2. 安装描述文件。设置 > 通用 > 描述文件,点击右上角安装。


    IMG_1804.PNG
  3. 证书信任设置。设置 > 通用 > 关于本机 > 证书信任设置(滑倒底部才能看见),打开信任开关,在弹出的警告框点击继续就可以了。
    注意: 如果不打开这个开关,在SSL Proxying Settings设置了Include的所有服务器地址都是无法请求到数据的。
    虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。

    IMG_1806.PNG

第二步: 配置要抓取的https请求。

1、Proxy > SSL Proxying Setting,点击add,把需要抓取的https请求的host添加进去就可以了(port可填可不填)。下图为抓取百度主页是填入的host。
抓取一个不认识的网站或者app时,如何确认host?
Structure那一排列表,截取https://后面的那一截就是了。

image.png

其他功能

1、过滤

大部分情况下网络请求数量很多,想要在众多请求里找到某个特定请求很难。可以使用如下几种方法过滤。

1)、临时过滤:
在Sequence界面的Filter栏中填入要过滤的关键字。当然也可以选中Structure,同一个域名下的请求,点击展开不同的请求都按文件夹分类好了的,结构很清晰。

image.png

2)、过滤:
在 Charles 的菜单栏选择 Proxy > Recording Settings,然后选择 Include 栏,选择Add,然后填入需要监控的协议,主机地址,端口号(Port可填可不填),这样就达到了过滤的目的。

image.png

3)、Focus:
在需要关注的请求上,右键,选择Focus,这是其他请求就会被放到Other Hosts里,也能达到过滤的目的。

image.png

2、模拟弱网环境(网络限速)

在Proxy->Throttle Setting,然后勾选Enable Throttling,在Throttle Preset下选择网络类型即可。如果只需要模拟制定域名的弱网,可以勾选Only for selected hosts项,在下面点击add,在框中填入指定host即可。


image.png

3、修改网络请求

有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求,看其是否都能正确返回数据。Charles 可以方便地提供网络请求的修改和重发功能。只需要选中以往的网络请求,工具栏中点击Edit(那只笔的图标),即可创建一个可编辑的网络请求。


image.png

4、服务器压测

Charles可以使用Repeat 功能来简单地测试服务器的并发处理能力。在想要压测的网络请求上,右键,选择Repeat Advanced。
我们项目服务端做了不能重复请求,最简单的就是两次请求的时间戳不能一样,如果服务器有做这个限制的话,这个压测基本就没意义了,因为每次都会返回异常code

image.png

5、断点

Breakpoints介绍: 当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。弊端是,如果开发设置了请求超时时间,那么修改的速度慢了往往即使返回了也没有效果。

选中要断点的请求,右键,选择BreakPoints。然后点击工具栏的断点按钮(六边形图标)。


image.png

这时后,app执行一下这个打了断点的请求,Charles会跳出一个Breakpoints的会话框来,这时如果需要篡改请求,就点击Edit Request,然后点击底部Execute按钮,这时候请求就发出去了,等结果回来是会多出一个Edit Respose的选项,选中这个选项,然后底部在选择JSON Text,就可以篡改返回结果了,改完后点击Execute,app上就会展示成你篡改后的数据。


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

推荐阅读更多精彩内容