Charles工具使用
抓包测试:
将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
抓包工具介绍:
- Chrome/Firefox 开发者工具: 浏览器内置,方便易用
- Fiddler/Charles: 基于代理的抓包,功能强大,可以手机抓包,模拟弱网,拦截请求,定制响应
-
- Fiddler: 免费,只支持Win
- Charles: 收费,支持Win/Linux/Mac
- wireshark/tcpdumps:给予网卡层的抓包,数据量大,可以抓取tcp/udp等多种协议的数据包(需要做好过滤)
-
- wireshark: 支持Win/Linux/Mac
- tcpdumps: Linux抓包命令,功能强大,常用作服务端抓包
原理:
模拟代理服务器
客户端-->代理服务器-->服务端
服务器-->代理服务器-->客户端
主要用途:
1、断请求,断响应
2、定位bug
3、模拟弱网
4、抓取请求,转换成jmx文件进行压测
常见使用场景:
1、移动端验证 :协助定位bug、模拟弱网,进行弱网测试
2、断响应:修改返回结果,达到验证目的
3、mock local :修改返回数据,达到验证目的(常用来修改大量数据)
重点是给大家提供一个思路,在某些情况下,可以通过抓包工具修改返回参数以达到验证目的
1、安装&破解(推荐使用稳定版本:v4.1.4)
官方下载地址:Download a Free Trial of Charles • Charles Web Debugging Proxy
破解方式:
help-->register charles
* https://zhile.io
* 48891cf209c6d32bf4
关闭防火墙!!!
2、抓取http请求
** 设置charles允许代理 proxy-->proxy setting -->勾选enable....
HTTP与HTTPS
HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTPS和HTTP的区别
HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
3、抓取https请求
*安装CA证书
安装证书到电脑,并且信任证书:
help-->ssl setting-->install charles .... certificate
*信任证书:打开ie浏览器(C:\Program Files (x86)\Internet Explorer)
设置-->internet选项-->内容-->证书
如果在受信任证书找不到charles证书,去中间证书颁发机构里面找到,导出到桌面再去受信任里面导入
* 设置charles抓取https连接
proxy-->ssl proxy setting-->勾选enable ssl proxy(允许ssl代理)
add-->*:*
4、过滤
- 抓取固定网址:proxy-->recording settings-->Include
- 过滤图片、js、css文件等: Proxy-->Recording Settings-->Exclude
- 针对性过滤,搜索 Filter
4、断点
proxy-->breakpoints setting -->enable breakpoints(允许断点)
- 断请求 编辑JSON Text-->Execute
- 断响应 编辑JSON Text-->Execute
5、弱网测试
* 原理:限制带宽
proxy-->throttle setting-->勾选enable throttle-->only for select hosts(只限速选中的主机路径)
6、抓取请求,转换成jmx文件进行压测
*Fiddler导出为saz格式
*Charles导出为chlsj格式
FiddlerCharles2Jmeter.exe (Charles版本推荐使用稳定版V4.1.4 V4.6.2版本太高此工具不太适配,会出现没有请求参数的情况)
7、移动端抓包
与PC端抓包基本一致,需要在手机上安装CA证书并进行认证。
需保持手机和电脑在同一网络。
手机上访问chls.pro/ssl地址下载安装证书
如果安装不上:
* 把电脑上的charles证书导出,发送到手机上,手动从文件中安装证书
8、将某个线上的js代理到本地的文件
右键选择Map Local
然后choose 对应的本地文件即可
9、将某个线上的接口请求代理到本地服务