App爬虫进阶——抓包拿不到数据怎么办

阅读本文所需要的基础知识:本文假设你已经掌握了基本的app抓包流程,电脑上Fiddler或同类型抓包工具,有夜神/逍遥/雷神或任一手机模拟器,且模拟器安装了Fiddler的证书。但在抓包过程中遇到了断网、闪退等状况。

抓app包时断网、被检测、闪退是爬虫工程师经常会遇到的事,本文介绍几个可能的原因和可能的解决方案。

潜在原因

-模拟器不适配该app
别笑,真的有这种奇葩无语的可能,而且还不少见,换成真机或者另一个软件的模拟器试试。

  • Android版本不适配该app
    部分app的最低版本限制已经到了Android 5,针对这类app,Android 4.3或者更低版本的模拟器就会报错和闪退。

针对上述出现的问题,我非常建议使用真机,模拟器在很多情况下确实心有余而力不足。

  • app自身做了防护
    app在模拟器中启动和运行正常,但抓包时就会闪退、无网络、报错,这一类问题就是本文研究的重点。

这种一般是App自身做了防护,最常见的一种就是SSL证书验证(SSL Pinning)。比如抖音、小红书,FaceBook,Twitter等app,都有这种验证和防护。

SSL Pinning

一种用来防止中间人攻击的技术,广泛应用于阻止app的抓包和嗅探。

众所周知,Fiddler这一类抓包软件本质上就是一种中间人攻击,所以一旦遇到了SSL Pinning就凉凉了。但我们肯定不能让SSL验证阻拦我们抓包的脚步,我们可以通过如下的方法解决SSL证书验证。

1. 降低版本——降低App和Android系统的版本
很多SSL验证和其他防护都是在新版app中才有的,而且一些方案都是Android 7.0以后才开始生效,所以为了抓到包,我建议的配置环境是Andorid 5的模拟器 + 较低版本的APP。
如何获得较低版本的APP,百度豌豆荚应用商城,可以下载APP的历史版本,有的app太旧的版本是无法正常使用的,所以需要多尝试几个旧版,一般来说,只距离现在半年的app版本是可以用的。

2.禁止校验——禁止app内部的ssl 证书校验
如何禁止app内部的ssl 证书校验?我们可以直接Hook掉app验证SSL Pinning的方法(由于这一篇教程是提供解决方案,所以不会阐述太多原理,而会着重讲解实现的步骤和细节上)
Android平台上我们可以使用Xposed+Justtrustme,ios中也有其实现,ios可以参考这个github项目https://github.com/nabla-c0d3/ssl-kill-switch2

Xposed是什么

Android平台最强大的框架,它可以在不修改APK的情况下影响程序的运行,Xposed是一个框架和平台,里面有许多IT工程师编写的功能模块,比如直接把APP的界面改成自己想要的样子,去掉界面里不喜欢的东西, 自动抢红包,消息防撤回,步数修改等等。

JustTrustMe

Xposed中的一个模块,可以禁止app内部的证书校验。

安装Xposed

为了体现效果,我们这次采用直采宝这个app作为例子,所有的app和资料可以在百度云中下载。

链接:https://pan.baidu.com/s/1Tc5gMYZHYb7-IJCBeHddFQ
提取码:cayq

我们这次选择Android 7.0的真机,大家也可以使用模拟器,在直采宝这个app上没有区别。但比如小红书这一类app,它自身会检测是否为模拟器,这一类app我们酒=就需要真机操作。

首先我们安装和运行直采宝,界面如下在这里插入图片描述
接下来,我们打开Fiddler,设置手机Wifi代理,并清除app缓存(或者卸载重装),再次打开app。
在这里插入图片描述
在网络状况良好的情况下,出现了app内断网的情况,除此之外,闪退、“您的app版本过久”、“正在连接中,app出现故障”等提示,其实也都只是友好的劝退方式,实际上是SSL Pinning检测到了我们的中间人攻击,并进行了阻拦。

使用Xposed+JustTruthMe禁止SSL 验证。

首先需要说明,Xposed框架需要root权限,且有让手机变砖的风险,而优点是可玩性高,功能性强大。我们在这儿采用一个更优的方案——太极Xposed框架。
太极Xposed是国内大神开发的一款免root Xpose框架,对于真机来说,真是再好不过。

首先安装太极Xposed(我的百度网盘里有这个教程所需要的全部apk和资料),然后安装。

在这里插入图片描述
Xposed的使用需要配置两个地方

  1. 模块管理——安装模块
    我们这儿用到的是Justtrustme模块,首先,我们在手机上像正常安装app一样将网盘中的Justtruthme apk包进行安装,注意,安装完成后是找不到的,因为它是一个无界面的app。之后,我们点击模块管理,将JustTrustMe勾选上,至此,模块这一块就配置好了。
    在这里插入图片描述
  2. 应用配置
    点击创建应用,然后勾选直采宝,按照提示一步步操作即可。注意,太极Xposed框架会将本机的直采宝卸载掉,并在太极Xposed中安装一个新的直采宝,所以太极app需要有安装app的权限。
    一切完成后我们重新打开直采宝,SSL Pinning就已经被我们解决掉了。
    在这里插入图片描述

除此之外,大家可以拿小红书试一下,以下是Xposd+Justtrustme前后的对比图。
Xposed之前
在这里插入图片描述
Xposed+JustTrustMe之后
在这里插入图片描述

OK!!!
本篇教程已经结束了,希望大家多多关注我下半年的app逆向教程,两开花两开花。

参考文档:
https://blog.csdn.net/coder_pig/article/details/80031285
https://www.jianshu.com/p/22b56d977825
https://zhuanlan.zhihu.com/p/56397466

发布了27 篇原创文章 · 获赞 120 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_38851536/article/details/93217470
今日推荐