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 是一个纯命令行的 App Store 客户端:登录你的 Apple ID 后,可以搜索 iOS、iPadOS、tvOS、visionOS、macOS 的应用,并把.ipa或 macOS.pkg安装包直接存到本地磁盘。它适合不想(或不能)守在 App Store 图形界面里点来点去的人,用终端几条命令就能完成搜索、购权、下载的全流程,还能顺手做批量下载和版本留档。
👥 对号入座:看看你是不是那个目标用户
- 如果你是测试工程师或逆向研究者,经常需要下载 IPA 或 macOS pkg 包来分析资源、对比构建,它就能帮你把「逛商店、点下载、等转圈」压缩成一行命令。
- 如果你是运维或脚本爱好者,想在 CI、批量任务里自动拉取应用包,它就能帮你用
--non-interactive模式配合密钥链口令,在无人值守的环境里跑通下载。 - 如果你需要留存应用历史版本,它就能帮你先列出该应用的全部版本标识符,再逐个下载指定版本,方便做行为差异对比。
📋 备货清单:开跑前要备齐什么
| 系统 | 版本要求 | 备注 |
|---|---|---|
| Windows | 10 及以上 | 直接运行二进制即可 |
| Linux | 主流发行版均可 | 凭据存 Secret Service,不可用时退回文件后端 |
| macOS | 任意较新版本 | 凭据存入系统钥匙串,可用 Homebrew 安装 |
三个前置条件:一套已开通 App Store 的 Apple ID;终端里能用git、go(源码构建时才需要);开启两步验证的账号在登录时要能即时收到验证码。
🧰 装好武器:两种安装方式
方式一:macOS 上用 Homebrew 一行搞定:
brew install ipatool代码说明:通过 Homebrew 从软件包源安装 ipatool,装完直接可用。
方式二:其他系统从源码构建(需要 Go 工具链):
git clone https://gitcode.com/GitHub_Trending/ip/ipatool cd ipatool go build -o ipatool sudo mv ipatool /usr/local/bin代码说明:克隆仓库后用
go build编译出可执行文件,再放进 PATH 目录,之后任意路径可调用。
🚦 首跑闭环:三条命令跑通登录到下载
第一次使用按这个顺序走,每步只敲一条最短命令:
- 登录认证:
ipatool auth login --email 你的AppleID邮箱代码说明:交互式登录,输入密码;若账号开两步验证,会提示输入 2FA 验证码。登录成功后凭据加密存入系统钥匙串。
- 搜索目标应用,记下输出里的应用 ID(数字):
ipatool search "微信" -l 10代码说明:按关键词搜索 App Store,
-l 10把结果数量上限设为 10,从返回列表里找到目标应用的 ID。
- 按 ID 下载应用包:
ipatool download -i 1048203654 -o wechat.ipa代码说明:按应用 ID 下载最新的
.ipa包到当前目录的 wechat.ipa,交互式会话里会显示下载进度条。
三条命令走完,本地就多了一个可直接分析的 IPA 文件,闭环完成。
🗺️ 功能路线图:六个命令逐个拆
搜索:search
基础用法:
ipatool search "微信"代码说明:按关键词搜索,默认返回 5 条结果,输出包含应用 ID、名称等信息。
进阶参数:
ipatool search "微信" --platform ipad -l 12代码说明:
--platform限定在 iPadOS(可选 iphone / ipad / appletv / visionos / macos)范围内搜索,-l 12放宽结果上限。用途:在跨端应用里挑出你要的那个平台版本。
下载:download
基础用法:
ipatool download -i 1048203654 -o wechat.ipa代码说明:指定应用 ID 和落地路径,下载最新版安装包;也可以只用
-b传 bundle identifier 代替-i传 ID。
进阶参数:
ipatool download -b com.tencent.xin -o wechat.ipa --purchase ipatool download -i 1048203654 --external-version-id v123 --platform iphone代码说明:第一条用
--purchase让下载前自动补购下载许可;第二条用--external-version-id锁定某个历史版本而不是最新版。用途:自动补齐购权、精准下载老版本。
购权:purchase
ipatool purchase -b com.tencent.xin --platform iphone代码说明:为指定应用获取 App Store 许可(license),买过的应用会提示已拥有。用途:付费或受限应用先购权,之后才能下载。
⚠️ 注意:购权会真实动用 Apple ID 绑定的支付方式,下载付费应用前确认余额和扣费对象,避免误扣。
列版本:list-versions
ipatool list-versions -i 1048203654代码说明:返回该应用当前可下载的全部版本标识符(external version identifier)。
进阶用法,配合 JSON 输出:
ipatool list-versions -i 1048203654 --format json代码说明:
--format json把输出切到 JSON 格式,方便脚本解析、存档或做版本比对。
查版本元数据:get-version-metadata
ipatool get-version-metadata -i 1048203654 --external-version-id v123代码说明:拿上一步列出的版本标识符,解析出该具体版本的元数据,确认要下载的是哪一版。
查已购:list-purchases 与账号管理
ipatool list-purchases -p 1 -l 20 ipatool auth info ipatool auth revoke代码说明:第一条列出当前账号已购应用(按购买时间倒序,
-p翻页、-l控制每页条数);auth info查看登录中的账号信息;auth revoke撤销本账号在本机保存的 App Store 凭据。
另外,全局参数--verbose可打开详细日志,排障时很有用。
🛠️ 进阶玩法:三个实战场景
批量下载一批应用
把要下的应用 ID 列进数组,循环拉包,失败的跳过继续:
#!/bin/bash mkdir -p ipas for id in 1048203654 1169846241; do ipatool download -i "$id" -o "ipas/${id}.ipa" || echo "skip $id" done ls -lh ipas代码说明:逐个下载应用包到 ipas 目录,单条失败不中断整批,最后列出成果核对。
给应用做版本留档
先把版本清单落成文件,之后每次跑一遍 diff 就知道商店更新了什么:
ipatool list-versions -i 1048203654 --format json > versions.json ipatool download -i 1048203654 --external-version-id 旧版本标识 -o old.ipa代码说明:导出版本清单存档,再用
--external-version-id下载指定历史版本做对比测试。
无人值守环境跑下载
在 CI 或服务器上没有交互终端,要显式给口令:
ipatool download -i 1048203654 -o a.ipa \ --non-interactive --keychain-passphrase 你的钥匙串口令代码说明:
--non-interactive关闭所有交互提示,--keychain-passphrase提供钥匙串口令,登录需要 2FA 时则用--auth-code传验证码。
🤔 想一想:为什么无人值守时必须传--keychain-passphrase?提示:登录密码等敏感凭据存在钥匙串里,解密它需要一把「钥匙」,交互式会话靠人工输入,脚本只能靠参数。
🚑 急救箱:高频问题排查表
| 现象 | 原因 | 解法 |
|---|---|---|
| 登录反复提示「enter 2FA code」 | 账号开两步验证但没给验证码 | 交互模式下等提示出现、收到短信立即输入;脚本模式加--auth-code传入 |
| 报密码令牌过期(password token expired) | 会话凭据自然失效 | 重新ipatool auth login刷新;多数命令会自动重试一次 |
| 下载报需要下载许可(license required) | 该应用未购权或不在已购列表 | 先ipatool purchase,或下载时加--purchase自动购权 |
| 非交互模式报需要 keychain passphrase | 钥匙串是加密存储,脚本场景没人输入口令 | 命令加--keychain-passphrase 口令 |
| 登录/下载一直卡住或报错不明 | 日志太少看不清 | 加--verbose跑一遍,看详细日志定位卡点 |
🎬 幕后速览:它是怎么干活的
ipatool 在本地模拟一个 App Store 客户端会话:cookie 存到 home 目录下的.ipatool状态目录,账号凭据加密放进系统钥匙串(macOS 钥匙串、Linux Secret Service 或文件后端)。登录拿到账号令牌后,搜索、购权、下载全部走 Apple 的 App Store 接口;令牌过期时命令会自动重登重试,下载完成的应用包直接落地到-o指定的路径。
🎬 收个尾
到这里,认证、搜索、购权、下载、版本留档这条线就全打通了,核心就是auth、search、purchase、download加两个版本查询命令。去把最近常用的一款 App 搜出来,跑一遍list-versions看看它挂了几个历史版本——你最想留档哪一版?
【免费下载链接】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),仅供参考