flyEn'blog

抓包工具-Charles使用

简介

Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

Charles下载:https://www.charlesproxy.com/latest-release/download.do

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

Charles激活码:Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4

Charles 主要的功能包括:

  • 截取 Http 和 Https 网络封包。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 支持模拟慢速网络。

激活步骤

image-20200529113704545

HTTP代理设置

设置PC端代理端口号

image-20200529120253755

设置端口号如:8888(默认,也可更改,手机设置代理与之输入一致即可)

image-20200529120422695

⚠️这边注意,如果打开浏览器出现如下页面:

image-20200529132816868

多半因为,MAC系统未安装charles证书导致,解决方法如下:

image-20200529133041885

image-20200529133104878

image-20200529133204845

将证书改为始终信任就可正常访问百度啦~,并且charles里也有相应的请求记录了。

设置手机端代理端口号

查看IP地址

注意→手机连接与Mac相同的无线网,查看当前Mac IP地址。

image-20200529134056239

IOS手机代理设置

设置-无线局域网-配置代理-手动,输入上一步电脑的IP地址,和Charles设置的端口号。

image-20200529134119814

安卓手机代理设置

设置-WLAN,进入已连接WiFi手动设置(端口需与PC端设置端口号一致)

image-20200529134540686

不同安卓手机弹出设置代理入口不同,如果进入网络详情页无代理项,可在WLAN列表长按wifi名称弹出代理设置如下:

image-20200529134604976

当手机进行数据请求时,Charles 将弹出是否允许连接此代理(选择允许 allow),之后便可进行http抓包

image-20200529134622200

HTTPS代理设置

上面讲述了http的代理设置,但有时候发现抓到的https全是乱码,故需要进行https代理设置,手机上需要安装Charles SSL证书认证,证书下载地址:charlesproxy.com/getssl,以下分别是iOS和安卓手机的证书安装方法。

Pc端SSL设置

  1. 选中Proxy→SSL Proxying Setting

  2. 开启SSL代理,并添加信任地址

    image-20200529134858272

IOS证书安装步骤

image-20200529135045243

点右上角安装,提示输入手机锁屏密码,密码输入完成后安装成功

image-20200529135116117

最后进入设置-通用-关于本机-证书信任设置,选择Charles信任-继续,安装完成!

image-20200529135137841

安卓手机安装步骤

image-20200529135301639

证书下载成功后,进入设置-更多设置-系统安全-从存储的设备安装页面,查看已下载的证书,选择证书安装,输入证书名称,证书命名可随意填写,确定后安装成功!

image-20200529135318442

PS:以上为小米手机安装路径,不同安卓手机设置里面选择不同,可自行查找系统安全进入证书安装。

Charles的功能使用

  1. 视图 Structure 和 Sequence
  2. 过滤Focus
  3. 重复请求 Repeat/Repeat Advanced (可做简单的并发压测)
  4. 断言 Breakpoints
  5. 重定向Map Remote
  6. 网速模拟 Throtting

使用文档参考:

  1. https://juejin.im/post/5b8350b96fb9a019d9246c4c

  2. https://juejin.im/post/5c0a430f51882516207d205d

Fork me on GitHub