charles:
抓包工具:charles,wireshark(火车头),fiddler,web端:f12 charles功能点: 1:定位前后端问题; 2:验证问题:前端、后端、网络; 为什么使用抓包工具: 如果没有接口文档,没办法使用postman测接口,所以需要使用抓包工具抓取接口,把接口填充到postman中进行测试。 charles原理:
1:客户端向服务器发起https请求; 2:charles拦截客户端请求,代替客户端向服务器发起请求; 3:服务器接收到请求之后,返回CA证书给客户端,但被charles拦截; 4:charles拦截的服务器的响应,获取证书,然后制作一张伪证书,代替服务端将伪证书响应给客户端;要先拿到服务器给的CA证书,才能看到数据。 CA证书:https就等于是http+ssl,ssl协议,http是一个明文传输的协议,https是加密的(因为ssl协议)。 http和https的区别: 1:http是明文传输,是不加密的; 2:https是加密协议,相当于http+ssl,ssl是加密协议; 3:http默认端口是80;https默认端口是443。 charles中web端证书的安装: 安装charles之后,在浏览器,输入要搜索的东西,charles中会拿到协议接口,第一次安装登录,可能charles中没有request和response。 点击edit中的preferences选项,点击弹框中的viewers,取消combine request and response的勾选框,点击ok,刷新一下主页中便会有request、response;如果刷新没有显示,就重启charles。 第一次点击https协议下面的接口,如果request和response中出现乱码; 如果想抓取https的协议必须要下载ssl证书,下载证书之后才能把乱码的信息展示成明文; charles首页中help中有一个ssl代理:
点击下载根证书,进入安装证书 证书存储 点击下一步,点击安装,第一次安装证书可能会跳出一个安全警告,点击‘是’。 然后刷新浏览器上面的请求,request和response中可能还是乱码,只下载协议还不能满足; 在charles首页中点击代理(proxy),选择ssl代理设置;选择允许ssl代理,点击add,添加host、port。host:要添加https的host,以及https对应的端口;我测试用的是www.baidu.com; 但是我们charles抓包时,抓取的不一定局限于https.baidu.com的,所以我们要抓取所有的携带https的host,在host里面写上()(代表匹配全部),port中也写()匹配全部协议,点击ok,重启charles; 点击ok后,关闭charles,重新打开。 再次触发浏览器上的接口,查看charles中的request、response便不会再乱码。 还有就是https协议下有两个接口,如何判断两个谁是正确的接口: 看response中的text里的内容
charles的功能操作
断点调试 方法一: breakpoints 详细概要:击https协议下的正确的接口,点击breakpoints,点击之后breakpoints从置非状态变为了运行状态,然后右键接口,copy url ,在proxy(代理)中点击breakpoints settings,勾选 enable breakpoints,点击add,添加刚才的url,(复制在弹出框中的host,点击任何一个文本框,然后它会自动填充),把query文本中的内容改为*,(query对应的就是后面的参数信息,query是随机生成的,如果写死了,下次不是同样的数据就不能进行断点调试了),因为是修改的request,所以要勾选request,点击ok,然后刷新浏览器的页面,charles会自动跳出断点页面,断点跳出之后,点击edit request ,修改wd中的内容 ,点击执行,页面上会显示‘重新输入wd中的内容的搜索信息’,
使用修改request进行断点调试场景: 用户注册,注册界面,密码长度为6-18位,输入4位密码,点击注册失败,因为前端已经进行了约束,输入1234567,可以注册成功,点击注册,charles拦截服务,把数据修改为了1234,此时1234已经不符合6-18位的规则,那么charles如果发送请求,显示注册成功,就代表后端没有进行逻辑处理。此时修改request相当于postman测试接口。(修改request是验证后端有没有问题)。 步骤:抓取该接口右键breakpoints,拷贝该接口的url,然后在代理proxy中选择breakpoints settings 设置该接口信息,将query修改成*,勾选request ,ok,刷选该界面,拿到对应的接口修改请求参数执行即可 总结:使用charles抓取接口,修改接口中的请求参数,绕开前端向后端发送错误的请求参数,验证后端是否进行逻辑处理。
使用修改response进行断点调试场景: 步骤:抓取该接口右键breakpoints,拷贝该接口的url,然后在代理proxy中选择breakpoints settings 设置该接口信息,将query修改成*,勾选response,ok,刷选该界面,拿到对应的断点接口修改响应数据执行即可。(和request一样只是一个修改的是request,一个修改的是response) **修改response场景:**商品信息展示,验证:前端页面正常展示,商品图片下面是商品简介,详细信息的数据不能超过3行,超过3行的以小数点…的形式展示。所以如果有的一行的,两行的就无法验证此效果是否好用;我们无法修改数据库中的数据,我们可以抓取到这个返回的接口,抓取之后可以修改数据,使商品数据超过3行,在前端页面上验证是否会以小数点的形式显示。如果是以小数点形式展示的,就代表前端已经对他进行约束了,如果超过3行,就代表前端未进行约束。验证的是前端。 关注host操作: chares首页中view里点击Focused Hosts关注域名,添加域名, 在host里添加www.baidu.com,**类似模糊查询进行匹配,代表只要域名中有www.baidu.com全部都放在一个里面,点击ok,就可以看到,如果是www.baidu.com就都放在一个协议里面,如果不是就放在other hosts里; charles下载app端证书: 和web端下载一样;第一步选择下载appdaunt证书; 弱网测试: 1:模拟超慢的网速,接口会不会超时,服务器会不会崩溃 。 设置带宽; 四版本的弱网在charles中图标是个小乌龟,三版本的是个红旗; 右键copy url ,点击首页中proxy(代理),点击throttle settings(控制带宽大小),点击两个勾选框,点击add,在host中输入刚才复制的url,这里面没有query,只有对应的协议和host;选择带宽设置,选中带宽设置后,下面的数值会随着带宽的设置进行改变;点击ok,之后,会看到小乌龟进入睡眠状态,就代表弱网开启了,去浏览器刷新页面。
模拟403和404 1:tools—>blacklist 在charles首页,点击tools,找到blacklist,勾选允许使用黑名单,填充接口url ,和上面一样把query改成*,点击ok,选择模拟的是403还是404,点击ok,刷新浏览器界面。
如果想要取消模拟,就在tools中点击blackist,取消勾选允许使用黑名单 屏蔽web端抓包: 点击recording,关闭抓包,再在浏览器上刷新页面时,charles就不再进行抓包了。 抓取web端的接口时候,proxy(代理)里有一个windows proxy; 如果想要在web端进行抓包时,要同时开始recording,和windows proxy,否则无法进行抓包。 如果想要抓取app端接口,只需要开启recording,关闭windows proxy,就可以进行抓包了。 模拟器操作: 模拟器在电脑上,和电脑就是同一系统,工具中有一个代理设置,端口默认是8888,勾选允许远程http代理,点击ok, 此时我们的是开放8888端口,help中有一个ssl根证书下载,点击下载app端的证书,弹窗
在雷电模拟器中,点击设置,点击wifi,长按ppp这个网络,点击修改网络,点击高级选项,代理:选择手动代理,输入ip和端口号,此时模拟器代理已经设置好了,设置好之后,需要在浏览器中下载证书,在浏览器中输入chls.pro/ssl回车,提示正在下载,然后显示下载已完成,接下来为证书命名,输入证书名称,点击确定,提示已安装。 使用修改request进行断点调试 在雷电模拟器中的浏览器里,输入数据,测试charles能否抓包抓到https://m.baidu.com协议,复制url,点击breakpoints,点击proxy中的breakpoints setting,勾选 enable breakpoints,点击add,添加刚才的url,(复制在弹出框中的host,点击任何一个文本框,然后它会自动填充),把query文本中的内容改为*,(query对应的就是后面的参数信息,query是随机生成的,如果写死了,下次不是同样的数据就不能进行断点调试了),因为是修改的request,所以要勾选request,点击ok,然后刷新浏览器的页面,charles会自动跳出断点页面,断点跳出之后,点击edit request ,修改wd中的内容 ,点击执行,页面上会显示‘重新输入wd中的内容的搜索信息’。
|