爬虫---如何抓取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);
}
}
}

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

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

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

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

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

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

参考链接:

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

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

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

相关文章
|
2月前
|
数据采集 存储 前端开发
动态渲染爬虫:Selenium抓取京东关键字搜索结果
动态渲染爬虫:Selenium抓取京东关键字搜索结果
|
2月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
8天前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
85 5
|
14天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
9天前
|
数据采集 Web App开发 机器学习/深度学习
Selenium爬虫部署七大常见错误及修复方案:从踩坑到避坑的实战指南
本文揭秘Selenium爬虫常见“翻车”原因,涵盖浏览器闪退、元素定位失败、版本冲突、验证码识别等七大高频问题,结合实战案例与解决方案,助你打造稳定高效的自动化爬虫系统,实现从“能用”到“好用”的跨越。
165 0
|
2月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
2月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
2月前
|
数据采集 存储 XML
Python爬虫XPath实战:电商商品ID的精准抓取策略
Python爬虫XPath实战:电商商品ID的精准抓取策略
|
5月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
345 68
|
5月前
|
数据采集 存储 Web App开发
逆向音乐APP:Python爬虫获取音乐榜单
逆向音乐APP:Python爬虫获取音乐榜单
370 58

热门文章

最新文章