1.引言
????虽然之前写了退出一切关于编程的学习(其实我还想学react,typescript,将javascript作为自己核心的编程语言的,其实我还想了解以下java的,软工很多课程都跟Java有关,而且面向对象编程还有很多未曾了解的涉及模式,这些对于书写高质量代码有一定的帮助,其实我还想…),专心学考研课程,打打基础。但是还是忍不住,于是又根据学校安排的课程看了看相关的课程,在学习软件测试的时候了解到了一个非常牛逼的工具——Fiddler 。
2.什么是Fiddler?
????这是一个本应该用在软件测试里面做接口测试用的。很多时候我们理解的软件测试就是点点点,最后总结无bug。其实这是不对的,这里简单说一下软件测试,软件测试其实贯穿于整个软件开发,包括通常理解的代码测试,开发规范的匹配,开发与需求文档的匹配等,既要管代码有需要管文档,总之有点像一个监工一样,目的是保证软件开发的质量,防止因为后期修改导致软件成本的飙升。我国国内最开始主要是将重点放在有 上面,开发:测试 相对较低,而外国由于发展比较早,因此对于质量的要求高一些,开发:测试 往往在1:3 左右,这里没有妄自菲薄的意思,国外的发展也是这么过来的,目前国内的测试岗位在招聘中占比也是比较多的,和最火的Java岗位差不多。 ????言归正传,Fiddler 能够像Burp Suite 进行抓包,在功能上各自有各自的偏重,我这里首先学的是Fiddler,Burp Suite还没有学,也不好在这里比较两者。Fiddler 中能够提供代理,可用于开放连接到远程,对app对于抓包,这也就是这篇文章将要介绍的重点。因为目前的web查看接口主要是通过Network 调试查看的,但是仔细你会发现,很多接口更像是打包后发送给前端的js或者html文件,再或者是callback(有点jsonp跨域的意思),基本上是很难看到接口具体是什么,除了像哔哩哔哩这样的故意放出来的网站。总结其原因:由框架直接渲染页面和服务端渲染的前端思维(SSR,有兴趣可以看看其他相关文档)。因此我们白嫖怪 将目光投向了更为广阔的app。
3.Fiddler的基本使用
????先初步展示一下效果: ????下载位置:Fiddler官网,下载完成之后,需要在目录出找到运行程序,建一个快捷方式: (1)基本预览 ,打开软件之后简单了解一下基本使用方式(无法汉化,就用英文吧): 上面圈住的地方就是这个软件比较大的特色了,虽然UI不算美观,但是可用行比较好。 (2)代理设置 ,正常情况下,数据是不会通过这个工具的,上面的各种请求其实就是代理实现的,代理的作用应该主攻网安的比我更加清晰吧,就是说张三和小红之间通信的那只信鸽 。但是正常情况下一般人不会走这个代理的,所以这里涉及到一个网安的专有名词——社会工程学,指的就是通过这种手段让别人打开一些不会使用的东西,比如:张三给李四修电脑,修完之后,张三把李四的电脑代理设置张三的网络开放的代理,这样李四上网浏览的任何内容都能被张三看到了,包括提交的用户名和密码,实际是很难做到的,除非你直接通过某些手段以控制了一个人的电脑。代理的开启很简单,Fiddler有这个功能可以帮我们实现,甚至不需要自己去手动设置代理(勾选一个选项就能完成): 说明:这里的8888 端口其实就是代理使用的端口,如果被8888 端口被占用可以手动修改成其他未被占用端口。 (3)配置https抓包 ,默认情况下Fiddler只能够抓取http协议的数据包,https 抓取需要利用Fiddler自带的证书生成工具创建证书并信任该证书,操作也不难就是可能会遇到过期失效问题: 接下来需要让浏览器信任生成的证书,在设置里面搜索SSL(因为https=http+ssl (或其他安全证书)): 接下来,再找一个网页刷一下就会产生https 了,到这里基本配置就完成了,得会用一个快捷键Ctrl+X ,一键清空抓获的数据包。 (4)证书过期处理 ,其实这个应该还算做(3)的,但是这个实在是太重要的,很可能会影响软件的使用体验。这里我总结为证书过期,每次重启电脑会发现抓取的数据包全是http ,没有一个https ,这个显然不太可能的。需要手动删除所有信任的证书,然后重新操作一下步骤(3),可能麻烦了点,但是相比于刺激的抓包,真的不算什么。手动删除证书的步骤:打开cmd,输入certmgr.msc ,打开证书管理区: 删除完成之后,重复步骤(3)就能重新抓取https 了。
4.基于手机模拟器的APP抓包
????接下来是更有意思的app抓包了,下载夜神模拟器,其实无论是哪款模拟器都行,主要是使用里面的模拟器下载app用于抓包。
我这里装了几个软件,下载apk手机软件的话,推荐位置:豌豆荚,这里给出一个大佬测试可用的软件百度网盘链接,当然你也可以自己在手机浏览器中搜索微漫画 (微博出的一个漫画app),然后利用QQ发送给电脑,然后拖入虚拟机安装:
链接:https://pan.baidu.com/s/1OxAxtPgmxn5_Ogs4EqOcYg
提取码:1224
这里再说一下为什么是它,哈哈哈哈,因为主流软件现在都有反爬机制了,向腾讯出的漫画台甚至连个接口都看不到,字节的抖音视频是分包发过来的,并且播放使用特殊的播放机制,小红书的url明显可以看到类似md5的编码挂载url上面。微漫画 可能在各种竞争中被淘汰了,所以甚至在豌豆荚上面都找不到了。也正是这些原因导致抓微漫画 的包还是行得通的。 ????好了,理论可行,直接实测。首先还是需要像电脑一样配置好证书并信任,因为app的的请求地址大概率是https 的,可能你后期使用会遇到这个问题:
原因很简单,证书过期了,因为打开的时候不能抓https ,所以就换了证书,导致之前使用的证书无效。解决方法也很简单: (1)切换到Fiddler,开启Filddler的远程代理:
(2)切换到手机模拟器,打开设置->wifi; (3)长按当前使用的wifi,会显示修改网络功能: (4)点击修改网络,让手机也是用Fiddler提供的代理: (5)安装并信任证书, 如果你觉得这个方法麻烦了点,还有一个方法安装证书:设置->允许手机安装软件->浏览器中输入:http://168.192.0.109:8888/ ,点击: FiddlerRoot certificate 下载证书,然后会弹出安装证书界面。 (6)打开微漫画 软件,抓包: ????到这一步对于抓包就算是结束了。接着说说兼容性问题,对于chrome浏览器来说,可以不用手动导入证书,对于fireFox则必须导入,对于iphone手机,需要关闭手机的防火墙。另外,重复说明一个问题,部分app或者操作系统自带反抓包功能,如出现抓包失败情况属于正常现象。比如手机模拟器中打开百度会一直提示证书无效。在切换证书时如果需要用到浏览器,遇到证书无效弹框可以直接多次点击继续指导没有提示或者用电脑下载证书复制到模拟器中,可以通过模拟器存储文件的位置也可以通过模拟器的UI界面导入。
5.接口捕获
????如果对于一个测试人员,那么他可能停步于此,但是对于开发者或者网安人员来说,这才是游戏的开始(至少对于开发人员是这样的)。现成的漫画接口,等下: 咱就学习一下,就学习哈,没有其他想法,哈哈哈哈,绷不住了。 ????上面某工具的使用教程如下: 注意:这个教程说掉了一步,需要把软件后缀改成rar压缩文件格式,然后解压,这样再来看这个教程就很清晰了,然后dex2jar-2.0 里面的classes.index 和classes-dex2jar.jar 其实是别人使用的遗留文件,直接使用前可以直接删除或者使用中覆盖就行。
https://www.cnblogs.com/pythoncd/p/10367144.html
也就是定位到了接口对应的源码了,有Java语言基础的,Android代码还是能够看一下的,下面的的操作可能就需要涉及python、node.js语言来完成了,有点不敢往下写了,狗头保命。
6.引言
????以上内容仅供学习使用,切不可用与非法用途,否则自行承担相关法律责任。
7.鸣谢
????感谢广大博主的文档和来自B站大神的教程:app逆向数据抓取
|