内容 采集 软件(以模拟采集“meizu”应用市场为例应用产品返回参数)
优采云 发布时间: 2021-09-12 06:09内容 采集 软件(以模拟采集“meizu”应用市场为例应用产品返回参数)
在过去的六个月里,我们优采云陆续收到了几个APP数据采集的项目需求。我在群里偶尔看到一些用户问有没有APP数据的工具采集。针对我们做过的几个APP数据采集项目的经验,我可以告诉大家,目前市面上没有通用的APP数据采集工具。我们优采云内部有一套工具,但由于使用难度大,需要编写脚本,所以不对普通用户开放。我们只接受项目定制。
虽然不对外开放,但不妨碍我们分享技术。 APP数据采集一般采用以下两种方式:
1.两个想法
包捕获钩子
2.Capture 包
有代码经验或APP开发的同学容易理解。其实很多APP都是使用webservice通信协议的,而且由于是公共数据,大部分都是未加密的。所以只要监控网口,模拟APP,就可以知道APP中的数据是如何获取的。
我们只需要编写代码来模拟请求,无论是POST还是GET,都可以得到请求返回的信息。然后通过对返回信息的结构分析,就可以得到我们想要的数据了。
public static void main(String[] args) {
Spider.create(new GithubRepoPageProcessor())
//从https://github.com/****开始抓
.addUrl("https://github.com/****")
//设置Scheduler,使用Redis来管理URL队列
.setScheduler(new RedisScheduler("localhost"))
//设置Pipeline,将结果以json方式保存到文件
.addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))
//开启5个线程同时执行
.thread(5)
//启动爬虫
.run();
}
以模拟采集“魅族”应用市场为例
应用市场产品
抓包返回参数
整个抓包过程
3.HOOK技术
HOOK 技术是一种取操作系统内核的技术。由于Android系统是开源的,你可以使用一些框架来修改内核来实现你想要的功能。 HOOK的形式,我们采用的是Xposed框架。 Xposed是一个开源框架服务,可以在不修改任何其他开发者的应用程序(包括系统服务)的情况下改变程序的运行。在此基础上,可以制作出很*敏*感*词*强大的模块,以达到随心所欲运行应用的目的。
如果你把安卓手机想象成一座城堡,Xposed让你拥有上帝视角,可以看到城市运作的细节,它可以让你介入改变城堡的运作。
你是什么意思?简单的说,你可以通过他自动控制你的APP。如果我们在模拟器上打开我们的APP,我们可以通过编码告诉APP这一步要做什么,下一步要做什么。你可以理解为类似于按键精灵或者游戏怪物插件。
而且他每走一步,就可以获取到APP与服务器交互的数据。这种方法在一些成熟的应用程序中被广泛使用。例如,一个字母采集。
public class HookActivity implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
final String packageName = lpparam.packageName;
XposedBridge.log("--------------------: " + packageName);
try {
XposedBridge.hookAllMethods
(Activity.class, "onCreate", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
XposedBridge.log("=== Activity onCreate: " + param.thisObject);
}
});
} catch (Throwable error) {
XposedBridge.log("xxxxxxxxxxxx: " + error);
}
}
}
其实我们优采云曾经想开发一个通用的APP数据采集工具,两年前我们在这个领域投入了半年时间,做了一个APP采集脚本编辑工具。一个APP的数据采集项目可以缩短到3-5天完成开发。但是我们认为这个工具需要脚本化,一般用户很难上手,所以只作为内部项目使用。
以一个HOOK APP为例
打开APP的HOOK命令
获取数据的HOOK命令
4.这些年走过的坑
说完APP采集的思路,分享一下我们遇到的一些坑,让大家玩的开心
坑一:签名算法
以一封信的文章list页面和某个信息页面为例,捕获它的http访问,我们会发现它的url的核心参数之一是我们不知道如何生成它,这使得我们不可能直接使用这个网址进行信息抓取;如果签名算法无法破解,那么HTTP之路就是一条死胡同。