3 步跑通从登录到下载:ipatool 命令行下载 App Store IPA 完整教程
【免费下载链接】ipatoolCommand-line tool that allows you to search for iOS, iPadOS, tvOS, visionOS, and macOS apps on the App Store, and download .ipa or macOS .pkg app packages.项目地址: https://gitcode.com/GitHub_Trending/ip/ipatool
ipatool 是一个用 Go 编写的命令行工具,让你直接在终端里检索 iOS、iPadOS、tvOS、visionOS 与 macOS 应用商店中的应用,并下载对应的.ipa或 macOS.pkg安装包。如果你的工作流涉及抓包分析、安装包备份或 CI 集成,又不想打开 iTunes 或 Xcode 点来点去,这篇文章就是给你的:从装好、登录、搜索到下载,最后再把它接进脚本,按顺序读一遍就能动手。
🧰 挑一种安装方式,把 ipatool 放进 PATH
ipatool 安装有三条路,按你的环境挑一条即可,装完确保二进制在 PATH 里就行:
| 方式 | 适合谁 | 要做的事 |
|---|---|---|
| Homebrew | macOS | brew install ipatool |
| 手动下载 | 全平台 | 从项目发布页取对应系统的预编译二进制,放入 PATH |
| 源码编译 | 全平台(需 Go 环境) | 克隆仓库后执行go build |
源码编译的完整链路:
git clone https://gitcode.com/GitHub_Trending/ip/ipatool cd ipatool go build -o ipatool装没装好,一条命令见分晓——输出里能看到 auth、search、download 这类子命令就说明没问题:
ipatool --help🔐 先登录:让 ipatool 以你的身份访问 App Store
所有要动 App Store 数据的命令都得带着你的 Apple ID 身份,所以认证必须先做。
ipatool auth login -e your-email@example.com终端会提示输入密码(不回显)。如果账号开着两步验证,紧接着会出现enter 2FA code:提示,这时在任意一台已信任的 iPhone 或 iPad 上打开「设置 → Apple ID → 密码与安全性」,点「获取代码」,把 6 位数字填进终端即可:
两个实操细节:
- 脚本环境没法交互输入时,直接用
--auth-code把验证码带进命令:ipatool auth login -e you@example.com --auth-code 123456 - 登录成功后凭据会写进系统钥匙串(macOS Keychain、Linux Secret Service 等),后续命令自动复用;
ipatool auth info查看当前账号,ipatool auth revoke清掉凭据。
凭据落在钥匙串而非明文文件里,但共享电脑上仍建议用临时 Apple ID,别把主账号的记录留在别人会用的机器上。
凭据存取的实现可以翻翻 pkg/keychain/,登录流程本身在 pkg/appstore/appstore_login.go。
🔍 搜应用,拿到能下载用的 ID
你手里往往只有一个应用名,而下载命令要的是 ID 或 Bundle Identifier,search就是中间这座桥:
ipatool search "微信" -l 10常用参数就两个:
| 参数 | 作用 |
|---|---|
-l, --limit | 返回条数,默认 5 条,visionOS 最多 12 条 |
--platform | 指定搜索平台:iphone、ipad、appletv、visionos、macos |
输出里每条结果带四样东西:数字 App ID、名称、当前版本、Bundle Identifier。你要留住的只有一个——数字 ID 配-i用,Bundle Identifier 配-b用,两者效力相同。目标应用同时有 iPhone 和 Apple TV 版本时,加--platform appletv切换搜索范围。搜索请求的构造在 pkg/appstore/appstore_search.go。
📥 跑通一次 ipatool 下载 IPA
ID 拿到手后,下载只剩一条命令:
ipatool download -i 414478124 -o ~/Downloads/app.ipa偏好 Bundle Identifier 的话换成-b com.example.app。执行后进度条走完,最后打印落盘路径,ls确认文件存在即成功。完整过程长这样:
账号下没有这个应用的有效授权时(免费应用也需要授权记录),给命令追加--purchase,它会先补一次授权再重试;也可以单独跑ipatool purchase -i <App ID>先拿授权。
下到的
.ipa是加密包,必须走对应的授权安装渠道(企业签名、开发者工具等)才能装机,文件本身不等于"任意设备直接可开"。
想拿历史版本
先列版本:
ipatool list-versions -b com.example.app从结果里挑出想要那版的 external version id,下载时交给--external-version-id;不传就默认拿最新版。想查某个版本的发布时间、更新说明,再用get-version-metadata --external-version-id <id>解析(实现在 pkg/appstore/appstore_get_version_metadata.go)。
🩺 卡住时,先对照这三种情况
情况一:登录时停在enter 2FA code:,你却不记得自己开过两步验证原因:Apple 账号现在默认普遍开启 2FA,新设备首次登录必须过这一关。解法:已信任设备上进「密码与安全性」取 6 位验证码填入终端;脚本里则用--auth-code直接带入。
情况二:下载中途报授权 / license 错误原因:该应用(包括已下架的免费应用)在当前账号下没有有效授权记录。解法:命令追加--purchase,出错后自动补授权再试;或先ipatool purchase拿好授权再重新下载。
情况三:输出喂给脚本后 jq 报错、进度条变乱码原因:默认是交互模式,输出里混着进度条和提示符。解法:统一加--non-interactive --format json,出来的就是干净结构,管道随便接。
⚙️ 两个开关,把 ipatool 接进自动化
JSON 输出。几乎所有命令都认--format json:
ipatool search "微信" --format json先看一眼结构,用jq抽出 App ID 列表,逐个喂给download,就是批量抓取的标准姿势。
非交互模式。加上--non-interactive后工具不再等待任何输入,放进 CI 或 crontab 都安全;如果钥匙串是加密的,还要配--keychain-passphrase传入解锁口令,否则非交互模式下会直接报错。把"登录 → 搜索 → 下载"串成定时任务,就是一个最小可用的应用更新监控:搜到版本号变了,就带-o落一份归档。
📋 命令速查表
| 命令 | 用途 | 关键参数 |
|---|---|---|
auth login | 登录 | -e邮箱、-p密码、--auth-code验证码 |
auth info/auth revoke | 查账号 / 清凭据 | — |
search <关键词> | 搜应用 | -l条数、--platform平台 |
purchase | 获取授权 | -i/-b |
list-purchases | 列出账号已购应用 | -l每页条数、-p页码 |
list-versions | 列出可下载版本 | -i/-b |
get-version-metadata | 查版本详情 | --external-version-id |
download | 下载安装包 | -i/-b、-o、--external-version-id、--purchase |
通用全局参数:--format text|json、--non-interactive、--verbose(详细日志)、--keychain-passphrase(钥匙串口令)。各命令的完整定义在 cmd/ 目录。
🏁 收尾
一句话收束:ipatool 把"从 App Store 拿到 IPA"这件原本依赖图形界面的事,拆成了登录、搜索、下载、版本管理四条命令,再配上 JSON 与非交互模式,脚本随时能接。一个现在就能做的小任务:跑一次ipatool list-purchases,看看账号名下已经有哪些应用的授权,挑一个下载下来验证整条链路。往前多想一步——如果你要把这套流程放进每夜定时任务,凭据是每次都重新登录稳妥,还是长期复用钥匙串里的记录?
【免费下载链接】ipatoolCommand-line tool that allows you to search for iOS, iPadOS, tvOS, visionOS, and macOS apps on the App Store, and download .ipa or macOS .pkg app packages.项目地址: https://gitcode.com/GitHub_Trending/ip/ipatool
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考