Charles抓包工具-笔记

摘要

概念:

Charles是一款基于 HTTP 协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果来达到分析抓包的目的。

功能:

Charles 是一个功能全面的抓包工具,适用于各种网络调试和优化场景。

它的强大功能如 HTTPS 解密、断点调试和带宽模拟,使其成为开发者调试网络请求和分析问题的利器,但在使用时需注意合法合规性。

代理配置:

macOS:自动开启 Charles 代理本地IP

image.png

移动端:

如果手机和电脑不是同一个域名,需要配置一下 Charles 的 Access Control Setting,里面填一下对应的IP地址。

image.png


HTTPS证书配置:

目的:实现 Charles 能够解密 HTTPS 内容

客户端配置步骤:

1-下载如下的证书(记得配置下信任证书,否则配置无效)

image.png

2-配置 Charles( “proxy” ->“SSL proxying setting”),加一个 403 端口即可

移动端见下方笔记


Charles抓包实战

  • Https抓包
  • 弱网测试
  • 断点调试

Charles 工具简介

概念

Charles中文名叫青花瓷,它是一款基于HTTP协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。



核心功能

  1. 抓取 HTTP 和 HTTPS 请求
    • 能够捕获和记录所有通过代理发送的 HTTP/HTTPS 请求和响应。
  2. 数据分析
    • 解析和展示请求头、响应头、Cookie、Body 数据等,支持 JSON、XML等内容解析。
  3. 流量控制
    • 可以实现弱网环境的测试
  4. 支持接口并发请求
    • 实现并发请求的压力测试
  5. 请求修改和重发
    • 修改请求参数(如 URL、Header、Body)并重发,用于验证接口不同场景的行为。
  6. 断点调试
    • 设置请求或响应的断点,手动修改数据后继续执行,模拟不同的服务器响应或客户端行为。
  7. SSL 解密
    • 解密 HTTPS 流量,查看加密请求和响应的详细内容。
  8. 带宽模拟
    • 模拟不同的网络带宽条件(如慢速 3G、4G 等),测试应用在不同网络环境下的表现。
  9. 重定向与重写规则
    • 设置规则修改请求的 URL、路径或参数,用于测试本地开发或特定接口。
  10. 导出和共享数据
    • 支持抓包记录的导出和共享,方便团队协作。


使用场景

  1. 接口调试
    • 开发者可以查看请求参数是否正确,响应数据是否符合预期。
  2. 问题排查
    • 分析应用中的网络问题(如请求超时、响应慢、接口错误)。
  3. 前后端联调
    • 前端通过 Charles 查看后端接口返回的数据,调试接口对接问题。
  4. 移动应用抓包
    • 配置手机代理抓包,调试移动端网络请求。
  5. 模拟攻击与测试
    • 修改请求参数,测试服务器对异常输入的处理能力。


工作原理

image.png

前置步骤:

1、需要运行Charles并配置代理

2、在客户端上面需要配置代理

步骤:

1、由客户端发送请求

2、Charles接收 再发送给服务端

3、服务端返回请求结果给Charles

4、由Charles转发给客户端



Charles 优缺点

优点

  1. 功能强大:支持 HTTP/HTTPS 解密、断点调试、流量修改等高级功能。
  2. 跨平台:支持多个操作系统。
  3. 直观界面:可视化操作,易于上手。
  4. 插件扩展:支持规则自定义和自动化操作。

缺点

  1. 收费软件:免费试用有功能和时间限制。
  2. 证书安装复杂:特别是移动端 HTTPS 抓包时需要手动信任证书。
  3. 性能开销:对高频流量抓包可能会增加系统负担。

注意事项

  1. 法律与隐私:Charles 只能用于合法的抓包场景,不得用于窃取敏感信息或侵犯隐私。
  2. HTTPS 安全:Charles 的 SSL 解密功能会破坏 HTTPS 的安全性,仅在必要时启用,并妥善保管证书。

对比Fiddler的优点:

  • Charles能够支持linux、MacOs
  • Charles支持按域名和按接口查看报文,简洁明了
  • Charles支持反向代理
  • Charles网络限速可选择网络类型
  • Charles可以解析AMF协议



Charles 抓包配置

安装 Charles

  • 从官网(https://www.charlesproxy.com)下载并安装。
  • 支持 Windows、macOS 和 Linux。

组件介绍

image.png

主导航栏介绍

image.png

组件介绍

image.png

请求数据栏介绍

image.png



代理设置

image.png

桌面应用抓包

Charles 默认监听本机的 8888 端口,浏览器或应用需将代理服务器指向 127.0.0.1:8888

移动端抓包

  • 将手机连接到与 Charles 所在主机相同的 Wi-Fi。
  • 配置手机的 HTTP/HTTPS 代理为 Charles 的地址和端口。


访问控制

配置 Proxy 下的 Access Control Settings,从而允许对应 IP 实现通过 Charles 的代理访问

image.png


MacOS 代理设置

**注意:**Charles和客户端是同一台电脑的话,默认情况下电脑的代理已经设置完成,无需配置

image.png


如果Charles和客户端不是同一台电脑的话,具体配置如下:

1-网络配置:

image.png

2-显示当前电脑的IP地址:

image.png

3-配置网页代理和安全网页代理:192.xxx.3.45:7777

image.png



iOS手机 代理设置

移动端配置需要移动端和Charles同时配置

移动端配置:

1、在iOS手机中选择“设置”-“无线局域网”

2、点击已连接的无线网络名称

3、在HTTP代理的配置代理中选择“手动”

4、输入服务器IP地址及端点,点击“存储”

image.png

Charles配置:

如果手机和电脑不是同一个域名,需要配置一下 Charles 的 Access Control Setting,里面填一下对应的IP地址。

image.png




Charles 抓包实战

https抓包

https会加密内容:

image.png

**解决方案:**安装SSL证书

步骤一:在Charles窗口中点击菜单 “proxy” ->“SSL proxying setting”

  • 配置一个443端口

image.png

步骤二:在打开的设置窗口中勾选“Enable SSL Proxying”

步骤三:点击“OK”。

image.png


MacOS 证书配置

步骤一:打开 Charles,选择“Help”->“SSL Proxy”->“Install Charles Root Certificate”

image.png


iOS 证书配置

在电脑上运行Charles,且IOS手机设置好代理,在浏览器中地址栏输入:http://charlesproxy.com/getssl

image.png

image.png



弱网测试

步骤一:在Charles窗口中点击菜单“Proxy”->“Throttle Setting”

步骤二:在打开的设置窗口中勾选“Enable Throttling”

步骤三:在“Throttle preset”下拉框中选择对应的网络类型

步骤四:点击“OK”

image.png



断点调试

**作用:**用来构建异常的测试场景

1、右击接口链接,选择“Breakpoints”

image.png

2、在浏览器刷新对应接口的页面

3、此时会自动跳转到Charles并显示出接口请求信息

4、点击“Edit Request”,修改请求的信息,

点击 “Execute”

Case:

场景一:在人事管理系统中增加角色时,把角色名设置为空,然后请求到服务器

中间断点处理:把角色名设置为空

image.png

返回查看页面:新增字段为空,很明显不符合规定,应该找后端进行修改

image.png

场景二:针对查询员工接口请求时,修改返回数据success=false,code=999, message=操作失败

结果:页面显示为空




参考

  • 软件测试教程Charles抓包工具测试实战

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

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

相关文章

vue2面试题10|[2024-11-24]

问题1:vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…

Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源,使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分,并…

数据结构(顺序队列——c语言实现)

队列的概念: 队列是限制在两端进行插入和删除操作的线性表,允许进行存入的一端称为“队尾”,允许进行删除操作的一端称为“队头”。当线性表中没有元素时,称为“空队”。特点:先进先出(FIFO)。 …

Vulnhub靶场 Jangow: 1.0.1 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 命令执行2. 反弹shell3. 提权4. 补充4.1 其他思路4.2 问题 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 介绍: Difficulty: easy…

Fakelocation Server服务器/专业版 Centos7

前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…

持续集成与持续部署:CI/CD实现教程

以下是一个基于常见工具实现 CI/CD 的基本教程示例,这里以 Git、Jenkins、Maven(用于 Java 项目构建和管理依赖,其他语言项目可替换为对应构建工具)以及 Docker(用于容器化部署,非必需但很常用)…

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…

JavaScript中的箭头函数以及编写优化

箭头函数 1.1.1 箭头函数的概念 箭头函数时ES 6之后增加一种编写函数的方法,并且它比函数的表达式要更加简洁 箭头函数不会绑定this,arguments属性箭头函数不能作为构造函数来使用(不能和new一起来使用,会出现错误) //1.之前的方…

Java爬虫:获取商品详情的实践之旅

在当今这个信息爆炸的时代,数据的价值日益凸显。对于电商行业来说,商品详情的获取尤为重要,它不仅关系到产品的销售,还直接影响到用户体验。传统的人工获取方式耗时耗力,而自动化的爬虫技术则提供了一种高效解决方案。…

从零开始学习数据库 day0(基础)

在当今的信息时代,数据已经成为了企业和组织最重要的资产之一。无论是电子商务平台,社交媒体,还是科研机构,几乎每个地方都离不开数据库。今天,我们将一起走进数据库的世界,学习它的基础知识,帮…

C# 数据结构之【树】C#树

以二叉树为例进行演示。二叉树每个节点最多有两个子节点。 1. 新建二叉树节点模型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace DataStructure {class TreeNode{public int Data { get;…

单片机_简单AI模型训练与部署__从0到0.9

IDE: CLion MCU: STM32F407VET6 一、导向 以求知为导向,从问题到寻求问题解决的方法,以兴趣驱动学习。 虽从0,但不到1,剩下的那一小步将由你迈出。本篇主要目的是体验完整的一次简单AI模型部署流程&#x…

【Spiffo】环境配置:VScode+Windows开发环境

摘要: 在Linux下直接开发有时候不习惯快捷键和操作逻辑,用Windows的话其插件和工具都更齐全、方便,所以配置一个Windows的开发环境能一定程度提升效率。 思路: 自己本地网络内远程连接自己的虚拟机(假定用的是虚拟机…

使用eclipse构建SpringBoot项目

我这里用eclipse2018版本做演示,大家有需要的可以下载Eclipse Downloads | The Eclipse Foundation 1.打开eclipse,选择存放代码的位置 2.选择 file >> new >> project >> 选择springboot文件下的 spring starter project 2.这里选择N…

C++ 日期计算器的实现(运算符重载)

目录 一、前言 二、正文 1.1 Date类框架 1.2 两个日期间的直接赋值 1.3判断两个日期是否相同 1.4判断两个日期是否不同 1.5日期加天数 1.6日期天数 1.7日期的前置和后置 1.8日期减天数 1.9自身日期减天数 2.1自身日期前置--和后置-- 2.2两个日期的差值为差距天数 2…

PICO VR串流调试Unity程序

在平时写Unity的VR程序的时候,需要调试自己写的代码,但是有的时候会发现场景过于复杂,不是HMD一体机能运行的,或者为了能够更方便的调试,不需要每次都将程序部署到眼睛里,这样非常浪费时间,对于…

LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能

目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…

如何使用 Python 开发一个简单的文本数据转换为 Excel 工具

目录 一、准备工作 二、理解文本数据格式 三、开发文本数据转换为Excel工具 读取CSV文件 将DataFrame写入Excel文件 处理其他格式的文本数据 读取纯文本文件: 读取TSV文件: 四、完整代码与工具封装 五、使用工具 六、总结 在数据分析和处理的日常工作中,我们经常…

太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)

零. 前言 由于Bluedroid的介绍文档有限,以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等),加上需要掌握的语言包括Java/C/C等,加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…