app数据爬取采集是如何实现的

app数据爬取采集是如何实现的
app数据爬取采集是如何实现的

https://www.360docs.net/doc/8e14210186.html,

app数据爬取采集是如何实现的

最近半年,我们八爪鱼陆续接到好几个APP数据采集的项目需求,我在群里面,偶尔也看到有些用户在问,有没有APP数据采集的工具。鉴于我们做过的几个APP数据采集项目的经验,我可以告诉大家,现在APP数据采集,市面上还没有通用的工具。我们八爪鱼内部是有一套工具,但由于使用的难度较高,需要编写脚本,所以不对普通用户公开,我们仅接受项目定制。

虽然不对外公开,但并不妨碍我们将技术分享出来,APP数据采集,一般走以下两种方式:

1.两种思路

1.抓包

2.HOOK

2.抓包

有代码经验或APP开发的同学都很容易理解,其实很多APP,走的都是webservice 通讯协议的方式,并且由于是公开数据,而且大部分是无加密的。所以只要对网络端口进行监测,对APP进行模拟操作,即可知道APP里面的数据是如何获取的。

我们只需要写代码模拟其请求,无论POST还是GET,即可得到该请求所返回的信息。再通过对返回的信息结构化解析,即可得到我们想要的数据。

public static void main(String[] args) {

Spider.create(new GithubRepoPageProcessor())

//从https://https://www.360docs.net/doc/8e14210186.html,/****开始抓

.addUrl("https://https://www.360docs.net/doc/8e14210186.html,/****")

//设置Scheduler,使用Redis来管理URL队列

.setScheduler(new RedisScheduler("localhost"))

//设置Pipeline,将结果以json方式保存到文件

.addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))

//开启5个线程同时执行

https://www.360docs.net/doc/8e14210186.html,

.thread(5)

//启动爬虫

.run();

}

以模拟采集“meizu”应用市场为例

应用市场产品

https://www.360docs.net/doc/8e14210186.html, 抓包返回参数

整个抓包过程

https://www.360docs.net/doc/8e14210186.html,

3.HOOK技术

HOOK技术是一种走操作系统内核的技术,由于安卓系统是开源的,所以可以借助一些框架修改内核,从而实现你要的功能。HOOK的形式,我们走的是Xposed 框架。Xposed是一款可以在不修改任何其他开发者开发的应用(包括系统服务)的情况下,改变程序运行的一个开源框架服务。基于它可以制作出许多功能强大的模块,以此来达到应用程序按照你的意愿运行的目的。

如果把安卓手机看做一座城堡,那Xposed可以让你拥有一个上帝

视角,城里的运作细节尽收你眼底,还能让你插一手改变城堡的运

作规律。

什么意思呢?简单的说就是你可以通过他,自动化的控制你的APP。如果将我们的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) {

https://www.360docs.net/doc/8e14210186.html,

XposedBridge.log("xxxxxxxxxxxx: " + error);

}

}

}

其实我们八爪鱼曾经也想开发一款通用的APP数据采集工具,并且两年前在这块投入研究了小半年,我们做出了一款APP采集脚本编辑工具,可以让一款APP 的数据采集项目缩减到3-5天即可开发完成。但我们认为,这个工具需要编写脚本一般用户是比较难上手的,所以仅作为内部项目使用。

以HOOK某APP为例

HOOK指令打开某APP

https://www.360docs.net/doc/8e14210186.html,

HOOK指令获取数据

4.这些年走过的坑

https://www.360docs.net/doc/8e14210186.html,

聊完APP采集的思路,我们跟大家分享一些遇过的坑吧,让大家乐一乐

坑一:签名算法

以某信的文章列表页及某信息页为例,对其http访问进行抓包,会发现其url的一个核心参数是我们无法知道如何生成的,这就导致,我们不可能直接用该url进行信息爬取;签名算法如果无法破解,HTTP这条路就是死路了。

坑二:http爬取回来的信息和页面显示不一致

以某信的某信息页为例,对比直接访问某信页面及http爬取的信息,可明显发现http爬取到的信息较少。造成得两种方式都用,才能既照顾速度又照顾完整性。

坑三:模拟器中的坑

APP自动识别你的运行环境进行屏蔽,最厉害的还是某信,连你是用模拟器打开还是真机打开,是什么内核的,全部进行限制。曾经见过牛人,找某手机厂商专门定做真机来配合。

坑四:帐号的坑

这个坑就有点大了,要找号、养号,都不是件容易的事情,更惨的是封号,真真让你一夜回到解放前。

最后,2018新年已开始工作,全年无休,欢迎随时找我聊工作。

相关采集教程:

百家号爆文采集:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/bjharticlecj.html

淘宝商品采集:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/tbspxx_7.html

豆瓣电影评论采集的方法以及详细步骤:

https://www.360docs.net/doc/8e14210186.html,

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/dbdypl-7.html

京东商品图片采集详细教程:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/jdpiccj.html

百度地图数据采集:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/cjbddtsj-7.html

黄页88企业名录采集方法:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/hy88cj.html

淘宝买家秀图片采集详细教程:

https://www.360docs.net/doc/8e14210186.html,/tutorialdetail-1/tbmjxpic.html

八爪鱼——90万用户选择的网页数据采集器。

1、操作简单,任何人都可以用:无需技术背景,会上网就能采集。完全可视化流程,点击鼠标完成操作,2分钟即可快速入门。

2、功能强大,任何网站都可以采:对于点击、登陆、翻页、识别验证码、瀑布流、Ajax脚本异步加载数据的网页,均可经过简单设置进行采集。

3、云采集,关机也可以。配置好采集任务后可关机,任务可在云端执行。庞大云采集集群24*7不间断运行,不用担心IP被封,网络中断。

4、功能免费+增值服务,可按需选择。免费版具备所有功能,能够满足用户的基本采集需求。同时设置了一些增值服务(如私有云),满足高端付费企业用户的需要。

相关主题
相关文档
最新文档