ipatool 教程:在 Windows / Linux / macOS 上搜索与下载 iOS 应用包(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
公司测试机要装一个老版本 App 才能复现线上 Bug,但 App Store 界面里只能装到最新版,旧版安装包去哪找?ipatool 就是解决这个问题的命令行工具:在任意系统上搜索 App Store 里的 iOS、iPadOS、tvOS、visionOS 和 macOS 应用,列出历史版本,下载 IPA 或 macOS 安装包,无需依赖越狱设备。本文按"任务"带你走完整个流程。
它适合谁,又能解决什么问题
如果你是 iOS 测试、逆向分析或应用运维人员,需要反复取用不同版本的应用包,ipatool 把"搜索、查版本、授权、下载"收敛成了几条命令。它的能力可以概括为四点:
- 跨平台搜索 App Store 应用(iOS、iPadOS、tvOS、visionOS、macOS)
- 列出某个应用的全部可下载历史版本
- 下载 IPA 或 macOS 安装包,支持指定版本
- 管理 Apple ID 登录、付费应用的下载许可与已购清单
系统要求只有一条:Windows、Linux 或 macOS 任选其一,外加一个能正常登录 App Store 的 Apple ID。
最短上手路径
这一节只讲一条能跑通的主路径:从源码编译。macOS 上也可以brew install ipatool,其他系统可直接取用 Release 里的预编译二进制。
git clone https://gitcode.com/GitHub_Trending/ip/ipatool cd ipatool go build -o ipatool main.go编译产物是当前目录下的ipatool可执行文件,先确认各子命令都注册成功:
./ipatool --help预期看到 auth、search、purchase、download、list-versions、list-purchases、get-version-metadata 等子命令。
按任务查命令
任务一:登录 App Store 账号
后面所有命令都依赖登录态,所以先完成登录。--email是必填参数,密码默认在终端里交互输入,也可以用--password直接传入:
ipatool auth login --email you@example.com登录成功后凭证会写入系统的密钥管理器,之后的命令不再重复登录。用下面两条命令核对状态或清理本地凭证:
ipatool auth info ipatool auth revoke预期auth info输出当前账号的姓名和邮箱。
任务二:搜索应用
这一步是拿应用 ID 和 bundle identifier,下载时会用到。搜索按关键词进行,结果默认 5 条:
ipatool search "WeChat" --limit 10需要锁定平台时加--platform,可选值有 iphone、ipad、appletv、visionos、macos:
ipatool search "TikTok" --platform iphone预期看到应用列表,每条含 app ID 和 bundle identifier。
任务三:查看历史版本
要下载某个老版本,得先知道它的版本号。list-versions返回该应用的全部 external version identifiers(外部版本标识):
ipatool list-versions -b com.tencent.xin也可以改用-i传应用 ID。预期输出一串 external version identifiers,下载指定版本时必须使用其中的值。
任务四:下载应用包
下载用 app ID 或 bundle identifier 定位目标,二选一必填,不指定版本时默认取最新版:
ipatool download -b com.tencent.xin -o wechat.ipa下载特定历史版本时补上--external-version-id,值来自上一步的输出:
ipatool download -b com.tencent.xin \ --external-version-id 1677862400 -o wechat_v8.ipa付费应用要加--purchase,工具检测到需要许可时会先自动申请再下载:
ipatool download -b com.example.app --purchase -o app.ipa交互模式下会显示下载进度条,结束后在-o指定的路径得到安装包。
任务五:付费授权与已购内容
只想要下载许可、暂不下载包,可以单独跑purchase;它和--purchase参数是同一套逻辑:
ipatool purchase -b com.example.applist-purchases按购买日期倒序列出当前账号拥有的应用,分页参数默认第 1 页、每页 10 条:
ipatool list-purchases --max-results 20get-version-metadata则用 external version id 反查某一具体版本的元数据,适合排查版本对应关系:
ipatool get-version-metadata -b com.tencent.xin --external-version-id 1677862400进阶玩法
让输出变成结构化数据
所有命令都支持--format json,把结果变成结构化输出,方便管道处理。比如把搜索结果里的应用 ID 提取出来喂给下载命令:
ipatool search "WeChat" --limit 5 --format json | jq .预期是标准 JSON,可继续用jq按字段筛选,拼进你的脚本。
脚本化与非交互运行
工具默认是交互模式,密码、验证码、密钥解锁都会提示你手动输入。放进 CI 或定时任务时加--non-interactive,此时必须显式提供--password,凭证如果落在文件后端,还要给--keychain-passphrase:
ipatool download -i 123456789 -o ./out/app.ipa \ --non-interactive --keychain-passphrase "passphrase"批量下载时把上面的命令放进循环即可;注意非交互模式没有终端可交互,所有凭据都要通过参数或环境变量传入。
避坑速查
- 首次登录慢:首次登录可能耗时几十秒,属正常现象,别中途取消。
- 双因素认证:非交互模式下需要 2FA 验证码时,命令会提示你重跑并带
--auth-code参数传入验证码;开启双因素的位置见下图。 - 文件后端的解锁口令:密钥管理器没有可用系统后端时会退回文件存储,非交互运行需传
--keychain-passphrase。 - 付费应用报许可错误:下载时补上
--purchase,让工具自动申请许可。 - 凭证安全:凭证存在系统密钥管理器(macOS Keychain、Linux 的 Secret Service 或文件后端),建议为 Apple ID 开启双因素认证,且只用自己的测试账号操作。
常用参数汇总如下,查命令时对照即可:
| 命令 | 常用参数 |
|---|---|
auth login | --email(必填)、--password、--auth-code |
auth info/auth revoke | 无 |
search | --limit、--platform |
list-versions | -b或-i |
download | -b或-i、-o、--external-version-id、--purchase |
purchase | -b或-i |
list-purchases | --max-results、--page |
get-version-metadata | -b或-i、--external-version-id |
| 全局 | --format json、--non-interactive、--verbose |
ipatool 把"找到应用、锁定版本、拿到安装包"这条链路压进了一个二进制文件,配合 JSON 输出很适合作为自动化流程的一环。提醒一句:下载到的应用包请仅用于测试、分析等合法用途,遵守 Apple 的服务条款。
【免费下载链接】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),仅供参考