内容 采集 软件(以模拟采集“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的核心参数之一是我们不知道如何生成它,这使得我们不可能直接使用这个网址进行信息抓取;如果签名算法无法破解,那么H​​TTP之路就是一条死胡同。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线