相关文章推荐
心软的松鼠  ·  科学名家与人文大师云集 ...·  6 月前    · 
强悍的咖啡豆  ·  大冷天还敢露腿过冬,我是这么穿的·  1 年前    · 
酒量大的爆米花  ·  【方志远讲明史】谁扮演了日本海盗?禁海令对明 ...·  2 年前    · 
爱吹牛的镜子  ·  HYDE VS NANA ...·  2 年前    · 
小胡子的蛋挞  ·  【海豚】比亚迪海豚报价,比亚迪海豚电动车图片_易车·  2 年前    · 
Code  ›  Charles抓包工具开发者社区
web技术 抓包 charles web代理
https://cloud.tencent.com/developer/article/1858087
眼睛小的番茄
2 年前
作者头像
清风穆云
0 篇文章

Charles抓包工具

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > QA一隅 > Charles抓包工具

Charles抓包工具

作者头像
清风穆云
发布 于 2021-08-09 11:39:21
733 0
发布 于 2021-08-09 11:39:21
举报

Charles 是一个 HTTP 代理工具,使开发人员能够查看客服端和 服务器 之间的所有 HTTP/ HTTPS/SSL 网络请求。 Charles 是在 PC 环境下常用的网络抓包截取工具,在做移动开发时,我们为了调试客户端与服务端的网络通讯协议,常常需要截取网络请求来分析。

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

下载安装

下载地址:https://www.charlesproxy.com/download/

根据自己的系统版本来选择对应的版本来安装即可, Charles 是付费软件,有 30 天免费试用期限,试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。

Charles主界面

Charles的主菜单包括: File、Edit、View、Proxy、Tools、Window、Help 。用的最多的主菜单分别是 Proxy 和 Tools 。

Charles 顶部工具导航栏中提供了几种常用工具:

证书安装

PC端安装证书

这里以 Win10 环境作为演示。打开 charles ,选择 help–>SSL Proxying–> Install Charles Root Ceriticate ,点击安装证书,一直点击下一步完成即可成功安装。如下图所示:

  1. 选择安装到本地计算机
  1. 将证书安装在 受信任的根证书颁发机构
  1. 最后提示导入成功,可以在证书路径中查看证书安装结果。

手机配置

如果我们需要对手机设备上的App进行抓包,那么需要在手机设备上进行证书和网络配置才能进行抓包。

charles端口配置

在 Charles 的菜单栏上选择 Proxy->Proxy Settings ,填入代理端口 8888 (注意,这个端口不一定填写 8888 ,也可以写别的端口,但是需要记住这个端口,最好不要和电脑其他服务端口冲突),并且勾上 Enable transparent HTTP proxying 就完成了在 Charles 上的设置。如下图:

查看电脑IP地址: Help->Local IP Address

手机设备证书安装

为了抓取 Https 请求,则必须在手机上安装 charles 证书,证书安装之前请务必将手机设备和电脑连接在一个 Wifi 网络环境下。

Android
  1. 在设备wifi连接配置好代理 电脑ip+8888
  2. 设置好代理之后在手机上任意打开一个 App ,此时 charles 会弹出是否允许连接的弹窗,点击 Allow
  1. 打开手机浏览器(最好不用设备自带的浏览器,使用 Chrome 浏览器)输入网址: chls.pro/ssl 下载证书直接安装即可。
  2. 部分设备通过浏览器无法安装的则需要导出证书到设备上安装,如 OPPO 和小米的设备。
OPPO&小米设备安装证书
  1. OPPO设备安装证书方法: help->SSL Proxying->Save charles root certificate ,下载一个 cer 的证书到你的电脑,然后放到手机目录。
  1. 打开手机设置->其他设置->设备与隐私->从储存设备中安装证书->搜索 cer ->然后点击安装之前放置的证书即可。
  2. 小米设备安装证书方法: help->SSL Proxying->Save charles root certificate ,下载一个 pem 的证书到你的电脑,然后放到手机目录。
  3. 进入小米手机 设置->更多设置(系统和设备)->系统安全->加密与凭据->从SD卡安装 , 手机左上角选择进入系统文件系统选择 .pem 证书,会提示输入锁屏密码输入锁屏密码安装成功。
  4. 如果设置好代理,在手机上进行任何操作 charles 没有任何反应,则需要判断 PC 和手机的网络是否可以 ping 通,可以在电脑上打开 cmd 窗口 ping 手机的 ip ,如果 ping 不通则需要设置手机和电脑在一个 wifi 环境下,如果在一个环境下需要重启 charles 或者设备使电脑和设备能够 ping 通。
iOS
  1. 在设备wifi连接配置好代理 电脑ip+8888
  1. 手机连接电脑代理,打开浏览器,输入网址: chls.pro/ssl
  2. 手机弹出提示:此网站正尝试打开“设置”已向您显示一个配置描述文件。您要允许吗?忽略|允许,选择允许,安装描述文件,并信任。
  3. iOS10 以上的手机需要在:设置→ 通用 → 关于本机 → 证书信任设置→ 找到 charles proxy CA 证书,打开信任即可。

抓包实践

PC端抓包

1.在菜单依次点击 Proxy-> Windows Proxy 即可开启对电脑请求进行抓包,如果安装后启动Charles没有看到该菜单,需要重启电脑即可。

  1. 打开浏览器打开百度页面,即可看到抓包请求。

Charles 主要提供两种查看抓包的视图,分别名为 Structure 和 Sequence 。

  • Structure :此视图将网络请求按访问的 域名 分类。
  • Sequence :此视图将网络请求按访问的时间排序。

使用时可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来, Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。

设置抓取https

Charles 默认只可以抓取 http 协议的包, https 的更安全,需要抓取 https 请求则需要配置:菜单栏 Proxy–>SSL Proxying Setting–>选择SSL Proxying ——>点击 add 在弹框中 port 里填写 443 ( 443 代表通用 https 端口号), host 中的 * 代表抓取所有地址的包。

移动端抓包

Proxy

Proxy 菜单包含以下功能:

  • Start/Stop Recording :开始/停止记录会话。
  • Start/Stop Throttling :开始/停止节流。
  • Enable/Disable Breakpoints :开启/关闭断点模式。
  • Recording Settings :记录会话设置。
  • Throttle Settings :节流设置。
  • Breakpoint Settings :断点设置。
  • Reverse Proxies Settings :反向代理设置。
  • Port Forwarding Settings :端口转发。
  • Windows Proxy :记录计算机上的所有请求。
  • Proxy Settings :代理设置。
  • SSL Proxying Settings :SSL 代理设置。
  • Access Control Settings :访问控制设置。
  • External Proxy Settings :外部代理设置。
  • Web Interface Settings :Web 界面设置。

Recording Settings

Recording Settings 和 Start/Stop Recording 配合使用,在 Start Recording 的状态下,可以通过 Recording Settings 配置 Charles 的会话记录行为。 Recording Settings 的视图如下图所示:

Recording Settings 有 Options、Include、Exclude 三个选项卡:

  • Options :通过 Recording Size Limits 限制记录数据的大小。当 Charles 记录时,请求、响应头和响应体存储在内存中,或写入磁盘上的临时文件。有时,内存中的数据量可能会变得太多, Charles 会通知您并停止录制。在这种情况下,您应该清除 Charles 会话以释放内存,然后再次开始录制。在录制设置中,您可以限制 Charles 将记录的最大大小。
  • Include :只有与配置的地址匹配的请求才会被录制。
  • Exclude :只有与配置的地址匹配的请求将不会被录制。

Include 和 Exclude 选项卡的操作相同,选择 Add ,然后填入需要监控的 Procotol、Host 和 Port 等信息,这样就达到了过滤的目的。如下图所示:

还有一种方法就是在一个请求网址上右击选择 Focus ,然后其他的请求就会被放到一个叫 Other Host 的分类里面,这样也达到了过滤的目的。如果选择 Ignore 那么该请求将会被放在 Exclude 中,如果希望恢复对该请求的捕捉那么需要从 Exclude 删除。

Throttle Settings

Throttle Settings 和 Start/Stop Throttling 配合使用,在 Start Throttling 的状态下,可以通过 Throttle Settings 配置 Charles 的网速模拟配置。 Throttle Settings 的视图如下图所示:

  • 勾选 Enable Throttling 启用网速模拟配置,在 Throttle Preset 下选择网络类型即可,具体设置可以根据实际情况自行设置。如果只想模拟指定网站的慢速网络,可以再勾选上图中的 Only for selected hosts 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
  • 勾选 Only for selected hosts 可以针对特定的域名来限制网速,否则是针对所有请求进行限速。

Throttle Settings 视图中的选项含义如下:

  • bandwidth :带宽,即上行、下行数据传输速度
  • utilisation : 带宽可用率,大部分是 100%
  • round-trip latency :第一个请求的时延,单位是 ms 。
  • MTU :最大传输单元,即 TCP 包的最大 size ,可以更真实模拟 TCP 层,每次传输的分包情况。
  • Reliability :指连接的可靠性。这里指的是 10kb 的可靠率。用于模拟网络不稳定。
  • Stability :连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
  • unstable quality range :不稳定质量范围。

Breakpoint Settings

Breakpoint Settings 和 Enable/Disable Breakpoints 配合使用,在 Enable Breakpoints 的状态下,可以通过 Breakpoint Settings 配置 Charles 的断点模式。

  • 勾选 Enable Breakpoints 启用断点模式,选择 Add ,然后填入需要监控的 Scheme、Procotol、Host 和 Port 等信息,这样就达到了设置断点的目的。然后可以来观察或者修改请求或者返回的内容,但是在这过程中需要注意请求的超时时间问题。
  • 也可以在某个想要设置断点的请求网址上右击选择 Breakpoints 来设置断点。

Windows Proxy

如果想要抓取电脑端的请求,勾选 Windows Proxy 选项即可;如果只需要抓取手机请求,则取消勾选这个选项。

Proxy Settings

可以设置 HTTP 或 Socket 的代理端口号,一般默认 8888

Web Interface Settings

Web Interface Settings 表示 Web 界面设置。 Charles 有一个 Web 界面,可以让您从浏览器控制 Charles ,或使用 Web 界面作为 Web 服务使用外部程序。在 External Proxy Settings 视图中勾选 Enable the web interface 选项启用 Web 界面。

可以允许匿名访问,也可以配置用户名和密码。还可以通过在配置使用 Charles 作为其代理的 Web 浏览器中访问 http://control.charles/ 来访问 Web 界面。

Web界面提供对以下功能的访问:

  • Throttling :激活或停用任何已配置的网络限制设置
  • Recording :开始和停止会话录制
  • Tools :激活和停用工具
  • Session :导出会话
  • Quit :退出 charles

Access Control Settings

Access Control Settings 表示访问控制设置。访问控制列表确定谁可以使用此 Charles 实例。可以选择 Add ,然后填入允许访问的 IP ,这样就达到了允许某个 IP 访问 Charles 的目的。

External Proxy Settings

External Proxy Settings 表示外部代理设置。可能在网络上有一个代理服务器,必须使用该代理服务器才能访问 Internet 。在这种情况下,需要将 Charles 配置为在尝试访问 Internet 时使用现有代理。

可以配置单独的代理地址和端口:

  • HTTP
  • HTTPS
  • SOCKS

Reverse Proxies Settings

正向代理

正向代理类似一个跳板机,比如在外网访问公司内网资源,直接访问访问不到,我们可以在公司内部搭建正向代理服务器,将请求发到代理服务器,代理服务器能够访问内网,这样由代理服务器去取到内网数据,再返回给我们,这样我们就能访问内网资源了。

反向代理

反向代理(Reverse Proxy)隐藏了真实的服务端,当我们请求百度域名( www.baidu.com )时,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了。 www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。 Nginx 就是性能非常好的反向代理服务器,用来做 负载均衡 。

总结

  • 正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端.
  • 反向代理即是服务端代理, 代理服务端,客户端不知道实际提供服务的服务端

charles 反向代理在本地端口上创建 Web 服务器,该端口透明地将请求代理给远程 Web 服务器。反向代理上的所有请求和响应都可以记录在 Charles 中。

Port Forwarding Settings

可以将任何 TCP/IP 或 UDP 端口配置为使用 Port Forwarding 工具从 Charles 转发到远程主机。这样可以调试 Charles 中的任何协议。

Tools菜单

Tools 菜单包含以下功能:

  • No Caching Settings :禁用缓存设置。
  • Block Cookies Settings :禁用 Cookie 设置。
  • Map Remote Settings :远程映射设置。
  • Map Local Settings :本地映射设置。
  • Rewrite Settings :重写设置。
  • Black List Settings :黑名单设置。
  • White List Settings :白名单设置。
  • DNS Spoofing Settings :DNS 欺骗设置。
  • Mirror Settings :镜像设置。
  • Auto Save Settings :自动保存设置。
  • Client Process Settings :客户端进程设置。
  • Compose :编辑修改。
  • Repeat :重复请求。
  • Repeat Advanced :高级重复请求。
  • Validate :验证。
  • Publish Gist :发布要点。
  • Import/Export Settings :导入/导出设置。
  • Profiles :配置文件。
  • Publish Gist Settings :发布代码段设置。

No Caching Settings

No Caching Settings 工具可防止客户端应用程序(如 Web 浏览器)缓存任何资源。因此,始终向远程网站发出请求,您始终可以看到最新版本。

该工具可以作用于每个请求(选中 Enable No Caching 即可),也可以仅对配置的请求启用(启用 No Caching 的同时,请选中 Only for selected locations )。

Block Cookies Settings

Block Cookies 工具阻止了 Cookie 的发送和接收。它可用于测试网站,就像在浏览器中禁用了 Cookie 一样。

该工具可以作用于每个请求(选中 Enable Block Cookies 即可),也可以仅对你配置的请求启用(启用 Block Cookies 的同时,请选中 Only for selected locations )。

Map Remote Settings

Map Remote 工具根据配置的映射更改请求站点,类似于重定向操作。例如:将访问百度的请求映射到请求搜狗。

另外,点击 Import 或者 Export 可以将配置导出或者导入。

Map Local Settings

Map Local 可以将请求响应数据替换为本地数据,例如:我们可以修改豆瓣读书页面内容。

  1. 首先打开豆瓣读书( book.douban.com )页面,然后将请求返回的 html 页面保存。
  1. 我们将保存的 html 页面内容进行修改,比如将“购书单”菜单改为“购书单2020”.
<div class="nav-items">
    <li    ><a href="https://book.douban.com/cart/"
     >购书单2020</a>
    <li    ><a href="https://read.douban.com/ebooks/?dcs=book-nav&dcm=douban"
            target="_blank"
     >电子图书</a>
 
推荐文章
心软的松鼠  ·  科学名家与人文大师云集 共同纪念吴健雄先生诞辰110周年-南京大学
6 月前
强悍的咖啡豆  ·  大冷天还敢露腿过冬,我是这么穿的
1 年前
酒量大的爆米花  ·  【方志远讲明史】谁扮演了日本海盗?禁海令对明朝是福是祸?_哔哩哔哩_bilibili
2 年前
爱吹牛的镜子  ·  HYDE VS NANA 日本史上最漫画明星真人(组图)-搜狐娱乐频道
2 年前
小胡子的蛋挞  ·  【海豚】比亚迪海豚报价,比亚迪海豚电动车图片_易车
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号