↓ Перейти к основному содержимому

Качаем IPA из App Store

·578 слов·3 минут·
logo

⚠️ Установку и ковыряние во всём этом делаете с головой и прямыми руками, сей гайд для тех, кто и за безопасность своего аккаунта умеет думать и вообще на свой страх и риск, как говорится.

ipatool от majd — консольная утилита для поиска, просмотра покупок и скачивания зашифрованных .ipa пакетов из App Store. Ранее для обхода ошибки входа HTTP 403: empty or non-plist body приходилось ставить форк ipatool-sapfix, добавлявший обязательную SAP-подпись X-Apple-ActionSignature через CommerceKit. Начиная с релиза v2.4.0 и свежего v2.5.0 автор добавил нативную поддержку подписанных SAP-запросов прямо в апстрим и закрыл ошибку FailureType 5002. Форки больше не нужны — ставим оригинал. Утилита работает как на Apple Silicon, так и на Intel Mac.

Как установить?
#

Самый удобный способ для macOS — через Homebrew:

brew install ipatool

Либо вручную скачать бинарник со страницы релизов. Для Apple Silicon выбирайте arm64, для Intel Mac — amd64:

VER=2.5.0
curl -LO https://github.com/majd/ipatool/releases/download/v${VER}/ipatool-${VER}-macos-arm64.tar.gz
curl -LO https://github.com/majd/ipatool/releases/download/v${VER}/ipatool-${VER}-macos-arm64.tar.gz.sha256sum
shasum -a 256 -c ipatool-${VER}-macos-arm64.tar.gz.sha256sum
tar -xzf ipatool-${VER}-macos-arm64.tar.gz
sudo install -m 0755 bin/ipatool-${VER}-macos-arm64 /usr/local/bin/ipatool
ipatool --version

Если macOS заблокирует запуск бинарника, снимите атрибут карантина:

xattr -d com.apple.quarantine /usr/local/bin/ipatool

Авторизация
#

Сначала входим в свой Apple ID:

ipatool auth login --email "beaver@ilovebeaver.com"

Вводим пароль и код двухфакторной аутентификации (2FA). Успешный вход подтверждается строкой:

email=beaver@ilovebeaver.com name="Beaver ClanLeaderovich" success=true

Просмотр купленных приложений (list-purchases)
#

В актуальных версиях появилась аутентифицированная команда list-purchases, работающая через подписанные SAP-запросы к истории покупок App Store.

Она возвращает список всех приложений, привязанных к вашему Apple ID, отсортированных по дате покупки (сначала самые свежие).

# Вывести первые 10 купленных приложений (по умолчанию)
ipatool list-purchases

# Постраничная навигация (пагинация от 1 до 100 на страницу)
ipatool list-purchases --page 1 --max-results 50

Доступные флаги:

  • -l, --max-results <int> — количество приложений на страницу (по умолчанию 10, максимум 100).
  • -p, --page <int> — номер страницы (по умолчанию 1).
  • --format json — вывод в формате JSON (удобно для автоматизации и пайплайнов через jq).

Пример вывода списка покупок в JSON:

ipatool list-purchases --page 1 --max-results 20 --format json

Поиск и скачивание приложений
#

  • Поиск в App Store:
ipatool search "WB Книги"
2:56PM INF apps=[{"bundleID":"ru.wildberries.wbbooks","id":6739949061,"name":"WB Книги","price":0,"version":"2.12.0"},{"bundleID":"ru.yandex.mobile.music","id":520797969,"name":"Yandex Music: музыка, книги","price":0,"version":"8.05"}] count=2
  • Привязка бесплатной лицензии к аккаунту (если приложение ещё не «купили»):
ipatool purchase --bundle-identifier ru.wildberries.wbbooks
  • Скачивание .ipa:
ipatool download --bundle-identifier ru.wildberries.wbbooks --output ./ru.wildberries.wbbooks.ipa

Важно: скачанные .ipa подписаны персональным сертификатом вашей учетной записи, поэтому установить их без переподписи можно только на устройства с этим же Apple ID.


Как получить список Bundle ID?
#

Способ 1: Прямо из истории покупок Apple ID (без телефона)
#

Благодаря list-purchases и jq можно выгрузить bundleID ваших приложений прямо в файл:

ipatool list-purchases --page 1 --max-results 100 --format json | jq -r '.[].bundleID' > ~/Downloads/my_purchased_apps.txt

Способ 2: С подключенного iPhone через USB
#

Если нужно вытащить идентификаторы только тех приложений, которые физически стоят на iPhone:

brew install libimobiledevice ideviceinstaller
idevicepair pair               # подтвердить «Доверять этому компьютеру» на экране
ideviceinstaller list --user > /tmp/iphone_apps.csv

# Очищаем CSV до списка Bundle ID:
tail -n +2 /tmp/iphone_apps.csv | cut -d',' -f1 | sed 's/^"//; s/\"$//' > ~/Downloads/iphone_bundle_ids.txt

Батч-скачивание всех приложений по списку
#

Берём полученный список bundleID и прогоняем через связку purchase + download:

#!/usr/bin/env bash
set -euo pipefail

LIST=~/Downloads/my_purchased_apps.txt
OUT=~/Downloads/ipas
mkdir -p "$OUT"

while read -r bid; do
  [ -z "$bid" ] && continue
  echo "==> Обработка: $bid"
  ipatool purchase --bundle-identifier "$bid" || { echo "purchase failed: $bid"; }
  ipatool download --bundle-identifier "$bid" --output "$OUT/$bid.ipa" || { echo "download failed: $bid"; }
done < "$LIST"

Установка IPA на устройство
#

Скачанный файл .ipa можно установить обратно на телефон через Apple Configurator обычным перетаскиванием (drag-and-drop).

logo

Related