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

简介: 爬虫---如何抓取app的思路和方案背景2015年,谷歌开始对外部App的内部链接和内容进行抓取,目前已经累计抓取了300多亿个。搜索引擎是内容门户之后的互联网第二次重大技术革命。然而伴随着智能手机的普及,应用软件(APP)取代网页,成为主流的技术。

爬虫---如何抓取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
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
|
1月前
|
数据采集 存储 XML
给你一个具体的网站,你会如何设计爬虫来抓取数据?
【2月更文挑战第23天】【2月更文挑战第75篇】给你一个具体的网站,你会如何设计爬虫来抓取数据?
|
1月前
|
数据采集 JSON 数据格式
python爬虫之app爬取-charles的使用
charles 基本原理,charles抓包,分析,重发。
46 0
|
2月前
|
数据采集 数据可视化 数据挖掘
Python爬虫实战:抓取网站数据并生成报表
本文将介绍如何使用Python编写简单而高效的网络爬虫,从指定的网站上抓取数据,并利用数据分析库生成可视化报表。通过学习本文内容,读者将能够掌握基本的爬虫技术和数据处理方法,为日后开发更复杂的数据采集与分析工具打下坚实基础。
|
3月前
|
数据采集 大数据 调度
利用aiohttp异步爬虫实现网站数据高效抓取
利用aiohttp异步爬虫实现网站数据高效抓取
|
2月前
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
65 2
Python爬虫案例:抓取猫眼电影排行榜
|
4月前
|
数据采集 数据库
爬虫增量抓取
爬虫增量抓取
111 3
|
1月前
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
66 0
|
21天前
|
数据采集 存储 Rust
Rust高级爬虫:如何利用Rust抓取精美图片
Rust高级爬虫:如何利用Rust抓取精美图片
|
23天前
|
存储 安全 开发工具
APP安全加固怎么做?加固技术、加固方法、加固方案
APP安全加固怎么做?加固技术、加固方法、加固方案
17 3
|
1月前
|
数据采集 JavaScript 前端开发
给我举几个爬虫抓取数据时遇到错误的例子。
【2月更文挑战第23天】【2月更文挑战第76篇】给我举几个爬虫抓取数据时遇到错误的例子。