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

相关文章
|
3月前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
7天前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
24天前
|
数据采集 Python
python爬虫抓取91处理网
本人是个爬虫小萌新,看了网上教程学着做爬虫爬取91处理网www.91chuli.com,如果有什么问题请大佬们反馈,谢谢。
28 4
|
2月前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
68 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
1月前
|
前端开发 API Android开发
10 大 APP 开发方案比较
本文首发于微信公众号“前端徐徐”,深入剖析了当前最受欢迎的十种APP开发方案,包括传统的iOS和Android开发、跨平台的React Native和Flutter、现代化的CapacitorJS和PWA等,旨在帮助开发者在众多选择中找到最适合的开发路径。通过详细分析每种方案的优缺点及适用场景,文章提供了详尽的比较和实用建议,助力高效、优质的APP开发。
99 0
10 大 APP 开发方案比较
|
1月前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
2月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
1月前
|
数据采集
爬虫案例—抓取找歌词网站的按歌词找歌名数据
爬虫案例—抓取找歌词网站的按歌词找歌名数据
|
1月前
|
数据采集 存储
爬虫案例—根据四大名著书名抓取并存储为文本文件
爬虫案例—根据四大名著书名抓取并存储为文本文件
|
1月前
|
数据采集 开发者
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数
爬虫案例—抓取豆瓣电影的电影名称、评分、简介、评价人数