
字节笔记本
2026年9月14日
ipatool:用命令行搜索和下载 App Store 应用的开源工具
想在终端里搜索 App Store 应用、下载 IPA 安装包,ipatool 可以直接做到。它用你自己的 Apple 账号登录,把"搜索、获取许可、下载"这套动作搬进了命令行,支持 iOS、iPadOS、tvOS、visionOS 和 macOS。昨天(9 月 13 日)刚发布了 v2.6.0,新增了对 Mac App Store 的支持。
项目简介
ipatool 是开源开发者 majd 维护的命令行工具,MIT 协议,主要用 Go 编写,在 GitHub 上已经拿到 11.2k stars。
它解决的问题很具体:iTunes 早已移除了 App Store 入口,想在电脑上拿到一个应用的安装包,图形界面的路基本断了。ipatool 把这条路重新打通,你用 search 搜应用,用 purchase 获取许可,用 download 拿到 .ipa(Mac 应用是 .pkg),全程在终端完成。
常见的使用场景有几类:
- 备份自己已购应用的历史版本
- 应用安全研究和逆向分析,仓库 topics 里明确标着 research 和 reverse-engineering
- 自动化下载,配合
--format json和--non-interactive可以写进脚本
核心特性
- 五个平台:覆盖 iOS、iPadOS、tvOS、visionOS,v2.6.0 起新增 macOS App Store 应用的搜索和下载
- 完整购买链路:搜索、获取许可、下载三步齐全,没买过的应用加
--purchase参数会自动先拿许可 - 历史版本:
list-versions列出应用全部版本,配合--external-version-id可以下载任意指定旧版本 - 自动化友好:输出支持 text/json 两种格式,提供
--non-interactive标志,凭证存在系统钥匙串里 - 跨平台:macOS、Linux、Windows 都能跑,越狱的 iOS 设备上也能运行
技术栈
- Go - 全部核心逻辑,命令行解析基于 cobra
- 99designs/keyring - 把账号凭证安全地存进系统钥匙串(macOS Keychain 等)
- Homebrew - macOS 上的推荐安装渠道
安装指南
macOS 一行命令:
brew install ipatoolLinux 和 Windows 去 GitHub Releases 下载对应平台的二进制文件。
想自己编译的话,装好 Go 工具链后:
git clone https://github.com/majd/ipatool.git
cd ipatool
go build -o ipatool快速开始
第一步,登录 Apple 账号:
ipatool auth login --email you@example.com交互模式下密码会隐藏输入,开了双重认证的话会再提示输入验证码。首次登录可能要几分钟,成功后凭证存进钥匙串,之后不用重复登录。用 ipatool auth info 查看当前账号,ipatool auth revoke 撤销凭证。
第二步,搜索应用,拿到 bundle identifier:
ipatool search "things" --limit 5第三步,下载:
ipatool download --bundle-identifier com.culturedcode.ThingsiPhone --purchase --output ./Things.ipa--purchase 的意思是:如果这个账号还没有该应用的许可,先自动获取许可再下载。已经买过的应用不用加。
使用示例
下载某个历史版本
# 列出所有可用版本
ipatool list-versions --bundle-identifier com.culturedcode.ThingsiPhone
# 用版本列表里拿到的 ID 下载指定版本
ipatool download --bundle-identifier com.culturedcode.ThingsiPhone \
--external-version-id <版本ID> --output ./old-version.ipa下载 Mac App Store 应用
ipatool search "pixelmator" --platform macos
ipatool download --bundle-identifier com.pixelmatorteam.pixelmator.x --platform macos在脚本里调用
ipatool search "weather" --format json --non-interactive--format json 输出机器可读的结果,--non-interactive 保证命令在 CI、cron 这类没有交互终端的环境里不会卡住等输入。
命令参考
| 命令 | 作用 |
|---|---|
auth login / auth info / auth revoke | 登录 App Store、查看当前账号、撤销凭证 |
search <term> | 搜索应用,支持 --limit 和 --platform |
purchase | 为应用获取许可,用 --app-id 或 --bundle-identifier 指定应用 |
download | 下载应用包,支持指定版本、平台和输出路径 |
list-purchases | 列出账号已购应用,支持 --platform 筛选 |
list-versions | 列出应用的所有历史版本 |
get-version-metadata | 获取应用某个特定版本的元数据 |
常用全局参数:
| 参数 | 说明 |
|---|---|
--format text|json | 输出格式,默认 text |
--non-interactive | 非交互模式,自动化环境建议加上 |
--keychain-passphrase | 钥匙串解锁密码 |
--verbose | 输出详细日志 |
注意事项
- 需要一个已经能在 App Store 正常使用的 Apple 账号。README 里的原话是 "An Apple Account already configured to use the App Store"。没登录过 App Store、没同意过条款的全新账号,登录时可能报错。
- 开了双重认证的账号,在非交互模式下要用
--auth-code传入验证码。 download要求--app-id和--bundle-identifier至少提供一个,两个都给时后者优先。- visionOS 平台的搜索结果上限是 12 条,其他平台
--limit默认值是 5。 - 这个工具在应用安全研究圈里用得很多,请只操作自己有权限的账号和应用,遵守 Apple 服务条款和当地法规。