
⚠️ Установку и ковыряние во всём этом делаете с головой и прямыми руками, сей гайд для тех, кто и за безопасность своего аккаунта умеет думать и вообще на свой страх и риск, как говорится.
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).



