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

news2024/11/12 9:51:12

文章目录

  • 导读
  • 软件版本
  • 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.coloradmin.cn/o/1244193.html

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

相关文章

C# Winform使用log4net记录日志

写在前面 Log4Net是从Java的log4j移植过来的,功能也与log4j类似,可以把日志信息输出到文件、数据库、控制台、Windows 事件日志、远程系统日志服务等不同的介质或目标。 Log4Net配置选项丰富灵活,并且可在运行时动态更新配置并应用&#xf…

Sui第七轮资助:八个项目共获得超过50万美元的资助

今日,Sui基金会宣布了本月获得资助的项目方,他们将获得超过50万美元的资助金,用于构建项目,推动Sui的采用和发展。要获得资助,项目必须提交提案,详细说明他们正在构建的内容、预算明细、关键里程碑、团队经…

Walrus 入门教程:如何创建模板以沉淀可复用的团队最佳实践

模板是 Walrus 的核心功能之一,模板创建完成后用户可以重复使用,并在使用过程中逐渐沉淀研发和运维团队的最佳实践,进一步简化服务及资源的部署。用户可以使用 HCL 语言自定义创建模板,也可以一键复用 Terraform 社区中上万个成熟…

好工具|datamap,一个好用的地图可视化Excel插件,在Excel中实现地理编码、拾取坐标

在做VRP相关研究的时候,需要对地图数据做很多处理,比如地理编码,根据“重庆市沙坪坝区沙正街174号”这样的一个文本地址知道他的经纬度;再比如绘制一些散点图,根据某个位置的经纬度在地图上把它标注出来。还有有的时候…

教育数字化转型:塑造未来学习新范式

在国家教育数字化战略行动指引下,我国正积极推动数字化赋能教育高质量发展,以塑造教育发展的新优势。如今,随着科技新基建的普及和数字化赋能教育的深入推进,未来的教育模型正在逐渐形成。 在新的教育模型中,数字化学…

C语言众数问题(ZZULIOJ1201:众数问题)

题目描述 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。 例如,S{1,2,2,2,3,5}。多重集S的众数是2,其重数为3。 编程任务…

UNETR:用于三维医学图像分割的Transformer

论文链接:https://arxiv.org/abs/2103.10504 代码链接: https://monai.io/research/unetr 机构:Vanderbilt University, NVIDIA 最近琢磨不出来怎么把3d体数据和文本在cnn中融合,因为确实存在在2d里面用的transformer用在3d里面…

【CCF-PTA】第03届Scratch第05题 -- 统计出现次数最多的字

统计出现次数最多的字 【题目描述】 我国自古流传下来不少脍炙人口的诗歌,各具特色,别具一格。有些诗只用寥寥几个字,就能描绘出生动的意境。 请找出以下诗篇中出现次数最多的字,如果有多个字出现次数相同,则答案为…

【精选】​​通道热点加持的LW-ResNet:小麦病害智能诊断与防治系统

1.研究背景与意义 小麦是世界上最重要的粮食作物之一,但由于病害的侵袭,小麦产量和质量受到了严重的威胁。因此,开发一种高效准确的小麦病害识别分类防治系统对于保障粮食安全和农业可持续发展具有重要意义。 传统的小麦病害识别分类方法主…

STM32 MAP文件

文章目录 1 生成Map2 map中概念3 文件分析流程3.1 Section Cross References3.2 Removing Unused input sections from the image(移除未使用的段)3.3 Memory Map of the image(映像的内存分布)3.3.1 加载域3.3.2 运行域 4 代码运…

Using PeopleCode in Application Engine Programs在应用引擎程序中使用PeopleCode

This section provides an overview of PeopleCode and Application Engine programs and discusses how to: 本节概述了PeopleCode和应用程序引擎程序,并讨论了如何: Decide when to use PeopleCode.决定何时使用PeopleCode。Consider the program environment.考…

【从零开始实现意图识别】中文对话意图识别详解

前言 意图识别(Intent Recognition)是自然语言处理(NLP)中的一个重要任务,它旨在确定用户输入的语句中所表达的意图或目的。简单来说,意图识别就是对用户的话语进行语义理解,以便更好地回答用户…

2020年12月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 关于广播消息,以下说法正确的是? A:只有角色,可以通过“广播消息”积木,向其他角色或是背景发送消息 B:只有背景,可以通过“广播消息”积木,向其他角色或是背景发送消息 C:背…

远端WWW服务支持TRACE请求

安全扫描的时候,扫出来的问题,这里不分享如何处理,就只分享下,如何找到有问题的端口。 通过命令 curl -v -X TRACE -I ip:port,这里的ip和端口就是扫描出有问题的服务器地址ip以及开放的服务端口。 观察返回值&#x…

建设数字工厂管理系统对企业来说有哪些优势

随着科技的飞速发展,数字化转型已成为企业持续发展的必由之路。在这一背景下,建设数字工厂管理系统显得尤为重要。本文将详细分析数字工厂管理系统给企业带来的优势,以及企业如何选择合适的管理系统和成功实施数字化转型。 一、数字工厂管理系…

【华为数通HCIP | 网络工程师】821-IGP高频题、易错题之OSPF(1)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

【AIGC重塑教育】AI大爆发的时代,未来的年轻人怎样获得机会和竞争力?

目录 AI浪潮来袭 AI与教育 AI的优势 延伸阅读 推荐语 ​作者:刘文勇 来源:IT阅读排行榜 本文摘编自《AIGC重塑教育:AI大模型驱动的教育变革与实践》,机械工业出版社出版 AI浪潮来袭 这次,狼真的来了。 AI正迅猛地…

【c语言】重温一下动态内存,int数组过大会造成栈错误

项目场景: 项目场景:互助群同学在刷题的过程中,遇到的一个题目,需要申请一个很大数组,于是这个同学就写了int[1000000],其实这样写也没有错,可是运行后却显示栈错误。于是就找到我来请教,我想就…

mapTR环境配置和代码复现

MAPTR: STRUCTURED MODELING AND LEARNING FOR ONLINE VECTORIZED HD MAP CONSTRUCTION 论文 :https://arxiv.org/pdf/2208.14437.pdf 代码:https://github.com/hustvl/MapTR MapTR,是一个结构化的端到端框架,用于高效的在线矢量化高精地图构建。我们提出了一种基于统一…