好消息是,这个App终于上架了。
坏消息是,无法在中国大陆上架,因为只是因为用了VPN技术,就被定义为这是一个VPN应用。实属无奈!
iOS端的抓包工具其实也不少,我之前还付费过一款。但是这几款给我的体验都不好,我的评价是,有功能,体验差。功能是很强大,没考虑用户体验。
当然,我也不会只是因为体验不好就想着自己做一款,这样竞争力还是太弱。
除体验外,我开发的这款定位是API问题排查、调试和导出工具。也是解决我在工作中遇到的问题。
具体说就是:
1、抓取小程序/APP接口,导出到Postman或Apifox
2、快速定位App或小程序某个功能都用了哪些接口
3、开发环境接口调试
4、正式环境问题排查
那么我是如何设计这款app能够实现目标,并保持好的用户体验。
首先,App最最核心的功能就是抓包,所以首页就是一个大大的按钮,开始抓包/停止抓包。还有就是围绕抓包做的配置,包括过滤规则、脚本、重写等。
开始抓包就不能改各种配置了,所以把界面收拾干净,换开始后的关注数据。通过运行时间和抓到的请求数来反馈给用户。(支持后台抓包的,干掉进程重新进入计时和抓到的请求数据都会恢复)
其次,抓包历史页面显示抓到的数据包,不管是哪一次抓的,什么时候抓的,在这就能找到,不需要先找到是哪次抓包任务抓的。因为抓的次数多,想找之前抓的一个接口,很难找。
点击进入请求详情页,请求详情页布局只分请求和响应两个Tab,其它同类产品看请求完整信息要切换多个Tab,我们是把内容聚焦而不是分散。并且每个部分都是卡片显示,内容格式化和高亮显示,可读性好,提供复制按钮快速复制内容。默认我们会更关心请求体和响应体,所以请求头和响应头默认折叠。
重放功能对接口调试非常有帮助。把重放功能放请求详情页,点击自动带上这个请求的请求信息,可以编辑修改,也可直接发送。因为重放就是想调试一个接口,通常想重放的时候就是在最近抓到的请求详情页面,而不是在首页。(当然,复杂的组合重放场景入口还是在首页,功能还未开发暂时不聊)
在需要的地方提供加解密功能,而不是在首页放个工具箱。
对响应解密时:
重放时,对请求加密时:
请求详情页还提供导出功能直接导出为markdown接口文档。
然后就是App另一核心功能,API文档生成。
在抓包的时候会异步生成接口文档,如果接口已经生成,会更新接口。比如这一次比上一次多了一个参数字段,那么会更新接口文档加上这个字段。
API文档是借鉴了Apifox的,请求头响应头会剔除非自定义Key,只保留Content-Type和授权头。请求Body和响应Body会解析为数据结构,看起来更直观,并提供示例。
接口还会关联抓包记录,可以查看不同状态码的响应结果。比如抓包抓到一次响应200,一次响应500,可以看500的情况下,是返回Json吗,字段有哪些。还可以进入请求详情页通过重放功能,修改请求信息,继续测试接口的异常情况下的响应。最后,生成的接口文档会按域名分组,可以按域名导出所有接口到Postman或Apifox。
除了按域名导出接口,还可以将想要导出的接口收藏到收藏夹,可以创建收藏目录,基于目录导出。
收藏到收藏夹的接口,是拷贝一份数据保存的,删除接口和抓包历史,都不影响收藏夹下收藏的接口和抓包历史。但是收藏的接口不会随接口的更新而更新。
整个App核心定位与现有竟品不同。不过功能大差不差吧,基本的抓包,重放,重写,脚本都支持。
现在聊聊重写和脚本功能。
现有的产品把重写的功能做的很强大和非常复杂。不考虑用不用得到,只要能想到的都支持。但是我试用了几个产品,真的一个也不会用。
我只做90%的高频需求场景,规则配置尽量简单,分步骤引导完成配置,能提供选项就不要求输入。
重写核心需求:重定向、Mock响应、修改请求、修改响应、丢请求、丢响应。
重写规则:填规则名称,选择作用在哪个接口上,选择重写类型,然后根据选择的重写类型填该填的。比如重定向填目标URL。
复杂的重写需求通过脚本完成。比如不想改数据库数据的情况下,调试App会员非会员下功能限制。又比如企业内部API数据加密,需要通过脚本解密来修改再重新加密。
脚本规则:填规则名称、作用在哪个域名或者接口上,然后就是脚本。提供模版,建议Copy模版后找个AI代码编辑器生成代码。
App也提供AI生成,但没有花心思去优化,能用,但不一定好用。主要这也不是App的核心功能。
当然,为了更好的支持重写和脚本功能,还需要修改其它地方支持。然后就是请求列表标志请求是否应用了重写规则和脚本。请求详情页显示这个请求执行了哪个重写规则,以及脚本。并且给出重写后实际发给服务器的请求,以及重写后实际响应给客户端的响应。当然,原请求和原响应也要显示,便于对比查看。不谦虚的说,这样的重写和脚本功能,应该是目前所有抓包工具体验最好了吧!后续也会继续优化体验问题。