Skip to content
chowsittaPublic

About

Windows: архив своих покупок App Store (включая удалённые из магазина) и установка IPA на iPhone — замена iMazing. ipatool + pymobiledevice3.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipakeep

Личный архив IPA под Windows: скачать свои покупки из App Store (в том числе удалённые из магазина и старые версии), хранить локально и ставить на свой iPhone по кабелю — замена функции «Приложения» в iMazing.

Как это устроено

 App Store ──ipatool──► downloads/ ──► library/<bundle>/<версия>_<extVer>.ipa + index.json
                                                   │
                         проверка совместимости ◄──┤ (iOS, 32/64 бит, iPhone/iPad, место, sinf)
                                                   ▼
 iPhone ◄── installation_proxy ◄── AFC /PublicStaging ◄── pymobiledevice3 ◄── Apple Mobile Device Service
Модуль Что делает
store.py обёртка над ipatool: вход/2FA, покупки, версии, скачивание; ошибки → понятный текст
catalog.py публичный iTunes Search/Lookup API; «нет в lookup» = удалено из магазина
ipa.py разбор IPA без распаковки: Info.plist, Mach-O архитектуры, sinf, iTunesMetadata (Apple ID)
compat.py проверки до установки — ошибки/предупреждения с причиной текстом
library.py архив: дедуп по sha256, атомарная запись индекса
device.py устройства, установленные приложения, загрузка с прогрессом и установка
service.py сценарии (покупки + сверка, скачивание в архив, план установки) — общие для CLI и окна
jobs.py очередь долгих задач: строго по одной, прогресс, отмена ожидающих
gui/ окно: pywebview (WebView2) + HTML; api.py — мост к Python с проверкой входных данных
cli.py команды

Почему App Store-IPA вообще запускается на телефоне: файл зашифрован FairPlay и несёт лицензию (SC_Info/*.sinf) на конкретный Apple ID. Приложение откроется, только если на iPhone выполнен вход в App Store под этим же Apple ID. Раздавать такие IPA другим бессмысленно — у них не запустится.

Установка

Нужно: Windows 10/11, «Устройства Apple» (Apple Devices) или iTunes из Microsoft Store — ради службы Apple Mobile Device Service. Python 3.12 (3.13 не подходит: зависимость lzfse pymobiledevice3 не собирается без MSVC).

uv venv --python 3.12 .venv
uv pip install --python .venv\Scripts\python.exe -e ".[dev]"

Движки App Store

Вход в Apple ID и скачивание делает внешний «движок». Поддерживаются два — положите один или оба в tools\ (в репозиторий не входят):

Движок Файл История покупок Состояние на 04.10.2026
ipatool (Go) tools\ipatool.exe есть — видно удалённое из App Store у многих не проходит вход (#598, #607)
ipatool-cpp (C++) tools\ipatool-cpp.exe нет — удалённое скачивается по ссылке App Store или ID вход работает

По умолчанию — ipatool-cpp; сменить: в окне («Движок · сменить») или ipakeep engine ipatool. У каждого движка своя сессия в %LOCALAPPDATA%\ipakeep\<движок> — отдельно друг от друга и от других инструментов на ipatool (их ~\.ipatool ipakeep не читает и не трогает). После смены движка нужно войти заново.

Оригинальный ipatool лучше собрать из main (там свежие исправления входа):

git clone https://github.com/majd/ipatool && cd ipatool
CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o ipatool.exe .

ipatool-cpp — готовый windows_amd64_ipatool-cpp.zip из релизов, файл переименовать в ipatool-cpp.exe.

Не повторяйте неудачный вход много раз подряд — есть сообщения, что Apple после этого временно блокирует Apple ID.

Готовый exe

dist\ipakeep.exe — один файл (~105 МБ): окно + оба движка внутри, Python не нужен. На компьютере должны быть «Устройства Apple» или iTunes (служба Apple Mobile Device) и WebView2 (в Windows 10/11 есть). Данные и журнал — в %LOCALAPPDATA%\ipakeep, как и у версии из исходников.

Сборка и автопроверка (ipatool внутри отвечает, хранилище ключей Windows, служба Apple, WebView2):

uv pip install --python .venv\Scripts\python.exe pyinstaller pillow
.venv\Scripts\python dev�uild_exe.py

Диагностика готового exe без окна: ipakeep.exe --self-check report.json.

Окно

.venv\Scripts\ipakeep-gui

Вкладки: Покупки (что удалено из App Store + «Скачать все»; старые версии), Архив (проверка перед установкой и «Поставить»), Магазин (поиск), iPhone (устройство и установленные приложения). Скачивания и установки идут по одной в панели задач. Журнал: %LOCALAPPDATA%\ipakeep\logs\ipakeep.log.

Посмотреть интерфейс без iPhone и Apple ID (поддельные данные): python dev\preview.py → http://127.0.0.1:8765/ (?scenario=fresh — не вошли, iPhone нет).

Командная строка

.venv\Scripts\ipakeep doctor                 # окружение: ipatool, служба Apple, вход, устройства
.venv\Scripts\ipakeep login -e me@icloud.com # пароль и код 2FA спросит сам

.venv\Scripts\ipakeep purchases --removed    # покупки, которых уже нет в App Store
.venv\Scripts\ipakeep rescue                 # скачать в архив все удалённые покупки разом
.venv\Scripts\ipakeep download com.some.app --app-id 123456789   # удалённое — по trackId
.venv\Scripts\ipakeep versions com.some.app  # старые версии
.venv\Scripts\ipakeep download com.some.app --version 812345678

.venv\Scripts\ipakeep lib                    # архив
.venv\Scripts\ipakeep devices
.venv\Scripts\ipakeep check com.some.app     # встанет ли — без установки
.venv\Scripts\ipakeep install com.some.app   # или по id из `lib`

Переменные окружения: IPAKEEP_HOME (архив, по умолчанию %LOCALAPPDATA%\ipakeep), IPAKEEP_COUNTRY (страна магазина = страна Apple ID, по умолчанию ru), IPAKEEP_IPATOOL.

Безопасность и риски

  • Токен Apple ID хранит ipatool в зашифрованном файле (%LOCALAPPDATA%\ipakeep\ipatool). Ключ к нему ipakeep генерирует сам и кладёт в Диспетчер учётных данных Windows.
  • Пароль Apple ID передаётся ipatool аргументом при входе — на долю секунды виден в списке процессов этого компьютера. Для личной машины приемлемо; на общей — не входить.
  • Частые входы из нестандартного клиента Apple может счесть подозрительными (блок/сброс пароля). Входить один раз, дальше работает сохранённая сессия.
  • Скачивать можно только то, что есть в истории покупок аккаунта (бесплатные тоже «покупка»).

Тесты

.venv\Scripts\python -m pytest -q --cov=ipakeep

Что дальше

  • Живая проверка входа, скачивания и установки на реальном Apple ID и iPhone.
  • Подпись exe (без неё SmartScreen предупреждает при первом запуске).
  • Очередь установки на несколько устройств.
  • Резерв на случай, если ipatool отстанет от Apple: Rust-ядро seifreed/ipakeep или libipatool-go.

Назначение и ограничения

ipakeep — для своих покупок: скачивает только то, что есть в истории покупок вашего Apple ID, и ставит на ваши устройства. Защиту FairPlay не снимает и не обходит — приложение запускается только под тем же Apple ID. Проект не связан с Apple; App Store, iPhone и iOS — товарные знаки Apple Inc.

Лицензия и сторонние компоненты

Код — GPL-3.0 (готовый exe включает pymobiledevice3 под GPL-3.0).

  • ipatool — MIT, вход в App Store и скачивание (вкладывается в exe)
  • ipatool-cpp — MIT, второй движок (вкладывается в exe)
  • pymobiledevice3 — GPL-3.0, связь с iPhone
  • pywebview — BSD-3-Clause, окно

About

Windows: архив своих покупок App Store (включая удалённые из магазина) и установка IPA на iPhone — замена iMazing. ipatool + pymobiledevice3.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages