ByteNoteByteNote
ipatool:用命令行搜索和下载 App Store 应用的开源工具

字节笔记本

2026年9月14日

ipatool:用命令行搜索和下载 App Store 应用的开源工具

API中转
¥120

想在终端里搜索 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 一行命令:

bash
brew install ipatool

Linux 和 Windows 去 GitHub Releases 下载对应平台的二进制文件。

想自己编译的话,装好 Go 工具链后:

bash
git clone https://github.com/majd/ipatool.git
cd ipatool
go build -o ipatool

快速开始

第一步,登录 Apple 账号:

bash
ipatool auth login --email you@example.com

交互模式下密码会隐藏输入,开了双重认证的话会再提示输入验证码。首次登录可能要几分钟,成功后凭证存进钥匙串,之后不用重复登录。用 ipatool auth info 查看当前账号,ipatool auth revoke 撤销凭证。

第二步,搜索应用,拿到 bundle identifier:

bash
ipatool search "things" --limit 5

第三步,下载:

bash
ipatool download --bundle-identifier com.culturedcode.ThingsiPhone --purchase --output ./Things.ipa

--purchase 的意思是:如果这个账号还没有该应用的许可,先自动获取许可再下载。已经买过的应用不用加。

使用示例

下载某个历史版本

bash
# 列出所有可用版本
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 应用

bash
ipatool search "pixelmator" --platform macos
ipatool download --bundle-identifier com.pixelmatorteam.pixelmator.x --platform macos

在脚本里调用

bash
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 服务条款和当地法规。

项目链接

分享: