Charles抓包工具使用指南:设置功能详解与最佳实践前段时间入职了一家公司,项目中的代码注释比较少。而且代码量大

Charles是一款强大的抓包调试工具,相信做Android和Apple开发的同事会经常用到。我平时在PC端抓包接口也经常用Charles。而且Charles对移动端的支持非常友好,能够方便地与模拟器或真实设备结合,帮助开发者分析app的网络流量。它不仅支持HTTP请求,还可以通过SSLProxying解密HTTPS流量,让开发者可以查看加密的数据。

Charles对移动端调试的支持非常友好,可以通过代理和SSL解密轻松捕获app发出的网络请求。此外,Charles的断点、限速等功能也能帮助我们模拟真实的网络环境,提升调试效率。这些特点使Charles成为移动端开发者的理想选择,特别是在没有接口文档的情况下,通过抓包可以直观地查看请求参数和响应格式,为理解代码逻辑提供极大帮助。

要开始使用Charles,我们首先需要完成下载和安装。以下是具体步骤:

我激活的时候用的是上面的这个账号和key。不过这个会不会长期有效我就不确定了哈。

Charles的主界面主要就长这样:

我先说明一下上面那几个图标的功能和用处:

扫帚图标(ClearSession):

红色圆圈(Record/Stop)

锁图标(SSLProxying)

乌龟图标(Throttling)

六边形图标(Breakpoints)

钢笔图标(Edit/Compose)

旋转箭头(Repeat)

绿色勾图标(Auto-Respond)

扳手与螺丝刀图标(Settings/Tools)

齿轮图标(ProxySettings)

这些图标和按钮是Charles主界面中最常用的工具,能够帮助用户灵活控制抓包、限速、断点调试等功能,让网络调试过程更加高效。

可以看到Charls左侧有两个查看封包的视图,分别名为Structure和Sequence

Structure和Sequence是用于查看和组织捕获到的网络请求的两种不同视图方式:

就像这样的结构

Charles的菜单栏包含了各种功能选项,是我们进行抓包设置、调试和控制的主要入口。其中我们用的最多的就是Proxy和Tools这两个菜单。稍后调试也是需要操作这两个菜单,我先介绍下各个菜单项的功能和用法:

接下来我们重点了解一下Proxy菜单和Tool菜单的使用。

Proxy菜单各项的简单说明上面我们已经说过了。现在我们说几个平常用的比较多的选项:

RecordingSettings是Charles中用于配置录制选项的设置。通过这个选项,用户可以控制Charles在抓包过程中的录制行为,设置录制的数据量限制、请求记录的数量,以及WebSocket消息的记录量等。它的主要作用是帮助用户优化抓包数据的管理,防止Charles记录过多数据而导致系统性能下降或数据杂乱难以管理。

点击RecordingSettings...后,会弹出一个设置窗口,如截图所示,包含以下三个标签页:

当打开Include标签页时,会看到一个列表,其中列出了当前已经配置的过滤条件。如果这个列表为空,则Charles将默认记录所有请求。列表中的每个条目表示一个过滤条件,只有符合这些条件的请求才会被记录到会话中。

注意:所有字段均支持使用通配符*和进行匹配。例如,*表示任意字符,表示单个字符。

假设我们只想记录以下请求:

步骤如下:

通过设置Include标签页中的过滤条件,用户可以灵活控制Charles只记录特定请求,减少无关数据,提高数据的管理效率。这在需要聚焦于特定API或域名时非常有帮助。

SSLProxyingSettings(SSL代理设置)是Charles中用于配置SSL流量解密的功能。通过启用SSL代理,Charles可以拦截和解密HTTPS请求,帮助用户查看加密流量的内容。这对于调试HTTPS请求非常有用,尤其是在查看和分析数据包内容时。SSLProxyingSettings包含四个标签页:SSLProxying、ServerCertificates、ClientCertificates和RootCertificate,以下是每个标签页的详细介绍。

假设只想解密来自example.com域名的HTTPS流量,可以执行以下操作:

SSLProxyingSettings是Charles中非常重要的功能,主要用于配置HTTPS流量的解密。通过SSLProxying标签页设置需要解密的流量范围,而ServerCertificates、ClientCertificates和RootCertificate标签页则帮助用户管理证书,确保Charles能够成功解密加密的流量。在需要调试HTTPS请求和查看加密数据内容的场景中,这些设置至关重要。

ThrottleSettings是Charles中用于设置网络限速的选项,能够模拟不同的网络环境(如慢速连接、延迟较高的网络等)。通过此设置,我们可以在Charles中为请求配置带宽、延迟和其他网络特性,以测试应用在不同网络条件下的表现。这个功能对于移动应用或Web应用的性能优化和稳定性测试尤为重要。

打开ThrottleSettings界面后,看到如下设置项:

Charles提供了多项预设和自定义的限速设置,以便模拟不同的网络条件。主要参数如下:

ThrottleSettings为开发者提供了丰富的网络模拟功能,是Charles中用于性能测试和网络行为分析的重要工具。

BreakpointSettings是Charles中设置请求和响应断点的功能,允许用户在请求发送前或响应返回前拦截流量并手动查看、修改内容。这个功能非常适合用于调试和测试不同的请求参数或响应数据,帮助开发者模拟各种场景,观察应用的处理逻辑。

打开BreakpointSettings后,可以看到以下选项:

注意:这些字段支持使用通配符*和进行匹配,以便更灵活地设置断点条件。

一旦断点被触发,Charles会暂停请求的发送或响应的返回,并弹出断点窗口。在断点窗口中,可以进行以下操作:

这在模拟不同场景时非常有用,比如返回特定的错误代码或数据,观察客户端在不同响应情况下的表现。

BreakpointSettings是Charles中强大且灵活的调试工具,尤其适合用于精确控制请求和响应的行为,有助于深入测试和调试网络请求。

ReverseProxies是Charles中的反向代理功能,允许用户将请求重定向到另一个服务器或地址。通过设置反向代理,开发者可以在不修改客户端代码的情况下,将应用程序的请求从一个服务器重定向到另一个服务器,比如将请求从生产环境重定向到测试环境。这在调试、测试和环境切换中非常实用。

ReverseProxies是一个灵活的工具,帮助开发人员轻松管理和切换请求流向,避免直接修改客户端代码,从而更高效地完成调试和测试工作。

PortForwardingSettings(端口转发设置)是Charles中用于配置端口转发的功能。端口转发允许用户将本地的TCP和UDP端口流量重定向到远程服务器上的指定端口,这在开发和测试场景中非常有用。例如,可以将本地应用程序的请求转发到远程服务器的特定端口,或模拟不同的服务器环境。

打开PortForwardingSettings界面后,会看到以下设置项:

注意:必须确保远程服务器的端口是开放的,并且防火墙允许通过。

假设我们希望将所有对本地端口8080的请求转发到远程服务器test.example.com的80端口,步骤如下:

现在,所有发送到本地端口8080的请求都会被自动转发到test.example.com的80端口。

PortForwardingSettings是Charles中的高级功能,帮助开发者灵活地控制本地和远程服务器之间的流量转发,极大地简化了在多服务器或多环境下的测试流程。

macOSProxy(在Mac上)和WindowsProxy(在Windows上)是Charles中的系统代理设置功能。它们的作用是将Charles设置为操作系统的全局代理,从而捕获系统中所有网络请求。通过启用这个选项,Charles可以自动拦截和监控操作系统以及所有应用程序的网络流量,而不仅限于浏览器。

macOSProxy和WindowsProxy功能是Charles提供的便捷设置,适用于全局抓包、HTTPS解密和跨应用的流量分析,使调试和测试更加高效。

ProxySettings(代理设置)是Charles中用于配置代理行为的选项。通过这个设置,用户可以控制Charles的代理端口、SOCKS代理、系统代理等参数,灵活管理Charles捕获的网络流量。ProxySettings中包含三个标签页:Proxies、Options和macOS,每个标签页都有不同的功能和用途。

ProxySettings是Charles的核心配置之一,帮助用户管理代理行为,使Charles能够灵活地捕获和分析指定的网络流量。

AccessControlSettings(访问控制设置)是Charles中用于管理访问权限的功能。通过设置访问控制列表,用户可以决定哪些设备能够连接到Charles实例,从而控制Charles代理的安全性和访问权限。

AccessControlSettings提供了一个简便的访问控制方式,使得Charles的代理服务更安全,并且能灵活适应多设备的调试需求。

ExternalProxySettings(外部代理设置)是Charles中用于配置外部代理服务器的选项。通过此设置,用户可以让Charles使用外部代理服务器访问互联网,适用于需要通过其他代理才能连接网络的情况,比如在公司内网中使用Charles时,可能需要配置一个外部代理。

ExternalProxySettings功能非常灵活,帮助用户在多代理环境中灵活配置网络连接,以便在不同的网络需求下正确捕获和分析流量。

WebInterfaceSettings为Charles提供了远程访问和控制的能力,特别适合需要跨设备调试和多人协作的环境。通过灵活的访问控制设置,可以在保证安全的同时方便地共享抓包数据。

NoCachingSettings(禁用缓存设置)是Charles中主要用于禁用客户端缓存,以确保每次请求都能从服务器获取最新的数据。禁用缓存在调试和测试时非常重要,特别是在需要查看实时响应或测试缓存策略的时候,避免因缓存导致的内容不更新问题。

NoCachingSettings是Charles提供的一个实用工具,帮助开发者在调试和测试过程中获取最新的服务器响应,避免缓存带来的数据滞后问题。

BlockCookiesSettings(禁用Cookie设置)是Charles用于在调试过程中禁用Cookie。启用该功能后,Charles会拦截并阻止所有请求和响应中的Cookie,确保不会传递Cookie数据。这在测试无状态请求或避免身份验证干扰的场景中非常有用。

MapRemoteSettings(远程映射设置)是Charles允许用户将本地请求重定向到不同的远程服务器或路径。通过设置远程映射,用户可以将请求从一个地址“映射”到另一个地址,而不需要修改客户端代码。这在调试和测试过程中非常实用,尤其是在需要测试不同环境或切换API服务器时。

这是请求的原始地址,即需要被重定向的请求位置。具体选项如下:

这是请求的目标地址,即映射后的请求将会重定向到的地址。

通过这个界面,用户可以灵活地设置请求的重定向规则,使得Charles能够轻松地在不同服务器和路径之间切换请求流向。

MapRemoteSettings是Charles提供的强大映射工具,允许用户在不同服务器和路径之间灵活切换,适合多环境测试、API版本对比和远程资源模拟,是开发和测试过程中的一大便利。

MapLocalSettings(本地映射设置)可以将特定的远程请求映射到本地文件。通过本地映射,用户可以使用本地文件来响应来自指定远程服务器的请求。这在测试和开发过程中非常有用,尤其是在调试静态资源或模拟服务器响应时,无需频繁访问远程服务器。

MapLocalSettings是Charles中一个灵活实用的功能,可以大幅度提升调试效率,帮助开发者在不依赖远程服务器的情况下测试和模拟请求响应。

RewriteSettings(重写设置)是Charles中的一项强大功能,用于在请求和响应通过Charles时动态修改它们的内容。通过重写规则,用户可以更改请求头、请求体、响应头和响应体,而无需更改客户端代码或服务器端配置。这在调试和测试不同的请求/响应场景时非常有用。

在RewriteSettings或MapLocal/RemoteSettings中,EditLocation界面用于定义重写或映射的匹配条件。这里用户可以根据请求的各种属性进行过滤,以便Charles仅对符合条件的请求执行操作。

在RewriteSettings中,RewriteRule界面允许用户配置具体的重写规则,包括如何匹配请求和响应内容,并替换指定的部分。

应用场景:例如,可以修改请求的User-Agent字段值,或对响应内容进行特定文本替换,以便观察客户端如何处理不同的响应。

BlackListSettings(黑名单设置)是Charles中用于阻止指定的请求。将特定的URL、主机或路径加入黑名单后,Charles会自动拒绝这些请求,使客户端无法访问它们。这在调试和测试中非常有用,可以模拟网络不可达或资源被屏蔽的情况。

AllowListSettings(允许列表设置)是Charles中用于精确控制请求访问权限的功能。与黑名单相反,允许列表功能仅允许特定的请求通过,其他所有请求都会被阻止。这在需要严格限制网络请求的场景中非常有用,比如只想监控某些特定的API请求,或模拟只允许访问某些资源的网络环境。

DNSSpoofingSettings(DNS欺骗设置)是Charles中用于将指定的域名解析到不同的IP地址。通过这个功能,开发者可以模拟不同的DNS解析结果,将请求重定向到指定的服务器或IP地址,而不需要修改本地系统的DNS配置。这在测试环境中非常有用,尤其是当需要在不同服务器之间切换请求时。

MirrorSettings(镜像设置)是Charles中用于将所有网络请求的流量镜像到另一台服务器或目标地址。启用此功能后,每次请求都会被Charles同时发送到原始服务器和指定的镜像服务器。这在测试和监控中非常有用,可以帮助开发者实时检查请求的数据和行为,而不影响实际请求的响应。

MirrorSettings是Charles中用于复制和重定向请求流量的工具,非常适合在需要进行流量监控、负载测试或调试日志记录时使用。这个功能确保了请求被同时发送到多个地址,为开发和测试提供了更灵活的选择。

Compose(组合请求)允许用户手动创建并发送自定义的HTTP请求。通过Compose功能,用户可以编辑请求的URL、方法、头信息和请求体,直接向服务器发送该请求,并查看响应。这在测试特定API接口、验证服务器响应或进行手动调试时非常有用。

Repeat功能帮助用户轻松重复网络请求,适合在调试和测试中需要多次验证同一请求响应的情况,是一个简单而实用的工具。

AdvancedRepeat是一个非常实用的功能,适用于需要在受控环境下测试服务器性能和负载能力的场景,使得Charles能够模拟真实的流量模式,帮助开发和测试人员分析服务器的响应情况。

Validate(验证)是Charles中用于检查选定请求的响应内容是否符合特定的标准或格式。这可以帮助开发人员快速验证服务器响应的正确性,例如检查响应是否符合预期的状态码、内容格式,或是否包含特定的字段信息。在调试API接口和数据完整性时,这项功能非常有用。

Validate功能是Charles中的一个辅助调试工具,适用于在接口调试和数据完整性检查时使用,可以更快发现数据格式和内容上的问题,提升API调试效率。

Import/ExportSettings(导入/导出设置)用于将Charles的配置导出为文件或从文件导入配置。这可以帮助用户在不同的设备或项目之间共享Charles的设置,包括代理规则、映射设置、重写规则等。该功能非常适合团队协作或多设备同步配置,确保调试环境一致。

Profiles(配置)用于创建和管理不同的配置文件。通过Profiles,用户可以保存和切换不同的Charles设置,包括代理规则、映射规则、重写规则等。这在需要频繁切换不同的调试环境或测试场景时非常有用,因为可以快速加载预设的配置文件,而无需手动更改设置。

Charles的主界面介绍以及菜单介绍大概就是上面那些了接下来我们来操作Charles进行pc抓包和移动端抓包测试。

这样就可以了哈。

我用的是AndroidStudio创建的模拟器跟手机端差不多的都是设置wifi代理

这样我们就实现了pc端和移动端用Charles抓包的效果。我也是好久没用了刚好工作需要所以重温一下Charls的用法。

THE END
1.Web基础配置篇(九):抓包工具的介绍安装及基本使用抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。 抓包工具有很多,到网上一搜一大堆,但是本篇不准备介绍那些偏门的工具。本篇主要介绍下windows和linux上的主流几个抓包工具如何一步步使用的,以及在web开发中的应用。 https://cloud.tencent.com/developer/article/1505247
2.抓包工具哪些好,来看这里就够了免费抓包工具作为软件测试工程师,抓包总是不可避免:遇到问题要做分析需要抓包;发现 bug 需要定位要抓包;检查数据传输的安全性需要抓包;接口测试遇到需求不全的也需要抓包 就因为抓包在测试工作中无处不在,所以市面上才会出现一大批的抓包工具供大家选择。 之前我也发过一些文章介绍一些常用抓包工具,比如 wireshark,Charles https://blog.csdn.net/2301_77645573/article/details/143724476
3.2024年五款免费的抓包工具软件哪个更好用5.网络数据抓包工具 0.8 该软件是一款网络抓包工具,可用于游戏外挂制作和Web加载情况分析。通过设置抓包主机并拦截查看网络数据包内容,可以获取到网络传输的数据信息。软件提供了抓包序号、时间、源目的MAC地址、源目的IP地址、协议类型、源目的端口号等详细内容列表。 https://app.zol.com.cn/jiqiao/151333.html
4.Charles抓包工具小白学习笔记Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF 攻击,防网络爬虫,以及一些其他用途。这些隐藏字段在界面上都看不到,如果想检测这些字段,就必须要使用抓包工具。 2) 通过抓包工具了解协议内容,方便开展接口和性能测试 https://www.jianshu.com/p/9eb4714bb85c
5.抓包工具和接口测试工具(发包测试工具)本篇文章给大家谈谈抓包工具和接口测试工具,以及发包测试工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享抓包工具和接口测试工具的知识,其中也会对发包测试工具进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 本文https://www.eolink.com/news/post/51392.html
6.从网络上获取一个文件通过接口给另一个系统java从接口获取数据如何获取接口信息? 1、开发提供详细接口文档(实际测试常用) 2、通过工具抓包(charles、fiddler、web端F12) (tips:浏览器按F12可以快捷打开调试页面进入开发者模式,或者右键进入开发者工具) URL:http[s]://host[:port]/[abs_path]?[parameter] host:域名/ip https://blog.51cto.com/u_16213581/11662884
7.杭州响应式网站案例/平台推广渠道Fiddler、Wireshark、Sniffer、Tcpdump各种抓包工具适用于各种项目,总有一款适合你。 六、接口测试工具 接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman。 七、Web自动化测试Java&Pyhton 了解自动化的目的,熟练掌握testng&unittest自动化框架,以及断言与日志处理。 http://www.xgth.cn/news/32149.html
8.经典网络抓包工具经典网络抓包工具评分: wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 抓包wiresh 封包2019-04-04 上传大小:22.00MB 所需:10积分/C币 https://www.iteye.com/resource/chen_2001-11088384
9.7款常用《网络抓包工具》更新体验盒子Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。 https://www.uedbox.com/post/59475/
10.前端必会的抓包工具说到抓包这个问题,很多初级的前端都不太能意识到这个问题,虽然本人也就是个小菜,但是对于抓包工具可以说是熟练掌握了,因为有过太多接口的问题被测试指派了我,那么如果熟练掌握了抓包不仅能快速定位出问题,还能分析网络请求,以及一些前端逻辑的问题导致接口多次触发等现象。 http://www.51testing.com/index.php?action-viewnews-itemid-4473715
11.提升10倍。最好用的接口文档管理工具,接口自动化测试工具。使用Web 版 免费下载 一套系统、一份数据,解决多个 API 工具之间的数据同步问题 只要定义好 API 文档,API 调试、API Mock、API 自动化测试即可直接使用,无需再次定义。 API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确! API 设计 可视化 API 设计 高https://www.apifox.cn/
12.Reqable·API抓包调试+API测试一站式工具Reqable是一款比较全面的WEB抓包工具,功能相对完善,比较适合国人的操作习惯,简单便捷,抓包性能也比较高,大批量数据也能快速筛选需要的结果,出现bug作者也能及时响应,迭代快,这点是非常难得的。 支持Reqable! Reqable提供完全免费的社区版,但为了产品更长远和持续的发展,希望大家支持专业版和企业版订阅! https://reqable.com/
13.TommyLemon/APIAuto:?敏捷开发最强大易用的接口工具APIAuto: 最先进的HTTP接口工具 百度、搜狗、抖音公网接口调用演示 因为这些接口不支持 CORS 跨域,所以需要开启托管服务代理。 可以复制 Chrome 等浏览器、Charles 等抓包工具的请求文本, 粘贴到 APIAuto 的 URL 输入框,会自动填充 URL, JSON, Header 等。 https://github.com/TommyLemon/APIAuto
14.软件测试——10款目前最热门的测试工具,总有一款适合你以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。https://maimai.cn/article/detail?fid=1736259139&efid=8xMKZVeIyCYXJpHwrMPo9g
15.HTTP抓包实战HTTP抓包利用Fiddler抓包工具来捕获HTTP数据包,然后对其进行重发、编辑等操作。HTTP抓包的用途非常广泛,主要用于Web开发调试、软件自动化测试、接口自动化测试、性能测试和网络爬虫等方面,也用来检查网络安全。抓包也经常被用来进行数据截取等。 本书主要围绕抓包展开。全书共有22章,着重介绍了HTTP协议、如何使用Fiddler对HTThttps://www.epubit.com/bookDetails?id=N14666
16.Fiddler抓包教程,教你怎样抓得好抓得快1. Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的HTTP抓包工具之一。 2. Fiddler能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请求数据、断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试器。 https://vip.kingdee.com/article/577875529915804416?lang=zh-CN