抓包工具Charles——介绍、篡改数据、弱网环境测试

一、抓包

1.遇到问题时进行分析、调试,需要抓取报文

2.定位bug(前端bug还是后端bug)

3.数据,一些敏感的数据进行脱敏,通过抓包工具查看是否脱敏[检查数据传输的安全性]

4.进行接口测试时,当接口文档不详细时,进行抓包[传参、后端给的响应]

5.做APP的弱网测试[模拟弱网环境]和APP问题调试

6.抓包工具:Fiddler、Charles、Wireshark(进行网络协议的分析,获取链路层的数据包信息)、BurpSuite(可进行测试)、F12、TCPdump(linux下命令行方式的抓包工具,将抓取到的报文保存成文件后,可以使用Wiresshark工具进行更详细的分析)

二、Charles

1.Charles是一款抓包工具,工作原理是一款代理服务器

2.代理服务器:前段向后端服务器请求/提交一些数据时,会向服务器发起一个请求消息,Charles会成为浏览器的一个代理,作为中间代理,截取请求消息和响应消息

3.Charles抓包主要抓取的是HTTP/HTTPS协议的报文,

(1)HTTP 协议,全称是 Hyper Text Transfer Protocol(超文本传输协议)。它是在 TCP 三次握手建立了连接的基础上工作的,所以 http 协议是基于 TCP 协议的 80 端口的应用层协议,主要作用是用于从万维网 WWW 传输资源到本地浏览器的传送协议。HTTP 协议做的事情主要是用来规定客户端和服务端的数据传输格式,所以它是一个标准和规范

(2)每一个 http 连接包括请求消息和响应消息两个部分, 就像你在浏览器里发送要访问百度页面的请求那么百度服务器就会返回给我一个响应并展示百度页面,所以 HTTP 协议都是基于请求和响应模式的

三、HTTP

1.HTTP协议请求消息,(http request),指从客户端到服务端的请求消息,包括:

(1)请求行:包括请求方法(GET、POST 等),请求地址 uri,HTTP 版本等信息

(2)请求头:1包括的内容非常多,比如 content-type(客户端传递到服务器端的数据格式),User-Agent(标明客户端的基本信息)等

host:主机

user-Agent:返回给客户端的信息

Cookie

(3)空一行:是格式要求,表示请求头的结束

(4)请求体:就是请求正文,一般是参数等信息

2.HTTP协议--响应消息(http response),服务器收到客户端的请求后就会给出响应,包括:

(1)响应行:包括 http 版本以及响应状态码信息

(2)响应头:同样包括的内容比较多,比如 Content-Type(响应消息的格式),cookie\token 等信息

(3)空一行:标识着响应头的结束

(4)响应正文:从服务响应回来的具体数据,比如 XML、ON 格式的数据,这个也是做接口测试要重点查看的内容

3.HTTP与HTTPS:

(1)http协议:通信使用明文、请求和响应不会对通信方进行身份确认,且没有检查数据的完整性。

三个不太安全的因素:

数据不加密--明文

没有身份认证--伪装

没有校验数据完整性--被篡改

所以,衍生出了http协议的安全版,---https协议 !!!

(2)HTTPS(Hypertext Transfer Protocol Secure),超文本传输安全协议,简单讲是HTTP的安全版。它加密数据并确保其机密性(密文),可保护用户在与网站交互时免于窃取个人信息和计费数据,验证数据完整性。

HTTP+加密+身份认证+完整性 =HTTPS

基于TCP的443端口,披着SSL协议外壳HTTP协议

(3)HTTP协议:应用层(HTTP)、TCP、IP

HTTPS协议:应用层(HTTP)、[新增]SSL、TCP、IP协议

4.https协议的SSL握手过程

(1)https只是在TCP三次握手(HTTP也有)后多了一层TSL/SSL握手

(2)客户端请求建立SSL连接,并将自己支持的一套加密规则发送给服务器

Handshake:ClientHello

(3)网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等.

Handshake:ServerHello

Handshake:Certificate

Handshake:ServerHelloDone

一对钥匙:公钥--公布--加密;

私钥--私有,进行解密

(4)获得网站证书之后浏览器要做以下工作:

验证证书的合法性-服务器身份,如证书受信任,浏览器会生成一串随机数密码,并用证书中提供的公钥加密

把密码发送给网站。

告诉网站后续报文要加密了。握手结束。

(5)网站接收浏览器发来的数据之后要做以下的操作:

使用自己的私钥将信息解密取出密码 --加密了

告诉客户端后续报文要加密了。握手结束。

HTTPS协议使用非对称加密的方法进行密钥的分发;之后的消息传输用的是正常的对称加密

加密+身份认证+完整性=HTTPS

四、Charles界面介绍

1.两种视图方式

(1)Structure:将网络请求按访问的域名分类

(2)Sequence:按照时间排序、

2.Charles抓取浏览器的报文:Enable Windows proxy on launch

(1)这个选项自动默认勾选,启动Charles即可配置好代理

(2)谷歌浏览器和IE浏览器默认就是系统的代理;其它可自己添加(在浏览器中搜索代理)

五、Charles抓取浏览器的报文分析---Compose篡改数据

1.页面做格式检查 --捕获数据 修改--直接向后端发送--校验 安全隐患??--接口测试

2.电商 --前端限购--10件 ---捕获篡改 100件?--后端 --bug

3.数据篡改 --测试经常使用!--篡改目的:检查后端功能是否正常,保证安全性

六、Charles抓取浏览器的报文分析 --断点测试

1.在程序的某一行或者某一环节设置断点,在程序请求的过程中,修改断点处的参数、请求或者响应,"定位问题,这类断点测试主要用于接口测试。

2.断点测试可以通过査看接口返回数据可以方便定位是前端还是后端的问题:--同时通过更改request和response数据可以很方便构造测试数据。简而言之,断点测试可以通过修改接口数据更快地定位问题,

3.断点的步骤:

(1)抓包捕获到对应的请求

(2)选中请求右键,选择"Breakpoints"--- 即可讲这个接口加入断点的配置里

--注意:默认是requests和response都会出发断点。

(3)浏览器里再次出发这个接口请求

(4)Charles跳转到断点的页面并显示请求消息

(5)点击Edit requests,修改请求消息,然后点击"Execute",执行这个请求,查看页面显示结果

(6)响应消息也会出发断点,断点页面显示响应的信息:

(7)点击Edit response,修改响应消息内容;

(8)然后点击"Execute",执行这个响应

(9)查看页面结果显示

七、Charles抓取手机的报文分析 -- http协议

1.手机抓包的原理,和 PC 类似,手机通过把网络委托给 Charles 进行代理与服务端进行对话。

Charles扮演手机端和服务器之间的代理

2.具体步骤如下:

(1)使手机和电脑在一个局域网内,不一定非要是一个|P 段,只要是在同一个路由器下即可。

(2)电脑端配置:

关掉电脑端的防火墙(这点很重要)

打开 Charles 的代理功能:

通过主菜单打开 Proxy ---> Proxy Settings 弹窗,填入代理端口(端口默认为 8888,不用修改)

勾选 Enable transparent HTTP proxying

如果不需要抓取电脑上的请求,可以取消勾选 Proxy-->Windows Proxy 和 Proxy-->Mozila FireFox Proxy

(3)手机端配置:

通过 Chares 的主菜单 Help ->Local IP Address 或者通过命令行工具输入 ipconfig 査看本机的 IP 地址打开手机端的 WIF|I代理设置,输入电脑 IP 和 Charles 的代理端口。

(4)设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确4、单(只有首次弹出),点击 Allow 即可完成设置。

(5)完成以上步骤,就可以进行抓包了

八、Charles抓取手机的报文分析 --https协议

1.HTTPS 的抓包需要在 HTTP 抓包基础上再进行设置。需要完成一下步骤:

(1)首先完成 HTTP 抓包配置;

(2)移动端安装 Charles 证书:通过 Charles 的主菜单 HelpSSL Proxying |Install Charles Root Certificate on a MobileDevice or Remote Browser 安装证书。

配置好代理后,浏览器里输入chls.pro/ssl,即可安装证书!

(3)设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确认菜单(只有首次弹出),点击 Allow 即可完成设置 (4)完成以上步骤,就可以进行 HTTPS 抓包了

九、Charles抓取手机的报文 --APP的弱网测试

1.弱网测试原理

移动APP经常会进入一下网络不好的场景:地铁、车库、电梯、深山老林等;信号不好的时候,APP是否依然可以工作正常?这是我们测试需要贴近用户场景去覆盖测试的。 ---弱网测试

2.弱网测试的关注点

(1)APP反应慢的时候有友好的提示信息 --友好型

(2)APP在弱网情况下,提交数据不会重复提交--重复支付点击,支付多次付款(后端进行重复数据的提交) --APPbug

(3)APP不会出现 Crash(崩溃)、ANR(应用无响应)的情况;

(4)如何进行弱网测试?通过Charles工具模拟弱网环境: 信号不好:丢包、延迟

丢包:丢包是网络数据传输中,部分数据包(数据的最小传输单元)在发送方到接收方的过程中丢失、未被成功接收的现象

步骤如下:

打开Proxy->Throttle Settings,勾选上 "Enable Throttling",启动限流:

如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的"Only for selected hosts"项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。--www.baidu.com

设置 Throttle Preset 的类型,选择预设的网络类型即可;或者也可以自己配置网络的指标设置弱网环镜

2.弱网环境------可以设置成256 kbps ISDN/DSL

3.限流的指标charles-Thottle Settings的讲解

(1)Bandwidth(带宽)【吞吐量】---指定上载和下载链接的不同带宽限制。

(2)Utiisation(利用率)-- 利用率是总带宽的百分比,它只是作为可用带宽的缩放比率,对于大多数现代互联网连接利率始终是100%。

(3)Round-trip Latency(请求往返延迟)【延时】...-- 往返延迟测量客户端和远程服务器之间往返通信的毫秒延迟。

(4)MTU(最大传输单元)---在任何传输的TCP数据包的最大尺寸

(5)Reliability(可靠性)【丢包】-- 可靠性是衡量连接完全失败的可能性,这是非常有用的模拟不可靠的网络条件

(6) Stability(稳定性)【抖动】--稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。这是非常有用的模拟如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。

(7) unstable quality range(不稳定质量范围)-- 此处设置主要针对于Stability中设置中的范围

(8)例如,以下配置用于模拟不太好的2G蜂窝网络:带宽256 kbps(上传和下载)/利用100%/延迟300 ms/ MTU为1500字节可靠性75%/稳定75%/不稳定的质量范围为20%至25%

相关推荐
num_killer7 小时前
小白的Langchain学习
java·python·学习·langchain
期待のcode8 小时前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐8 小时前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
weixin_462446238 小时前
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程
运维·前端·自动化
a程序小傲8 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红8 小时前
spring的IoC(控制反转)面试题
java·后端·spring
阿湯哥8 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
小楼v8 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地9 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl200209259 小时前
Guava Cache 原理与实战
java·后端·spring