ARTICLE · 1272830
Hazel安卓下载器安全吗?72MB的APK里塞了一整套Python
QUOTE
两个叫 Hazel 的软件,一个诞生在 2006 年、只跑在 Mac 上、按年收费;另一个诞生在 2026 年 8 月、活在安卓手机里、完全免费。它们连功能都对不上,却共用了一个名字——而搜索框里只有一个 Hazel。
—— T技研室

— 搜索框里只有一个 Hazel。而你装到手机上的这个,是 2026 年 8 月才出生的安卓下载器,跟 Mac 上那个用了二十年的文件整理工具,是两件毫不相干的事
本文看点
01
你在应用商店或者搜索结果里看到的那个 Hazel,和 macOS 上那个老牌文件整理工具毫无关系
02
72MB 的安装包里塞了一整套 CPython 解释器,外加 FFmpeg 和 QuickJS——这才是它体积失控的真正原因
03
签名、文件哈希、权限清单三项实测全部对上,官方渠道拿到的包是干净的
01
重名
两个 Hazel 其实是两个东西
先解决最容易踩的坑。
T技研室之前写过一篇讲旧金山地铁插软盘的文章,那期引了条评论说「Hazel 不是那个整理文件的软件吗」。这误会一点都不冤——同时占名。
macOS 那个 Hazel 是老牌工具,靠「规则」吃饭——你在文件夹上设条件,它就按条件把文件挪走、改名、打标签,App Sweep 还能顺手清理已删软件留下的残留文件。二十年了。
而我们今天要拆的安卓这个 Hazel,是另一个东西。

— macOS Hazel 干的是这种活:按规则把文件自动改名、归档、挪到该去的位置。二十年了,收费订阅制
有意思的是,官方 README、CHANGELOG、官网三处没提过一个字,一个字都没有。项目自述的口号是「The art of saving media」,图标用的是一片叶子。
而 macOS Hazel 的经典图标,也是一片叶子。
两片叶子撞车,多半是巧合,也可能是致敬——不替它下结论。
02
本体
它到底做了什么
Hazel for Android 的自我定位很直白:把链接贴进去,它自己认出后面是什么。
核心能力:
界面上做了深浅色主题、多强调色、玻璃拟态,v1.1.15 那版还加了 8 种玻璃风格和 11 种强调色。语言支持 10 种,含简体中文。
一个细节值得注意:它支持自己搜索——不用先去别的网站找链接,直接在 App 里搜 YouTube、SoundCloud、Bandcamp,搜索用的是 NewPipe Extractor。

— Hazel for Android 干的完全是另一件事:把链接贴进去,它自己认出后面是什么,然后排队下载
03
拆包
72MB 到底装了什么
按惯例,安装包要先验一遍才敢说别的。我把官方 arm64 构建完整下下来拆开看。
先看体积构成。这个包 72.73 MB,其中 native 库有这些:

— 按官方 arm64-v8a 构建实测拆解,条目数 580。原生库体积取自实际文件
这很不寻常
绝大多数下载器只是给 yt-dlp 套一层壳——点一下按钮,调用系统里某个现成的命令行。而 Hazel 是把 一整套工具链一起打包,塞进手机里跑。

这解释了它的两个特点:
一是为什么这么大。14MB 的 Python 加上 FFmpeg,剩下才是 App 本体。
二是敢承诺自动更新。yt-dlp 的更新不是发个 App 版本就能带上的——那是个独立可执行文件,需要替换。官方给的通道是 Stable / Nightly / Master 三档,可自动检查下载。
顺带一提,F-Droid 给它打了一个负面特征标签:NonFreeNet。理由写得很直白——「使用 GitHub API 来检查和下载 yt-dlp 引擎更新」。也就是说,这个号称「不向任何服务器发送数据」的 App,确实会为了更新引擎去连 GitHub。
04
验签
三方对账怎么做的
一个下载器要装到手机上,它装的东西是你自己下回来的。所以第一件事是确认:是不是同一个包
我把三处独立来源摆在一起对账:
第一处,官网公布值。 开发者自己的文档里给出了签名证书的 SHA-256 指纹:
「0377e9c8352c017e42583cea1715c40c400a51c4045c268825ffc9bae1305c86」
F-Droid 元数据 我去翻了 F-Droid 仓库里的构建定义文件,里面有一行 AllowedAPKSigningKeys,写的就是这个值。
这行的含义比看起来重要:不匹配就拒绝安装。这不是一句承诺,是一道写死在代码里的闸门。
第三处,包里实际的证书。 我没有现成的解析工具(这台机器上 androguard、apksigner 都没有),就自己写了脚本,去 APK 二进制里定位签名块、解析出证书、算哈希。绕了两处弯之后取到结果:
「0377e9c8352c017e42583cea1715c40c400a51c4045c268825ffc9bae1305c86 —— 完全一致」

— 本机实测:从 APK v2 签名块解析出的证书 DER,与官网公布值、F-Droid 构建元数据 AllowedAPKSigningKeys 逐位一致
文件本身也做了同样的核对。F-Droid 的官方索引(index-v2.json)里记着每个构建的 SHA-256,我从 GitHub 下回来的 -fdroid-arm64-v8a 变体算出来是 21d51275...,与官方索引逐位相同。
三处对账,全绿。这套做法其实就是 F-Droid 信任机制的手动复现——如果你以后要装任何不在应用商店的 App,值得照着走一遍。
顺便说一个观察到的细节:这个包只用了 v2 签名。v2 是 Android 7.0 引入的现代方案,签名覆盖整个 APK 文件而不只是清单部分,防篡改强度更高。用 v2 是个正常且正确的选择,只是很多小项目还在用老的 v1。
05
分歧
同一个软件,两种权限
到这里一切正常。但我在对比包的时候发现了一件事,值得单独讲。
GitHub 上的 Release 里有两套构建:fdroid 变体和stable 变体。我怀疑它们不一样,就把两个都下下来对比。
结果:两个包各 580 个条目,只有 3 个文件有差异——AndroidManifest.xml、一个 dexopt 配置文件、还有一个 dex。差别就出在清单里:
REQUEST_INSTALL_PACKAGES 这条权限,意思是可以装别的应用。
在 F-Droid 变体里它不存在;在 stable 变体里存在。
差异的来源不难推断:stable 变体要自己从 GitHub 拉 yt-dlp 引擎更新,那个更新是个独立的可执行文件;而 F-Droid 版本走的是 F-Droid 客户端的更新机制,不需要这条权限。
权限面不一样 而且 F-Droid 官方索引里记录的权限清单,确认只有 10 条,不含安装权限。
这也算解释了 F-Droid 为什么在页面上特意提醒你「直接下 APK 装不会收到更新通知,是一种不太安全的下载方式,建议用 F-Droid 客户端」——它不只是在说更新方便,是在给你权限更小的那一份。
顺便更正一个流传的说法:网上一些 APK 聚合站列出的 11 条权限清单,对应的是 stable 变体,不是 F-Droid 变体。两者混着看会得出偏大的风险判断。
06
清单
怎么自己判断一个 APK 值不值得装
这一节是这篇最实用的部分。上面那套流程不难,全部可以用现成工具完成:
第 3 步是最容易忽略、也最有效的一步。改签名就换哈希,而哈希是公开可查的——只要拿 F-Droid 索引当基准,改过包就一定露馅。
还有一条通用原则:优先选权限更小的那份。F-Droid 之所以值得多花一步,就是这个原因。
07
结论
一个值得信任,但还很年轻的东西
回到开头那个问题:这个 Hazel 安卓下载器安全吗。
安装包本身是干净的——签名三方对账一致,文件哈希与官方索引逐位相同,功能代码全在 GitHub 上开源,GPL-3.0。
但有两件事得说清楚。
第一,它很年轻。 仓库建于 2026 年 8 月 28 日,到今天满打满算两个月。12 个版本里有 5 个是 10 月一个月内发的——v1.1.11 到 v1.1.15,平均三天一版。这种节奏说明开发者非常勤奋,也说明没经历长期检验。GitHub 上 129 个 star、8 个 fork,全渠道累计下载 3610 次(arm64 单变体 2363 次),是一个刚起步的项目。
它不在 Play 上架 官方给的理由很简单:Play 的政策要求这个应用不能再分发它下载到的内容。而这一限制反过来解释了为什么它的功能设计得比同类更激进——直播录制、首映自动保存、SOCKS5 全局代理,这些在应用商店里都很难过审。

— 数据取自 GitHub API Releases 与仓库元数据实测。下载量为全部 12 个版本、所有架构构建的累计值
所以我的判断是:认准渠道 对一个两个月大、由个人开发者维护的下载器来说,把上面那套核验流程走一遍,两分钟的事。
∞
索引
硬核考古 · 第 07 期
这一期拆的是软件,继续把前六期串起来看,规律其实很清楚:标准滞后于现实。
「下一期讲【为什么手机充到 80% 就变慢】,写完会在搜『充电变慢』时排在前面。」
T技研室 · 只做标准考据与机制拆解
REFERENCE
F-Droid 软件页《Hazel》(com.hazel.android),含版本历史、构建日志、PGP 签名与 anti-features 说明,f-droid.org/zh_Hans/packages/com.hazel.android/
F-Droid 官方仓库索引 index-v2.json(com.hazel.android 条目),含各构建 SHA-256 与 IPFS CID,f-droid.org/repo/index-v2.json
F-Droid 构建定义 fdroiddata/metadata/com.hazel.android.yml,含 AllowedAPKSigningKeys、AutoUpdateMode、VercodeOperation
F-Droid 可复现构建验证服务器条目,verification.f-droid.org/packages/com.hazel.android/
F-Droid《Anti-Features》说明文档(NonFreeNet 释义),f-droid.org/docs/Anti-Features/
Hazel for Android 官方网站与使用文档,sibtainocn.github.io/Hazel/hazel/
GitHub 仓库 SibtainOcn/Hazel(源码、Releases、CHANGELOG、README),github.com/SibtainOcn/Hazel
本机实测记录:官方 arm64 构建文件 SHA-256、APK v2 签名块证书 DER 指纹、AndroidManifest 权限清单、两变体条目差异比对
Noodlesoft《Hazel》官方站与手册(macOS 版功能与授权信息),noodlesoft.com
yt-dlp / NewPipe Extractor / Media3 / FFmpeg 项目文档(Hazel 所依赖的开源组件)
Pexels License(配图授权说明),pexels.com/license















































































