文章采集软件app(以模拟采集“meizu”应用市场为例应用产品返回参数)
优采云 发布时间: 2022-01-11 06:10文章采集软件app(以模拟采集“meizu”应用市场为例应用产品返回参数)
在过去的六个月里,我们优采云陆续收到了几个APP数据采集的项目需求。群里偶尔看到有网友问有没有APP数据采集的工具。鉴于我们在几个APP数据采集项目中的经验,我可以告诉你,市场上没有通用的APP数据工具采集。我们优采云内部有一套工具,但由于使用难度高,需要编写脚本,不向普通用户公开,只接受项目定制。
虽然它不向公众开放,但并不妨碍我们分享技术。APP数据采集一般采取以下两种方式:
1.两种思维方式
捕捉钩子
2.抓包
有编码经验或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的data采集项目缩短到3-5天完成开发。但是我们认为这个工具需要脚本,一般用户很难使用,所以只作为内部项目使用。
以一个HOOK APP为例
HOOK命令打开一个APP
HOOK命令获取数据
4.这些年走过的坑
说完APP采集的思路,跟大家分享一下我们遇到的一些坑,让大家玩的开心
坑一:签名算法
以一封信的文章列表页和某个信息页为例,如果我们捕获它的http访问,我们会发现它的url的核心参数之一就是我们不知道如何生成它。结果,我们无法直接使用这个url进行信息爬取;如果不能破解签名算法,HTTP就是死路一条。