返回目录
开源项目开发者工具类新手

Magika:基于深度学习的快速文件类型检测工具

Magika 是 Google 开源的 AI 驱动文件类型检测工具,借助深度学习和自定义优化模型,可在单个 CPU 上毫秒级识别 200 多种文件类型,平均准确率约 99%。提供 Rust CLI、Python API、JavaScript/TypeScript 及 GoLang 绑定,已用于 Gmail、Drive、Safe Browsing 等安全内容路由场景,采用 Apache 2.0 许可证。

0 次阅读2026/09/08 发布
Magika:基于深度学习的快速文件类型检测工具 来源图片

社区作者 · zZz

它解决什么问题

Magika 是一款基于深度学习的文件内容类型检测工具,模型仅为数 MB,在单 CPU 环境下即可快速运行,单文件推理时间约 5ms(含一次模型加载开销后)。该工具在约 1 亿样本、200+ 内容类型(涵盖二进制与文本格式)上完成训练与评估,平均精度和召回率约 99%,尤其擅长文本类文件识别。Magika 使用每个内容类型独立的阈值系统决定是否信任模型预测,并支持高置信度、中置信度和最佳猜测等预测模式以控制容错率。

CLI 工具本身用 Rust 编写,同时提供 Python 模块、Rust/JavaScript(TypeScript) 绑定,以及实验性 npm 包。Google 已在 Gmail、Drive、Safe Browsing 等业务中使用 Magika 进行文件安全路由,每周处理数百亿样本,并集成到 VirusTotal、abuse.ch 等安全工具。另有浏览器端 Web 演示可供在线试用,无需安装。

本项目的开发文档、核心概念、工作原理、模型与内容类型列表等详见 Magika 官方网站;安全漏洞报告请联系 [email protected]

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

一、命令行工具(Rust CLI)安装方式

\n1. 通过

可复制命令
Python 包安装:pipx install magika

(需要 Python 与 pipx 环境)。\n2. 通过 Homebrew 安装(macOS/Linux):

可复制命令
brew install magika

。\n3. 通过安装脚本安装:\n - Unix/Linux/macOS:

可复制命令
curl -LsSf https://securityresearch.google/magika/install.sh | sh\n   - Windows PowerShell:powershell -ExecutionPolicy Bypass -c "irm https://securityresearch.google/magika/install.ps1 | iex"\n4. 通过 Rust 包管理器安装:cargo install --locked magika-cli

(需安装 Rust)。\n\n二、Python 包安装:

可复制命令
pip install magika

。\n\n三、JavaScript 包安装:

可复制命令
npm install magika

。\n\n四、快速开始示例:\n1. 递归识别目录内文件:\n cd tests_data/basic && magika -r * | head\n 输出示例:asm/code.asm: Assembly (code)、batch/simple.bat: DOS batch file (code)、c/code.c: C source (code) 等。\n2. JSON 输出:\n magika ./tests_data/basic/python/code.py --json\n 可查看输出中的 Python source、score、mime_type 等信息。\n3. 从标准输入读取:\n cat tests_data/basic/ini/doc.ini | magika -\n4. 查看帮助:\n magika --help\n 常用选项包括:-r(递归扫描目录)、--no-dereference(不跟踪符号链接)、--colors/--no-colors(控制颜色)、-s/--output-score(输出预测分数)、-i/--mime-type(输出 MIME 类型)、-l/--label(输出简单标签)、--json/--jsonl(JSON/JSONL 格式)、--format <CUSTOM>(自定义输出格式,支持 %p 路径、%l 标签、%d 描述、%g 分组、%m MIME、%e 扩展名、%s 分数、%S 百分比分数、%b 模型输出等占位符)。\n\n五、Python API 示例:\n from magika import Magika\n m = Magika()\n # 识别字节内容\n res = m.identify_bytes(b'function log(msg) {console.log(msg);}' )\n print(res.output.label) # javascript\n # 识别文件路径\n res = m.identify_path('./tests_data/basic/ini/doc.ini' )\n print(res.output.label) # ini\n # 识别文件流\n with open('./tests_data/basic/ini/doc.ini', 'rb') as f:\n res = m.identify_stream(f)\n print(res.output.label) # ini\n\n六、注意事项与常见问题:\n- 模型加载为一次性开销,之后每次推理约 5ms。\n- 可同时对数千个文件调用;文件大小不影响推理时间,Magika 只使用文件内容的一小部分。\n- 文件丢失时,Magika 可能返回“Generic text document”或“Unknown binary data”等通用标签。\n- 更完整的 CLI 文档见 https://crates.io/crates/magika-cli;

可复制命令
Python 模块及 JavaScript 模块详见项目官方文档

。正文未展开的其他常见问题请参阅 Magika 官方网站 FAQ。

来源教程配图

教程配图
配图 1 · 教程配图查看原图

适用场景

命令行文件类型检测与分类
Gmail
Drive
Safe Browsing 等安全内容路由
恶意软件分析平台的文件类型预判(如 VirusTotal
abuse.ch)
开发工具中自动识别代码
文本与二进制格式
批量文件扫描与目录递归分析
标准输入流或文件流的 MIME/标签识别