爬虫---如何抓取app的思路和方案

优惠券活动 2019-07-12

算法 加密 搜索引擎 数据采集 移动互联网 activity

爬虫---如何抓取app的思路和方案
背景
2015年,谷歌开始对外部App的内部链接和内容进行抓取,目前已经累计抓取了300多亿个。

搜索引擎是内容门户之后的互联网第二次重大技术革命。然而伴随着智能手机的普及,应用软件(APP)取代网页,成为主流的技术。由于APP的内容一度无法被搜索引擎抓取到,人们惊呼,移动互联网将带来一场搜索引擎的生存危机。
不过,通过和应用软件开发商的合作,谷歌(微博)已经一定程度上化解了这场危机。日前,谷歌已经宣布,先后抓取了海量APP的300多页的页面内容。手机端搜索的信息量,也将更加丰富。

谷歌搜索团队在4月16日的一篇官方博文中,宣布了这一消息。

谷歌一名工程师帕特尔(RajanPatel)对媒体披露,从两年前,谷歌开始对外部App的内部链接和内容进行抓取,目前已经累计抓取了300多亿个。

在传统的WEB网页中,谷歌可以通过软件“蜘蛛”进行自动访问和抓取,无需获得网站管理员的许可。

而在App内容的抓取中,谷歌需要和应用软件开发商建立合作。谷歌提供了相应的软件开发接口(API),开发者通过这些接口,可以对谷歌搜索开放数据,从而实现搜索引擎的内容抓取。

据悉,已经有大量的手机端软件已经和谷歌合作,其中包括微型博客Twitter、短期租房工具Airbnb、消费者点评工具Yelp、手机订餐工具OpenTable、图片收藏工社交网络Pinterest、房地产搜索工具Trulia等等。

当然还有大量的手机端媒体APP,也已经被谷歌抓取新闻报道。

300多亿个链接的内容,和谷歌抓取的网页数据库相比,还只是小巫见大巫。之前的报道称,谷歌蜘蛛抓取的网页,数量高达数百亿张。

app数据抓取分析
凡是可以看到的APP数据都可以抓取。

分析研究过不下300个APP抓包。

50%的app,通过抓包软件就可以分析出抓取参数并抓取到信息。

30%的app,可能需要适当的反编译,分析出加密算法并抓取到信息。

10%的app,可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息。

10%的app,通过各式各样的签名,证书,设备绑定等方法,隐藏加密算法。

总的来说,没有不能抓取的app,只是时间成本的问题。

app数据采集方案
APP数据采集,一般走以下两种方式:

抓包
抓包有代码经验或APP开发的同学都很容易理解,其实很多APP,走的都是webservice通讯协议的方式,并且由于是公开数据,而且大部分是无加密的。所以只要对网络端口进行监测,对APP进行模拟操作,即可知道APP里面的数据是如何获取的。我们只需要写代码模拟其请求,无论POST还是GET,即可得到该请求所返回的信息。再通过对返回的信息结构化解析,即可得到我们想要的数据。

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) {
        XposedBridge.log("xxxxxxxxxxxx: " + error);
    }
}

}

[外链图片转存失败(img-Nx13XfXc-1562310314720)(http://image.525.life/FvlxFKXKvu5FkjeMqqDjncwkfAEZ)]

模拟点击
基本原理(基于UIautomator)

通过程序模拟人的行为对APP的界面进行点击、滑动等操作,同时可以获取APP的Activity页面上的大部分控件上的文本信息(有一些可能获取不到,Uiautomator本身就获取不到)

抓包工具
mac系统 Wireshark
Mac系统 charles
windows Fiddler

通常通过抓包工具来查看请求的接口和参数,简单的可以用fidder,手机端设置代理即可

如果要抓取像声音/视频这种udp的包 可以使用wireshark。

charlse 代理抓包利器
jadx apk反编译
xpoxed hook大法工具
ida 逆向中静态分析工具

参考链接:

https://tech.qq.com/a/20150417/013527.htm

https://www.zhihu.com/question/53094297/answer/133665902

https://www.zhihu.com/question/27951667

作者:张小凡vip
来源:CSDN
原文:https://blog.csdn.net/zzq900503/article/details/94736168
版权声明:本文为博主原创文章,转载请附上博文链接!

登录 后评论
下一篇
corcosa
14358人浏览
2019-10-08
相关推荐
关于.NET玩爬虫这些事
1173人浏览
2017-08-01 15:19:00
Python分布式爬虫原理
1063人浏览
2017-11-09 17:18:00
网络爬虫基本原理(一)
598人浏览
2018-04-11 08:29:16
网络爬虫基本原理(一)
439人浏览
2018-03-09 11:57:00
网络爬虫基本原理(一)
419人浏览
2018-03-09 11:57:00
网络爬虫-原理篇(一)
657人浏览
2015-05-10 18:37:00
Python爬虫知识点梳理
7832人浏览
2018-02-07 22:09:19
网络爬虫-原理篇(二)
413人浏览
2015-05-10 18:57:00
都是爬虫惹的祸
1096人浏览
2018-10-29 11:58:00
0
0
0
447