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

文章目录

  • 导读
  • 软件版本
  • Charles
  • 基本原理
  • 核心功能
  • 下载及安装
    • 界面介绍
      • 网络包展示
    • 常用场景介绍
      • PC 端网络抓包
      • 移动端网络抓包
        • PC 端配置
        • 手机端配置
      • 开启 SSL 代理
        • PC 端和移动端 CA 证书安装
          • Charles 直接安装
          • Charles 下载 CA 文件手动安装
      • 常用操作
        • 请求重发
        • 请求改写、动态改写
        • 断点(Breakpoint Settings)
        • DNS 欺骗(DNS Spoofing)
        • 节流 Throttle Settings(网速模拟)
      • 更多功能
  • 常见安装问题
  • 个人简介

导读

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

软件版本

  • Charles 4.6.4

Charles

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

基本原理

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

企业微信截图_16899319907819.png

核心功能

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

下载及安装

  • 下载及安装比较简单,在 Charles 官网下载最新版,直接安装,使用下面在线激活网站生成激活码激活即可。
  • 官网地址:https://www.charlesproxy.com/documentation/welcome/
  • 激活码在线生成:https://www.zzzmode.com/mytools/charles/

界面介绍

企业微信截图_16899217914191.png

网络包展示

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

常用场景介绍

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

PC 端网络抓包

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

企业微信截图_16899269738394.png

企业微信截图_16899265935318.png

移动端网络抓包

  • ++前提PC端和手机端需要在同一网络下++
PC 端配置
  • 开启 Charles 代理功能,代理配置 Enable transparent HTTP proxying
  • 开启 Charles 处于 Start Recording 状态

企业微信截图_16899274666861.png

手机端配置
  • 通过 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 证书并安装。

企业微信截图_16899276381870.png

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

  • 上述功能都配置完成后,就可以看到如上述的正常的请求,愉快的进行 debug 。

常用操作

请求重发
  • 重新发送该请求。

企业微信截图_16899297036663.png

请求改写、动态改写
  • 修改原请求并进行重新发送;根据动态规则匹配请求修改请求的请求头或请求体。

企业微信截图_16899296571927.png

断点(Breakpoint Settings)
  • 可以在客户端请求服务前以及响应时进行断点。

企业微信截图_16899302539605.png

企业微信截图_1689930316684.png

DNS 欺骗(DNS Spoofing)
  • 当通过 Charles 解析 DNS 时,将使用我们配置的 DNS 进行解析。
节流 Throttle Settings(网速模拟)
  • 模拟上下行网速。

企业微信截图_16899299777475.png

更多功能

  • 参考官网文档:https://www.charlesproxy.com/documentation/welcome/

常见安装问题

  • 手机端安装证书后无法生效,重启一下 Charles
  • Android 7.0 (API 24)之后,做了改动,使得系统安全性增加了,导致APP 默认不信任用户域的证书,需要 root 后将证书放到系统证书。
  • 注意 PC 端 CA 证书存储位置

10a9d6056eccbde1256ab4bde65b2e32.png
37c6c2d09c4ca1a270742ccc29c1f22e.png

  • SSL 配置好证书后仍无法正常抓取(显示 unknown),确认一下是否已经配置 需要开启 HTTPS 代理域名和端口

1697714675931.png

个人简介

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt+SQLITE数据库设计的会员卡管理系统

一、前言 本项目演示在QT中使用SQLITE数据库存储数据管理的过程。当前以会员卡管理系统为例,写了一个界面,完成会员卡的注册,添加,充值,查询,注销,导出顾客信息EXECL表格 等功能的实现。 演示 SQLITE数据库的建表、增、删、改、查等语句功能实现。 SQLite是一款轻型的…

计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)

目录 2012-34 原题 答案 解析 2018-34 原题 答案 解析 2009/2011-34 原题 答案 解析 2016-34 原题 答案 解析 2014-35/2017-34 原题 答案 解析 2013-34 原题 答案 解析 2015-34 原题 答案 解析 物理层的协议众多,这是因为物理层…

为啥 有了锤子,看啥都是钉子?

坏处:有了锤子,看啥都是钉子,有何坏处? 事倍功半,甚至适得其反。比如具有高并发设计经验的人,在初创系统初期,就设计高并发架构,其复杂度大概率无法支持试点业务快速落地&#xff0…

【DevOps】Git 图文详解(九):工作中的 Git 实践

本系列包含: Git 图文详解(一):简介及基础概念Git 图文详解(二):Git 安装及配置Git 图文详解(三):常用的 Git GUIGit 图文详解(四)&a…

【SpringMVC】 三层架构

一.lombok工具包 中央仓库查找这个工具包:https://mvnrepository.com/ 给类添加Data注解就可以获取gettter和setter方法 , 这样我们就不必写getter 和 setter 方法. 也可以给成员属性添加单独的getter 和 setter , 针对某个成员属性单独添加setter或setter方法. 二.如果使用spr…

ORACLE手动建库

1.确定oracle的实例名,以及数据库名 实例名称: ORACLE_SIDtest 数据库名称: test 2.手工创建如下目录: /oracle/admin/test/adump --对应的是spfile里参数audit_file_dest …

一起学docker系列之七docker容器卷技术

目录 1 为什么使用容器数据卷?2 数据卷的特点和优势3 使用数据卷的方法3.1 创建容器并挂载数据卷3.2 容器间数据卷的共享与继承 4 数据卷的权限设置5 注意事项5.1 解决权限问题5.2 路径自动创建 结语 对于容器化应用程序的数据管理和持久化,Docker 数据卷…

链表的回文结构

题目描述 题目链接:链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 题目分析 我们的思路是: 找到中间结点逆置后半段比对 我们可以简单画个图来表示一下: ‘ 奇数和偶数都是可以的 找中间结点 我们可以用快慢指针来找中:l…

如何实现图片轮播(python版)

为了实现图片自动轮播,我们可以使用Python编写一个简单的脚本。首先,我们需要安装一个名为Pillow的库来处理图片。在命令行中输入以下命令进行安装: pip install Pillow 接下来,我们编写一个名为image_slideshow.py的脚本&#x…

leetcode.884——字符串分割(substr),哈希(unordered_map)的练习

884. 两句话中的不常见单词 句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。 如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。 给你两个 句子 s1 和 s2 ,返回所有 不常用…

成为AI产品经理——模型构建流程(下)

目录 1.模型训练 2.模型验证 3.模型融合 4.模型部署 上节课我们讲了模型设计、特征工程,这节课我们来讲模型构建剩下的三个部分:模型训练、模型验证和模型融合。 1.模型训练 模型训练就是要不断地训练、验证、调优直至让模型达到最优。 那么怎么达…

Python“牵手”京东商品详情接口运营场景,京东商品详情接口调用指南

京东商品详情接口是一种程序化的接口,通过这个接口,商家或开发者可以使用自己的编程技能,获取京东平台上的商品详细信息。这个接口允许商家根据自身的需求,获取商品的标题、价格、促销价、优惠券、库存、销量、详情图片、SKU属性、…

YOLOv5分割训练,从数据集标注到训练一条龙解决

最近进行了分割标注,感觉非常好玩,也遇到了很多坑,来跟大家分享一下,老样子有问题评论区留言,我会的就会回答你。 第一步:准备数据集 1、安装标注软件labelme如果要在计算机视觉领域深入的同学&#xff0…

TC397 EB MCAL开发从0开始系列 之 [15.2] Fee配置 - QsBlock demo

一、Fee配置1、配置目标2、目标依赖2.1 硬件使用2.2 软件使用2.3 新增模块3、EB配置3.1 配置讲解3.2 模块配置3.2.1 MCU配置3.2.2 PORT配置3.2.3 Fls_17_Dmu配置3.2.4 Fee配置3.2.5 Irq配置3.2.6 ResourceM配置4、ADS代码编写及调试4.1 工程编译4.2 测试结果4.3 测例源码->

基于STC12C5A60S2系列1T 8051单片读写掉电保存数据IIC总线器件24C02一字节并显示在液晶显示器LCD1602上应用

基于STC12C5A60S2系列1T 8051单片读写掉电保存数据IIC总线器件24C02一字节并显示在液晶显示器LCD1602上应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC通信简单…

致远M3 反序列化RCE漏洞复现(XVE-2023-24878)

0x01 产品简介 M3移动办公是致远互联打造的一站式智能工作平台,提供全方位的企业移动业务管理,致力于构建以人为中心的智能化移动应用场景,促进人员工作积极性和创造力,提升企业效率和效能,是为企业量身定制的移动智慧…

15.Python 异常处理和程序调试

1. 异常处理 异常就是在程序执行过程中发生的超出预期的事件。一般情况下,当程序无法正常执行时,都会抛出异常。 在开发过程中,由于疏忽或考虑不周,出现的设计错误。因此,在后期程序调试中应该根据错误信息&#xff…

系统高可用设计-有感

文章目录 系统设计原则是 冗余 取舍系统运维的原则是规避线上异常 高可用设计通常从 系统设计和 系统运维 2 个层面来着手突破。 系统设计原则是 冗余 取舍 冗余:指集群部署 故障转移取舍:常见手段包括:超时控制、降级、限流 系统运维…

音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十)

介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

springboot(ssm灾害应急救援平台 应急管理平台Java(codeLW)

springboot(ssm灾害应急救援平台 应急管理平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&#x…