
不開 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中的應用產(chǎn)出.ipa或 macOS.pkg安裝包。它面向做抓包分析、安裝包備份與 CI 集成、不想在 iTunes 或 Xcode 里點選的操作場景。讀完本文可以只憑終端完成「登錄 → 搜索 → 下載 → 歷史版本歸檔」這條鏈路并把其中每一步接進腳本與定時任務。拿到第一個 IPA 的最短路徑從安裝到下載安裝有三條路線按環(huán)境任選其一macOSbrew install ipatool全平臺從項目發(fā)布頁下載對應系統(tǒng)的預編譯二進制放入 PATH有 Go 環(huán)境的機器克隆源碼后本地構(gòu)建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 數(shù)據(jù)的命令都需要 Apple ID 身份得先認證。命令ipatool auth login -e youexample.com。預期結(jié)果終端依次提示輸入密碼不回顯首次登錄可能要花幾分鐘耐心等完即可。問題不知道目標應用的標識得先搜。命令ipatool search 微信 -l 5。預期結(jié)果返回至多 5 條候選每條帶數(shù)字 App ID、名稱、當前版本、Bundle Identifier。問題把包落到本地。命令ipatool download -i 414478124 -o ~/Downloads/wechat.ipa。預期結(jié)果交互模式下有下載進度條結(jié)束時打印落盤路徑確認文件存在即鏈路打通。Apple ID 登錄時 2FA 怎么過賬號開啟兩步驗證時密碼之后終端會停在enter 2FA code:提示上。在任意已信任的 iPhone / iPad 上打開「設(shè)置 → Apple ID → 密碼與安全性 → 獲取驗證碼」把 6 位數(shù)字填進終端無法交互的環(huán)境CI、遠程會話不能依賴提示直接用參數(shù)把驗證碼帶入ipatool auth login -e youexample.com --auth-code 123456登錄成功后憑據(jù)寫入系統(tǒng)鑰匙串macOS Keychain、Linux Secret Service或降級為本地文件服務名是ipatool-auth.service后續(xù)命令自動復用ipatool auth info查看當前賬號ipatool auth revoke刪除憑據(jù)。憑據(jù)的存取抽象集中在 pkg/keychain/ 目錄若需要排查登錄與 SAP 簽名協(xié)議入口文件是 appstore_login.go。憑據(jù)存的是加密記錄而非明文但在共享機器上仍建議用專用或臨時 Apple ID避免主賬號記錄留在公共環(huán)境里。搜索結(jié)果里的兩個標識App ID 與 Bundle Identifier 怎么用每條搜索結(jié)果給出兩個指向同一應用的標識數(shù)字 App ID配合-i與字符串 Bundle Identifier配合-b。download、purchase、list-versions、get-version-metadata都接受二者任選其一同時給出時優(yōu)先按 Bundle Identifier 解析解析不命中再回退到數(shù)字 ID——這對已下架應用很關(guān)鍵后文「常見坑」里有具體說明。搜索本身的篩選參數(shù)只有兩個-l, --limit返回條數(shù)默認 5visionOS 平臺最多 12 條--platformiphoneiOS、ipadiPadOS、appletvtvOS、visionos、macos不指定時覆蓋 iPhone 與 iPad 兩個實體。ios、tvos、mac這類別名也會被接受同名應用同時有 iPhone 版和 Apple TV 版時加--platform appletv把范圍收窄ipatool search 微信 -l 10 --platform appletv版本與授權(quán)管理歷史版本下載和授權(quán)補齊想拿歷史版本分兩步先枚舉可下載的版本標識再在下載時指定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不傳時默認取最新版。想核對某個版本的發(fā)布時間和更新說明用get-version-metadata此命令要求必須給出--external-version-idipatool get-version-metadata -i 414478124 --external-version-id external version id輸出包含 displayVersion對外版本號與 releaseDate發(fā)布時間。授權(quán)是另一件獨立的事App Store 要求任何應用包括免費應用在下載前都有該賬號名下的有效授權(quán)記錄。賬號下缺授權(quán)時download會直接報 license 錯誤兩種補法ipatool download -i 414478124 -o wechat.ipa --purchase--purchase會在遇到授權(quán)錯誤時自動補一次授權(quán)并重試也可以單獨先把授權(quán)拿到手再重新下載ipatool purchase -i 414478124已持有授權(quán)的應用再執(zhí)行 purchase 會被識別為「已擁有」不算錯誤。需要提醒的是下載得到的.ipa是加密包必須走對應的授權(quán)安裝渠道企業(yè)簽名、開發(fā)者工具等才能裝機文件落盤不等于任意設(shè)備可直接安裝。交給腳本JSON 輸出、非交互模式與最小監(jiān)控示例 ??自動化依賴兩個全局開關(guān)--format json幾乎所有命令的輸出都切換為結(jié)構(gòu)化 JSON默認是面向終端的 text 排版可以直接喂給jq。--non-interactive工具不再等待任何輸入放進 CI 或 crontab 是安全的。注意兩個連帶約束該模式下登錄必須顯式提供-e與-p沒有提示可答若憑據(jù)落在文件型鑰匙串還必須通過--keychain-passphrase提供解鎖口令否則直接報錯。交互式模式下這兩個信息都可以靠終端提示補全這是兩種模式唯一的實質(zhì)差別。批量下載的例子從搜索結(jié)果抽出 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最小可用的定時監(jiān)控腳本每天檢查一次搜索結(jié)果里的版本號變化時歸檔一份安裝包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各子命令的常用參數(shù)速查如下完整 flag 定義見 cmd/ 目錄全局參數(shù)--verbose可打開詳細日志用于排障命令用途常用參數(shù)auth loginApple ID 登錄-e郵箱、-p密碼、--auth-code驗證碼auth info/auth revoke查看賬號 / 清除憑據(jù)—search 關(guān)鍵詞搜索應用-l條數(shù)默認 5、--platformpurchase獲取授權(quán)-i/-b、--platformlist-purchases列出已購應用-l每頁條數(shù)默認 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 客戶端該模式固定運行在非交互態(tài)且不提供認證工具需先在終端完成auth login。常見坑現(xiàn)象 - 原因 - 處理現(xiàn)象原因處理登錄停在enter 2FA code:非交互模式下則直接報 2FA 錯誤賬號開啟兩步驗證新設(shè)備登錄必須驗證在已信任設(shè)備取 6 位驗證碼填入終端腳本中改用--auth-code直接帶入下載中途報 license / 授權(quán)錯誤該應用在當前賬號下沒有有效授權(quán)記錄免費應用同樣需要追加--purchase自動補授權(quán)并重試或先單獨執(zhí)行ipatool purchase輸出接jq解析失敗、進度條與提示符混在管道里默認是交互式 text 模式stdout 不保證是純結(jié)構(gòu)統(tǒng)一加--format json --non-interactive非交互模式報鑰匙串口令錯誤文件型鑰匙串需要解鎖口令非交互模式無法彈提示通過--keychain-passphrase傳入口令用-b查不到應用多為已下架應用按 Bundle Identifier 的查詢不返回已下架應用但數(shù)字 ID 仍可用換用-i指定數(shù)字 App ID 下載收尾一句話總結(jié)ipatool 把「從 App Store 拿到安裝包」這件事壓縮成了登錄、搜索、下載、版本管理四條命令行能力再加上 JSON 與非交互模式整條鏈路隨時可以被腳本接管。留一個開放問題給想繼續(xù)深入的人已下架應用依然能用 App ID 下載但搜索接口已經(jīng)查不到它們——如果要把這套流程用于長期歸檔如何維護一份「搜索之外、靠人工登記 ID 保底」的應用清單值得在設(shè)計監(jiān)控腳本前先想清楚。【免費下載鏈接】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創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考