Charles是mac上一款比较好用的抓包工具,那么咱们什么状况下须要用到抓包工具呢?好比我想查看一个接口请求的参数、返回值,还有移动设备上的http/https请求。前端
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器链接Charles的代理访问互联网时,Charles能够监控浏览器发送和接收的全部数据。它容许一个开发者查看全部链接互联网的HTTP通讯,这些包括request, response和HTTP headers (包含cookies与caching信息)。ios
主要功能数据库
支持SSL代理。能够截取分析SSL的请求。json
支持流量控制。能够模拟慢速网络以及等待时间(latency)较长的请求。后端
支持AJAX调试。能够自动将json或xml数据格式化,方便查看。浏览器
支持AMF调试。能够将Flash Remoting 或 Flex Remoting信息格式化,方便查看。服务器
支持重发网络请求,方便后端调试。cookie
支持修改网络请求参数。网络
支持网络请求的截获并动态修改。并发
检查HTML,CSS和RSS内容是否符合W3C标准。
官网:https://www.charlesproxy.com/latest-release/download.do
下载好后,解压,将安装包拖到应用程序里,双击进行安装,打开Charles后会看到提示还有30天使用期限
不要紧咱们可使用激活码!
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
参考:https://blog.csdn.net/qq_25821067/article/details/79848589
选择菜单---> help---> register..... ---->输入帐号和key提交破解成功就能够正常使用啦!
其实浏览器的请求通常用浏览器的开发者工具就能够,固然charles也能够作到,使用方法呢,也很简单
将你连接的网络,配置网页代理,注意地址为你本机的ip地址,能够经过,ifconfig查看,
个人是这个样子,而后打开网页,charles就会弹出弹窗提示你,是否allow哈哈。固然allow,搞定,当当当,能够愉快的抓请求了
⚠️若是mac按照上述步骤没法抓包,那么咱们还须要设置一个地方 ------》macOS Proxy,charles设置成系统代理,抓取http请求,可是如今只能抓取到http的请求,抓取不到https的请求(https都是🔐和unknow)
手机和电脑链接同一网络
获取电脑ip、端口:在电脑上打开charles,设置代理端口并勾选启用透明的http代理,安装证书,查看电脑的ip地址-------> ifconfig
在手机上配置代理,手机的网络里,找到连接的wifi,添加代理,将手机的服务器和端口设置为电脑ip和电脑端口
保存后,charles会弹出弹窗提示allow,赞成,又能够愉快的抓包了
手机链接与Mac相同的无线网内,查看当前Mac IP地址
PS:也可直接option+wifi查看
设置端口号如:8888(也可更改,手机设置代理输入一致便可)
安装证书
设置-无线局域网,进入已链接WiFi----》配置代理----》手动(端口需与PC端设置的代理端口号一致,服务器为PC端Mac IP)
设置-WLAN,进入已链接WiFi手动设置(端口需与PC端设置的代理端口号一致,服务器为PC端Mac IP)
不一样安卓手机弹出设置代理入口不一样,若是进入网络详情页无代理项,可在WLAN列表长按wifi名称弹出代理设置以下:
当手机进行数据请求时,Charles 将弹出是否容许链接此代理(选择容许 allow),以后即可进行http抓包
此时咱们在电脑上更改代码能够直接在手机上查看更改后的效果,不须要反复上预发去查看
安卓:把须要抓取的接口配置一下,或者抓取所有接口
IOS:须要安装Charles SSl证书
安卓手机就很方便了,直接就能够不用配置什么,可是要把要抓的接口配置一下,好比,我想抓这个接口,我就要配置成可抓取的,具体如图
IOS手机(牛X的苹果惹不起)
ios须要安装证书(安卓不用):进入Charles-》Help-》SSL Proxying-》Install Charles Root Certificate ,会打开证书,安装进去
手机---设置----关于手机-----证书信任设置----勾上刚才安装的
而后想抓那个接口,重复上边操做的就能够啦哈哈,也能够配置我想抓取所有的接口,如图
选中Proxy→SSL Proxying Setting
开启SSL代理,并添加信任地址
add添加方法
设置为列表方法
设置->Preferences->Viewers
清除是清除全部已经抓到的所有请求
暂停是中止抓取数据,保留以前抓取的数据
设置代理后,抓取到手机的各类请求,不少是不须要的,所以须要过滤下请求
选择须要的请求右键选择Focus
或者抓包列表底部filter输入须要查看的请求关键字
tools→ Repeat/ Advanced Repeat (可作简单的并发压测)
repeat 单次重复请求
Advanced repeat 屡次重复请求
如某个接口共须要请求20次,单次并发请求10个,设置以下
测试或者开发中有些场景,可能须要手动造不少数据才能发现问题,那么mock替换JSON返回值这个功能就很是实用了,右键请求url,选择Breakpoints,则默认添加该请求入接口断言列表
Proxy→Breakpoints Settings 查看接口断言列表
或者Proxy→Breakpoints Settings->add 添加断言
添加须要断言的请求url以下:
设置断言成功后,从新发起请求,状态变为可编辑状态,进入请求参数or返回参数的修改
修改请求参数↓,设置成功后点击底部“Execute”进入下一步修改返回参数
修改返回参数以下,如title“年糕妈妈商城”须要修改为改为“AAAA”,直接在JSON Text中编辑
修改后以下:
最后再次点击“Execute”,若是是手机端发起的请求,mock修改后前端页面就会展现修改后的数据啦!是否是很方便!若是想界面测列表几十条数据的功能点,能够省去数据库或者后台造数据的时间,直接txt造几十条json数据就能够啦!(PS:修改参数手速要快哦~由于通常状况下,为了用户体验,大部分页面都会兼容必定时间内接口无响应,显示默认友好提示的空页面,因此替换的json能够事先在json编辑器中或者txt中编辑好,以后直接复制粘贴就能够啦~)
另外使用断点能够模拟接口在请求过程当中的各类状态,如请求失败、请求成功但返回数据不对
请求失败:设置好断言后,在请求接口的时候会跳到这个页面,此时前端发起的该接口请求已经被拦截,点击abort会跳过这个请求,请求失败
请求成功但数据不对:设置好断言后,在请求接口的时候会跳到这个页面,此时前端发起的该接口请求已经被拦截,点击execute,此时能够修改返回json数据,修改好后再次点击execute,请求成功但数据不对
若是在测试过程当中,须要切换host不一样的环境来测试,那么替换host功能就能够实现,不须要手动再从新打包更改域名,打开Charles→Tools→Map Remote→点击ADD
以下如所示方式添加便可
tools->map local,映射本地json文件,可直接更改本地json文件来mock数据调试查看,功能相似断言
⚠️map Local和断言不能同时存在
Proxy-Throttling勾选Enable Throttling启用网速模拟,可选择内置的一些带宽设置或自定义设置,保存后能够点击主界面的按钮开启/禁用慢网速功能
配置含义:
Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)
以上都是Charles经常使用的基础功能, 其实还有不少其余更有趣功能,可自行摸索~Charles能够说是测试之路上排查问题找问题很是实用的工具啦!测试必备哦~