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