Charles工具的使用

简介

  • Charles 通过将自己设置为系统的网络访问代理服务器,这样所有的网络请求都会通过它,从而实现了网路请求的截获和分析。
  • Charles 不仅可以分析电脑本机的网络请求(HTTP 和 HTTPS),还可以分析移动端设备的网络请求

破解版Charles安装

  • 工具版本V4.2.8
  • 双击dmg,打开后输入密码xclient.info
    01
  • 安装完毕后,使用安装包中的charles.jar替换应用程序中的此文件进行破解
  • 安装包自带的破解文件的位置,如下图:
    02
  • 在应用程序中找到charles右击显示包内容,如下图:
    03
  • 找到应用程序中charles.jar文件所在的位置,并替换,如下图:
    04
  • 至此破解版的Charles安装完毕,去打开吧

使用教程

  • 由于简书对锚的支持不好,所以这里请复制目录中的标题搜索来达到快速定位到指定内容的目的

目录

  • Charles初始化设置@
  • 截取HTTP/HTTPS数据@
  • 过滤网络请求@
  • 修改网络请求@
  • 修改服务器返回内容@
  • 模拟弱网环境@
  • 服务器压力测试@
  • 反向代理@
  • 解决与翻墙软件的冲突@

Charles初始化设置@

  • 选择菜单中的“Proxy” -> "macOS Proxy",点击Grant Privileges进行授权,如下图:
    05
  • 此时电脑上的任何网络请求都可以在 Charles 的请求面板中看到
  • 工具界面介绍
    06
    • Structure将所有的网络请求按照域名划分并展示
    • Sequence将所有的网络请求按照时间排序并展示
  • 获取代理IP(图片1位置)和代理证书安装(图片2位置
    07

截取HTTP/HTTPS数据@

  • 要截获手机的网络请求就需要为 Charles 开启代理功能,选择Proxy-->Proxy Settings。填写代理的端口号并将Enable transparent HTTP proxying勾选上
    15
  • 获取Charles的代理IP
    32
  • iPhone上将Charles设置为手机的代理服务器步骤:确保手机和电脑连接是同一个wifi,点击手机wifi名称后的叹号--> 配置代理 --> 手动 -->服务器设置为图32中的IP,端口设置为8888(Charles默认端口为8888,可以通过Proxy Setting进行更改)--> 存储后就完成了代理设置
    33
  • Android华为手机版本)上将Charles设置为手机的代理服务器步骤:确保手机和电脑连接是同一个wifi长按对应的wifi网络-->修改网络-->勾选显示高级选项-->点击代理,选择手动-->设置服务器主机名为图32中的IP,服务器端口设置为8888(Charles默认端口为8888,可以通过Proxy Setting进行更改)-->点击保存后就完成了代理设置
    36
  • 截取 HTTPS 请求,需要安装 Charles 的 CA 证书
    16
  • 手机上安装CA证书如下图(在手机浏览器里输入chls.pro/ssl):
    37
  • 不管在手机上还是电脑上都要设置信任证书
    • 电脑上在keychain处将新安装的证书设置为永久信任
      38
    • 手机上安卓和iPhone的设置有所不同,这里说下iPhone的设置,安装完CA证书后,首先在通用里的描述文件里安装描述文件,安装完描述文件后在关于手机里找到证书信任设置设置为信任即可,此时重启App就可以抓包HTTPS的请求了
  • 另外有时会出现即使安装了CA 证书,Charles 还是不捕获 HTTPS 协议的网络请求,这时可以在Proxy --> SSL Proxying Setting --> 点击 Add 按钮 --> 在弹出的对话框设置里添加需要监听的 HTTPS 域或者使用*:表示监听所有 HTTPS 请求
    18
  • 设置完毕,就可以抓取 HTTPS 网络请求了

过滤网络请求@

  • 方法1:直接在Filter中输入关键字进行过滤
    11
  • 方法2:首先选中你想查看的请求,右键在菜单中勾选Focus,这样就可以只查看你感兴趣的请求了
    12
  • 方法3:忽略你不感兴趣的请求,右键在菜单中勾选Ignore,这样就可以过滤掉你不感兴趣的请求了
    13
  • 方法4:如果你不想每次都设置,可以将你经常查看的设置好,这样就不需要每次都要设置过滤了
    14

修改网络请求@

  • 对于捕获的网络请求,我们经常需要修改网络请求的URL、Headers、Cookie等信息。Charles 提供了对网络请求的编辑和重发功能。
  • 只需要选中需要修改编辑的网络请求,按下图进行操作
    19

修改服务器返回内容@

  • 为了方便调试代码,我们会有这种需求,修改接口返回的数据来模拟各种场景
  • Charles 为我们提供了超实用的功能,Map功能(Map Local、Map Remote)Rewrite功能Breakpoints功能,都可以实现修改服务端返回数据的功能,但是有区别和适用场景:
    • Map 功能适合长期地将某一请求重定向到另一个指定的网络地址或者本地 JSON 文件
    • Rewrite 功能适合对网络请求进行一些正则替换
    • Breakpoints 功能适合对网络请求进行一些临时性的修改(类似于断点作用,使用了此功能会在请求发出前接收到响应数据后都能断住来达到修改数据的目的)
Map功能
  • Map Local 功能

    • 将某个网络请求重定向到本地 JSON 文件
    • 先将某个接口的响应内容保存下来(选择对应的网络请求,右击点击 Save Response )成为 data.json 文件
      22
    • 然后编辑json数据为我们想要的目标映射文件
    • 将一个网络请求的内容映射到我本地的一个 JSON 文件,之后这个请求的内容都从网络变为返回我本地的数据了
      23
      24
  • Map Local 可能会存在一个小缺陷,其返回的 HTTP Response Header 与正常的网络请求不一样,如果程序设置了校验 Header 信息,此时 Map Local 就会失败,解决办法是同时使用 Rewrite功能将相关的HTTP 头部信息 Rewrite 成我们需要的信息

  • Map Remote 功能

    • 将网络请求重定向到另一个网络接口,适合于切换线上到本地测试服务到正式服务的场景。比如:从测试服务切换到正式服务
      25
  • 取消Map功能
    取消Map功能
Rewrite功能
  • Rewrite 适合对某个网络请求进行正则替换,以达到修改结果的目的
  • 可以针对特定的网络请求进行 Rewrite,选择Tools --> Rewrite在弹出的面板上勾选 Enable Rewrite。点击左下角的 Add按钮,设置Name便于辨识(如果有多个 Rewrite,为了后期容易区分),需要同时设置 Protocol、Port、Host、Path信息
    26
  • 然后对指定的 Type 和 Action 进行 Rewrite。Type 主要有 Add HeaderModify HeaderRemove HeaderHostPath等等。Where 可以选择 Request 和 Response。指的是下面的修改是针对 Request 还是 Response
    27
  • 完成设置后点击 Apply 按钮,即可生效。下次继续请求该网络,返回的内容就是我们刚刚设置的内容
Breakpoints 功能
  • 对网络请求进行一些临时性的修改(类似于我们开发的断点作用
  • Breakpoints 只存在于设置过的当前的网络请求,Charles 关闭后下次打开 Breakpoints 消失了
  • 对于我们设置了 Breakpoints 的网络请求, Charles 会在下次继续访问该请求的时候停止掉,就跟 debug 一样。此时我们可以 Edit Request,修改过 Request 之后点击右下角的 Execute 按钮。然后等到服务端返回的时候继续是断点状态,此时可以 Edit Response,修改过 Request 之后点击右下角的 Execute 按钮。
  • 对某个请求设置Breakpoints:选中要设置的网络请求 -> 右击 -> 点击Breakpoints
    28
  • 效果如下:依次为编辑Request - 编辑Response - 最终效果
    编辑Request
    编辑Reponse
    最终效果

模拟弱网环境@

  • 选择Proxy --> Throttle Settings
    20
  • 如果你想对指定主机进行弱网环境下的测试,可以点击上图的Add按钮,在弹出的面板上设置协议、主机、端口来对指定的主机进行弱网设置
    21

服务器压力测试@

  • 选中某个网络请 --> 右击 --> Repeat Advanced--> 弹出如下设置框
  • 在弹出的面板里面设置总共的迭代次数(Iterations)并发数(Concurrency)请求间隔时间(Repeat delay(ms))
    39
  • 专业的压力测试工具可以使用LoadRunner

反向代理@

  • Charles 的反向代理功能允许我们将本地指定端口的请求映射到远程的另一个端口上
  • 菜单栏 Proxy --> Reverse Proxies,下图表示将本地的 9999 端口映射到远程的 80 端口上,即:当访问本地的 9999 端口,实际返回的就是远程 80 端口的提供的内容
    40

解决与翻墙软件的冲突@

  • 以下方法适用于开启VPN时如何让VPN和Charles和平共处
  • 在 Charles 的 External Proxy Settings 中将翻墙的代理端口等信息填写
    09
    10
  • 需要关闭翻墙软件的自动设置,更改为手动模式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容

  • ①.Charles下载 Charles当前基本上都是收费软件,请大家支持正版软件!建议不管是windows还是Ma...
    优雅的猪阅读 12,492评论 7 24
  • 安装破解链接:证书的安装:使用一:使用二:Charles****简介: Charles是一款抓包神器,因为他是基于...
    JD2017阅读 928评论 0 0
  • 简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。...
    FITZ9311阅读 380,778评论 63 446
  • 简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。...
    彗星来的那一夜阅读 1,050评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,492评论 16 22