前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Charles 网络抓包工具详解与实战指南

Charles 网络抓包工具详解与实战指南

原创
作者头像
Lorin 洛林
发布2023-11-25 23:11:05
1.6K0
发布2023-11-25 23:11:05

导读

  • 了解网络抓包工具 Charles 的基本原理和核心功能,以及常用功能的使用案例。

软件版本

  • Charles 4.6.4

Charles

  • Charles 是在 PC 端常用的网络包抓取工具,移动端开发者可能接触更多,Web 端使用浏览器开发工具或者 Postman 已经基本可以满足我们开发中的需求,但 Charles 作为一款热门的网络包抓取工具,具备一些高级特性,比如请求重发、请求断点、网速截流、DNS欺骗、动态请求重写、请求名单限制等等,在某些场景能够帮助我们进行更加高效的完成开发工作。

基本原理

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

核心功能

  • HTTP & HTTPS 网络包抓取(PC端、Web端、手机端)
  • 网络请求修改、动态修改、重发、规则重发等
  • DNS欺骗、网速模拟,支持请求白名单黑名单等。
  • 支持 Mac、Win、Linux。

下载及安装

界面介绍

网络包展示

  • Charles 主要提供两种查看网络包的视图,分别名为 Structure 和 Sequence。Structure: 此视图将网络请求按访问的域名分类。 Sequence: 此视图将网络请求按访问的时间排序。

常用场景介绍

  • Charles 的功能很多,本文主要介绍一些常用的使用场景。

PC 端网络抓包

  • 勾选 Proxy | Windows Proxy
  • 开启 Charles 处于 Start Recording 状态
  • 上述操作完成后,打开浏览器访问,你会发现网络请求并没有被抓取,这是因为还没有配置浏览器的代理,Charles 启动的代理服务器如下图所示,你可以在 windows 设置中进行配置,也可以使用浏览器插件进行配置,本文演示使用 Chrome 代理插件 SwitchyOmega 配置:

移动端网络抓包

  • ++前提PC端和手机端需要在同一网络下++
PC 端配置
  • 开启 Charles 代理功能,代理配置 Enable transparent HTTP proxying
  • 开启 Charles 处于 Start Recording 状态
手机端配置
  • 通过 Charles 的主菜单 Help | Local IP Address 或者通过命令行工具输入 ipconfig 查看本机的 IP 地址。
  • 打开手机端的 WIFI 代理设置,输入PC IP 和 Charles 的代理端口。
  • 完成上述步骤,打开手机浏览器发起请求,看到 Charles 弹出手机请求连接的确认,点击 Allow,Charles 就可以抓取网络请求了。

开启 SSL 代理

  • 上述步骤全部完成后,点击发起一个请求,发现请求内容是乱码的,其实这是因为没有开启 SSL 代理,这是为什么呢?解答:猜测 + 理解不一定完全正确 这是因为没有开启 SSL 代理时,Charles 只是单纯的转发了客户端和服务端的请求,无法解密客户端和服务端建立 SSL 的通信内容。 开启 SSL 后,Charles 和客户端、服务端分别建立了 SSL 链接,并可以解密通信的内容。 因此,开启 SSL 代理后需要 Charles 生成 CA 证书并安装。
PC 端和移动端 CA 证书安装
Charles 直接安装
  • 电脑端安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate 安装证书。 设置 SSL 代理:通过主菜单打开 Proxy | SSL Proxy Settings 弹窗,勾选 Enable SSL proxying。
  • 移动端安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate on a Mobile Device or Remote Browser 安装证书。
Charles 下载 CA 文件手动安装
  • Help | SSL Proxying | save Charles Root Certificate(移动端选择.pem、PC端选择.crt)
企业微信截图_16899291019742.png
企业微信截图_16899291019742.png
  • 上述功能都配置完成后,就可以看到如上述的正常的请求,愉快的进行 debug 。

常用操作

请求重发
  • 重新发送该请求。
请求改写、动态改写
  • 修改原请求并进行重新发送;根据动态规则匹配请求修改请求的请求头或请求体。
断点(Breakpoint Settings)
  • 可以在客户端请求服务前以及响应时进行断点。
DNS 欺骗(DNS Spoofing)
  • 当通过 Charles 解析 DNS 时,将使用我们配置的 DNS 进行解析。
节流 Throttle Settings(网速模拟)
  • 模拟上下行网速。

更多功能

常见安装问题

  • 手机端安装证书后无法生效,重启一下 Charles
  • Android 7.0 (API 24)之后,做了改动,使得系统安全性增加了,导致APP 默认不信任用户域的证书,需要 root 后将证书放到系统证书。
  • 注意 PC 端 CA 证书存储位置
  • SSL 配置好证书后仍无法正常抓取(显示 unknown),确认一下是否已经配置 需要开启 HTTPS 代理域名和端口

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 软件版本
  • Charles
  • 基本原理
  • 核心功能
  • 下载及安装
    • 界面介绍
      • 网络包展示
    • 常用场景介绍
      • PC 端网络抓包
      • 移动端网络抓包
      • 开启 SSL 代理
      • 常用操作
      • 更多功能
  • 常见安装问题
  • 个人简介
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档