Charles学习总结

Charles是一个代理服务器,这意味着它位于你的应用程序和计算机的网络连接之间。当查尔斯自动配置您的网络设置时,它改变了您的网络配置以路由所有通过它的流量。这允许查尔斯检查计算机上的所有网络事件。
代理服务器处于强大的地位,但这也意味着滥用的可能性。这就是为什么SSL如此重要:数据加密防止代理服务器和其他中间件窃听敏感信息。
Charles还可以生成自己的自签名证书,您可以在MaciOS设备上安装SSL / TLS加密。由于此证书不是由受信任的证书颁发者颁发的,所以您需要告诉您的设备显式地信任它。一旦安装并受信任,查尔斯将能够解密SSL事件!

Charles代理截取网络请求

安装CharlesProfile证书文件

iOS

安装CharlesProfile证书文件

iOS

    1. 打开Safari,输入 https://chls.pro/ssl. Safari 将促进你安装 SSL证书.
    1. 安装 SSL Profile
SSL Profile

这样就可以抓SSL请求了,I guess~

SSL(Secure Sockets Layer 安全套接层)

SSL加密敏感请求和响应信息。你可能认为这会让查尔斯对所有HTTPS事件都毫无意义,对吧?不!查尔斯有一个偷偷摸摸的绕过加密的方法,你很快就会知道的

MacOS

Charles中,到Help菜单中,选择SSL代理安装Charles Root证书,钥匙链访问将打开。找到Charles代理…输入,双击获取信息。展开信任部分,在使用此证书时,请将其更改为始终信任的使用系统默认值。然后关闭证书信息窗口,您将会提示您的管理员密码来更新系统信任设置。

您可能需要退出并重新打开Safari来查看更改。

过滤抓取请求

开始抓包后,随着时间的推移,抓取到的网络包越来越多,这是我们可以使用过滤功能,来过滤出我们想要的网络请求。

Proxy -> Recording Settings 中可以设置网络包的过滤选项。

Proxy -> Recording Settings

过滤选项中有IncludeExclude 两种选项。只有当 Include 为空时,Exclude 中的设置才会生效。过滤条件支持通配符。

模拟慢速网络

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

Charles的菜单上,选择"Proxy"->"Throttle Setting"项,在之后弹出的对话框中,我们可以勾选上“Enable Throttling”,并且可以设置Throttle Preset的类型。如下图所示:

Charles模拟慢速网络

修改网络包

修改历史请求

可以将历史的请求修改后,再次发送。

只需选中某个请求,点击上方工具栏中的蓝色钢笔按钮(第四个),就可以进行修改。完成修改后,点击下方的Execute执行请求。

修改历史请求

添加断点

窗口上方的工具栏中,第四个按钮就是Enable BreakPoints,用来启用或禁用断点。也可以在 Proxy -> BreakPoints Setting中设置更多具体内容。

Charles中可以像调试程序一样添加断点。方法是右键点击左侧窗口的某个请求,选择BreakPoints添加断点。这样当这个请求发出或者收到response的时候,就会先被Charles拦截下来,并触发断点。

image

触发断点后,可以对断点的网络包进行各种编辑,然后再继续。点击Execute就可以继续。

同时,也可以在Proxy -> BreakPoints Setting设置断点的各种规则。例如,是在request的时候触发还是 response的时候。

image

由于设置断点时,Charles是先拦截下整个网络包,再触发断点,当网络包比较大的时候,常常会导致应用超时,触发网络错误的警告,因此,自动地根据规则修改网络包有时显得尤为重要。这就是下面要说的篡改。

拦截后可以修改post参数

image

然后可以修改Response,不用去麻烦测试修改数据,很爽有木有~

image

下面要介绍的就是直接Rewrite了啦~

篡改(Rewrite)

Rewrite 是按照一组事先设置的规则,篡改特定的网络包中的数据。

Tools -> Rewrite 中,选中Enable Rewrite 来开启 Rewrite

Rewrite

勾选 Debug in Error Log 选项,就能在 Charles 控制台中看到 Rewrite 的记录。

首先要在右侧的规则列表中添加一个新规则。在新规则中添加要RewriteLocation,然后再下方添加具体的篡改规则。规则中可以使用通配符。

image

这样稍后匹配条件的网络包到达的时候,Charles就会自动将其中的内容按规则篡改。

映射Map

Charles提供的映射功能可以将本地文件或者远程的服务器作为某个请求的Response。可以方便地进行一些特殊的测试。

  1. Map Local

本地映射,在 Tools -> Map Local。可以选择一个本地文件作为某个请求的Response,并且 Charles会帮你封装好Response

  1. Remote Remote

远程映射和本地映射的功能类似,只是将数据源换成了远程服务器。相当于将请求交给另一个服务器处理

网络环境模拟

Charles 还可以模拟不同网速环境,可以很方便地测试应用在网络差的情况下的bug。

Proxy -> Throttle Settings 中勾选 Enable Throttling,或者直接点击窗口上方的工具栏中的乌龟🐢按钮就可以启用,这个按钮十分形象。

Proxy -> Throttle Settings 中,添加要针对的Locations,如果选中Only for selected hosts,并且Locations中有数据,则只有 Locations列表中的请求会被限速,否则会对全局限速。在Throttle Configuration中可以对网络环境进行十分详细的配置,包括网络的稳定程度、网速、环境等。

Throttle Setting.jpg

SSL 代理

在使用 Charles 的过程中,我们会发现,只有未加密的 Http 请求才能被Charles 正确的解析出数据,其余的Https 请求都处于加锁的状态,但我们不可避免的需要抓取 Https 的包。SSL代理就可以完美解决这个问题。

要启用 SSL 代理,先要在 Proxy -> SSL Proxying Settings 中勾选 Enable SSL Proxying,然后配置要代理的 Location,一般可以直接填星号,以匹配所有请求。

SSL 代理设置.jpg

接下来还要安装 Charles 的证书。

Charles中的HTTPS代理的原理是,Charles 充当一个中间人,针对目标服务器动态地生成一个使用Charles根证书(Charles CA Certificate)签名的证书;请求发生的时候, Charles会接收web 服务器的证书,而把自己生成的证书给客户端看。

因此在在使用Charles作为HTTPS代理时,客户端在请求HTTPS接口的时候会弹出安全警告,提示Charles根证书不被信任。我们需要添加Charles根证书为信任证书中。

方法如下:

1、点击Help -> SSL Proxying,根据被抓包设备的类型,来选择对应的安装选项(如果是 OSX 就直接选择Install Charles Root Certificate);

2、如果是iOS真机,则会弹出下面的提示,此时不用按上面的提示来配置代理,只要按照上文的步骤配置过代理了就可以了。然后在Safari中打开chls.pro/ssl安装Charles的证书,就 OK 了。

提示.jpg

设置好 SSL 代理后,HTTPS 请求就统统解锁啦!

SSL 代理设置完成后.jpg

注意:iOS9以上系统要使用 Charles 作为 SSL 代理的话要关闭 APP Transport Security ,关闭方法为在APP的info.plist文件添加以下key:

<key>NSAppTransportSecurity</key>
<dict>
     <key>NSAllowsArbitraryLoads</key>
     <true/>
</dict>

Charles 是一个强大的抓包调试工具,它的功能远不止这些,但本篇作为一篇入门的博客,就先介绍这么多啦,更多功能等待大家探索~
套餐

注意 对于一些抓取请求的处理,关闭Charles后可能不会保存,所以可以到处文件哦~

配合Postman

Postman是一个测试API的利器。

Postman.png

Charles搭配Postman更好用噢~
PostmanChrome浏览器中的一个小应用,可以在Chrome应用商城中找到。是居家旅行测试Web API的好帮手!

Todo

学习Postman

参考

  1. 老司机活动中心的个人空间 - 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili

  2. OSX/iOS 抓包工具 Charles 入门 - 简书

  3. Charles Proxy Tutorial for iOS

  4. Charles Proxy: Getting Started

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

推荐阅读更多精彩内容