安卓应用数据获取:从Androzoo数据集中获得样本(下载Google Play 应用)
Androzoo数据库介绍
网站链接:Androzoo
网站主页的介绍截取:Université du Luxembourg
大学提供的公开数据集,是从包括官方Google Play应用市场在内的多个来源收集来的不断增长的Android应用程序集合。(具体比例可以在网站中的Markets
条目查看 )
它目前(2021.4.27)包含15,082,219个不同的APK。
做实验需要Google Play的应用,本来尝试从 apkpure
上获取,结果爬虫被拒绝访问也没有找到什么好方法,于是询问学长找到了这个数据集。
Androzoo数据库样本获取方法
API 使用方法在网站中有说明,见于API Documentation
条目,可以使用 Curl命令、浏览器或者从脚本上下载应用。
下面以使用Curl命令来举例,网站中提供的命令pattern是:
curl -O --remote-header-name -G -d apikey=${APIKEY} -d sha256=${SHA256} \ https://androzoo.uni.lu/api/download
可以看到,下载应用需要 APIKEY
(用户身份)和SHA256
(指明应用)
获得APIKEY
说明在Access
条目中,需要将申请电子邮件发送至[email protected],注明研究机构的名称和请求访问的人员的名称。确保从大学(或研究机构)的电子邮件帐户发送申请。
获取SHA256
说明在list
条目中,有提供CSV文件
(该文件每天Luxembourg当地凌晨6点之前更新),可下载,文件中的字段包括:
sha256,sha1,md5,apk_size,dex_size,dex_date,pkg_name,vercode,vt_detection,vt_scan_date,markets
其中就有下载需要的 sha256
,将其填入命令中即可。
字段含义的详细介绍可到list
条目中细看。
比较多使用的字段可能包括pkg_name
、markets
,分别表示文件名和文件来源的应用市场。
条目下面也有使用方法范例,对第一个范例作简要说明:
仅选择来自Google Play商店的APK: zcat latest.csv.gz | grep -v ‘,snaggamea’ | awk -F, ‘{if ($11 ~ /play.google.com/) {print} }’
zcat
是一个命令行实用程序,用于查看压缩文件的内容,而无需对其进行解压缩。第一个命令就是对最新CSV文件
进行查看。
grep -v ',snaggamea'
警告中有说明:
有一个假APK(BC564D52C6E79E1676C19D9602B1359A33B8714A1DC5FCB8ED602209D0B70266),其pkg_name包含“,”。使用grep -v ',snaggamea’摆脱它。
awk
是一个文本分析工具,会把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
使用方式是:
awk [-F field-separator] ‘commands’ input-file(s)
commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
也就是,以,
为分隔符,如果是来自play.google.com
的则打印。
学习
看了学长给我的代码,他们应该是将文件导入了数据库,通过数据库查询获得SHA256
也是非常好的处理方法。
同时,在搜索过程中发现有大佬自己写了一份下载脚本,附在此处。
https://github.com/E0HYL/AndrozooDownloader