抓取网页数据(关于APP数据采集如何实现,有哪些要注意的点)
优采云 发布时间: 2021-10-24 17:06抓取网页数据(关于APP数据采集如何实现,有哪些要注意的点)
关于如何实现APP数据采集以及需要注意什么,优采云有话要说。
在过去的六个月里,我们优采云陆续收到了几个APP数据采集的项目需求。我在群里,偶尔看到一些用户问有没有APP数据的工具采集。鉴于我们在多个APP数据采集项目中的经验,我可以告诉大家,目前市面上没有通用的APP数据采集工具。我们优采云内部有一套工具,但由于使用难度高,需要编写脚本,所以不对外公开给普通用户。我们只接受项目定制。
虽然不对外开放,但不妨碍我们分享技术。APP数据采集一般采用以下两种方式:1、抓包;2、钩子
1、抓包
有代码经验或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();
}
以模拟的采集“魅族”应用市场为例
应用市场产品
抓包返回参数
整个抓拍过程
2、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为例
HOOK命令打开一个APP
获取数据的HOOK指令
HOOK获取数据过程
3、这些年走过的坑
说完APP采集的思路,跟大家分享一下我们遇到的一些坑,让大家玩的开心
坑一:签名算法
以一封信的文章列表页和某个信息页为例,如果抓到它的http访问,你会发现它的url的核心参数之一就是我们不知道如何生成它。这使得我们无法直接使用这个 url 进行信息抓取;如果签名算法无法破解,那么HTTP之路就是一条死胡同。