首页 / 资讯中心 / 文章详情

不开 Xcode 也能拿到 App Store 的 IPA 包:ipatool 命令行下载完整指南

不开 Xcode 也能拿到 App Store 的 IPA 包:ipatool 命令行下载完整指南 ★ FEATURED ARTICLE
不开 Xcode 也能拿到 App Store 的 IPA 包ipatool 命令行下载完整指南【免费下载链接】ipatoolCommand-line tool that allows you to search for iOS, iPadOS, tvOS, watchOS, visionOS, and macOS apps on the App Store, and download .ipa or macOS .pkg app packages.项目地址: https://gitcode.com/GitHub_Trending/ip/ipatoolipatool 是一个用 Go 编写的命令行工具能在终端里直接检索并下载 App StoreiOS、iPadOS、tvOS、visionOS、macOS中的应用产出.ipa或 macOS.pkg安装包。它面向做抓包分析、安装包备份与 CI 集成、不想在 iTunes 或 Xcode 里点选的操作场景。读完本文可以只凭终端完成「登录 → 搜索 → 下载 → 历史版本归档」这条链路并把其中每一步接进脚本与定时任务。拿到第一个 IPA 的最短路径从安装到下载安装有三条路线按环境任选其一macOSbrew install ipatool全平台从项目发布页下载对应系统的预编译二进制放入 PATH有 Go 环境的机器克隆源码后本地构建git clone https://gitcode.com/GitHub_Trending/ip/ipatool cd ipatool go build -o ipatool装好后用ipatool --help确认能看到 auth、search、download、purchase、list-versions 等子命令即可。接下来是一条连贯的最短命令序列中间没有多余的准备步骤ipatool auth login -e youexample.com ipatool search 微信 -l 5 ipatool download -i 414478124 -o ~/Downloads/wechat.ipa逐条说明问题所有涉及 App Store 数据的命令都需要 Apple ID 身份得先认证。命令ipatool auth login -e youexample.com。预期结果终端依次提示输入密码不回显首次登录可能要花几分钟耐心等完即可。问题不知道目标应用的标识得先搜。命令ipatool search 微信 -l 5。预期结果返回至多 5 条候选每条带数字 App ID、名称、当前版本、Bundle Identifier。问题把包落到本地。命令ipatool download -i 414478124 -o ~/Downloads/wechat.ipa。预期结果交互模式下有下载进度条结束时打印落盘路径确认文件存在即链路打通。Apple ID 登录时 2FA 怎么过账号开启两步验证时密码之后终端会停在enter 2FA code:提示上。在任意已信任的 iPhone / iPad 上打开「设置 → Apple ID → 密码与安全性 → 获取验证码」把 6 位数字填进终端无法交互的环境CI、远程会话不能依赖提示直接用参数把验证码带入ipatool auth login -e youexample.com --auth-code 123456登录成功后凭据写入系统钥匙串macOS Keychain、Linux Secret Service或降级为本地文件服务名是ipatool-auth.service后续命令自动复用ipatool auth info查看当前账号ipatool auth revoke删除凭据。凭据的存取抽象集中在 pkg/keychain/ 目录若需要排查登录与 SAP 签名协议入口文件是 appstore_login.go。凭据存的是加密记录而非明文但在共享机器上仍建议用专用或临时 Apple ID避免主账号记录留在公共环境里。搜索结果里的两个标识App ID 与 Bundle Identifier 怎么用每条搜索结果给出两个指向同一应用的标识数字 App ID配合-i与字符串 Bundle Identifier配合-b。download、purchase、list-versions、get-version-metadata都接受二者任选其一同时给出时优先按 Bundle Identifier 解析解析不命中再回退到数字 ID——这对已下架应用很关键后文「常见坑」里有具体说明。搜索本身的筛选参数只有两个-l, --limit返回条数默认 5visionOS 平台最多 12 条--platformiphoneiOS、ipadiPadOS、appletvtvOS、visionos、macos不指定时覆盖 iPhone 与 iPad 两个实体。ios、tvos、mac这类别名也会被接受同名应用同时有 iPhone 版和 Apple TV 版时加--platform appletv把范围收窄ipatool search 微信 -l 10 --platform appletv版本与授权管理历史版本下载和授权补齐想拿历史版本分两步先枚举可下载的版本标识再在下载时指定ipatool list-versions -i 414478124 ipatool download -i 414478124 --external-version-id external version id -o old.ipalist-versions会输出一组 external version identifier字段名externalVersionIdentifiers--external-version-id不传时默认取最新版。想核对某个版本的发布时间和更新说明用get-version-metadata此命令要求必须给出--external-version-idipatool get-version-metadata -i 414478124 --external-version-id external version id输出包含 displayVersion对外版本号与 releaseDate发布时间。授权是另一件独立的事App Store 要求任何应用包括免费应用在下载前都有该账号名下的有效授权记录。账号下缺授权时download会直接报 license 错误两种补法ipatool download -i 414478124 -o wechat.ipa --purchase--purchase会在遇到授权错误时自动补一次授权并重试也可以单独先把授权拿到手再重新下载ipatool purchase -i 414478124已持有授权的应用再执行 purchase 会被识别为「已拥有」不算错误。需要提醒的是下载得到的.ipa是加密包必须走对应的授权安装渠道企业签名、开发者工具等才能装机文件落盘不等于任意设备可直接安装。交给脚本JSON 输出、非交互模式与最小监控示例 ⚙️自动化依赖两个全局开关--format json几乎所有命令的输出都切换为结构化 JSON默认是面向终端的 text 排版可以直接喂给jq。--non-interactive工具不再等待任何输入放进 CI 或 crontab 是安全的。注意两个连带约束该模式下登录必须显式提供-e与-p没有提示可答若凭据落在文件型钥匙串还必须通过--keychain-passphrase提供解锁口令否则直接报错。交互式模式下这两个信息都可以靠终端提示补全这是两种模式唯一的实质差别。批量下载的例子从搜索结果抽出 App ID 列表逐个下载归档ipatool search 微信 --format json --non-interactive | jq -r .apps[].id | \ while read -r id; do ipatool download -i $id -o archive/$id.ipa \ --non-interactive --keychain-passphrase $IPATOOL_PASS done最小可用的定时监控脚本每天检查一次搜索结果里的版本号变化时归档一份安装包ver$(ipatool search 微信 -l 1 --format json --non-interactive \ --keychain-passphrase $IPATOOL_PASS | jq -r .apps[0].version) [ $ver $(cat last-version.txt) ] exit 0 ipatool download -i 414478124 -o wechat-$ver.ipa \ --non-interactive --keychain-passphrase $IPATOOL_PASS echo $ver last-version.txt交给 crontab 即可0 3 * * * /path/to/watch-wechat.sh各子命令的常用参数速查如下完整 flag 定义见 cmd/ 目录全局参数--verbose可打开详细日志用于排障命令用途常用参数auth loginApple ID 登录-e邮箱、-p密码、--auth-code验证码auth info/auth revoke查看账号 / 清除凭据—search 关键词搜索应用-l条数默认 5、--platformpurchase获取授权-i/-b、--platformlist-purchases列出已购应用-l每页条数默认 10上限 100、-p页码默认 1list-versions列出可下载版本-i/-b、--platformget-version-metadata查询版本详情--external-version-id必填、-i/-bdownload下载安装包-i/-b、-o、--external-version-id、--purchase顺带一提ipatool 还提供ipatool mcp子命令把搜索、下载等能力以 stdio 方式暴露给 MCP 客户端该模式固定运行在非交互态且不提供认证工具需先在终端完成auth login。常见坑现象 - 原因 - 处理现象原因处理登录停在enter 2FA code:非交互模式下则直接报 2FA 错误账号开启两步验证新设备登录必须验证在已信任设备取 6 位验证码填入终端脚本中改用--auth-code直接带入下载中途报 license / 授权错误该应用在当前账号下没有有效授权记录免费应用同样需要追加--purchase自动补授权并重试或先单独执行ipatool purchase输出接jq解析失败、进度条与提示符混在管道里默认是交互式 text 模式stdout 不保证是纯结构统一加--format json --non-interactive非交互模式报钥匙串口令错误文件型钥匙串需要解锁口令非交互模式无法弹提示通过--keychain-passphrase传入口令用-b查不到应用多为已下架应用按 Bundle Identifier 的查询不返回已下架应用但数字 ID 仍可用换用-i指定数字 App ID 下载收尾一句话总结ipatool 把「从 App Store 拿到安装包」这件事压缩成了登录、搜索、下载、版本管理四条命令行能力再加上 JSON 与非交互模式整条链路随时可以被脚本接管。留一个开放问题给想继续深入的人已下架应用依然能用 App ID 下载但搜索接口已经查不到它们——如果要把这套流程用于长期归档如何维护一份「搜索之外、靠人工登记 ID 保底」的应用清单值得在设计监控脚本前先想清楚。【免费下载链接】ipatoolCommand-line tool that allows you to search for iOS, iPadOS, tvOS, watchOS, 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),仅供参考
阅读完成 · 觉得有帮助?
咨询建站