Apple сломала вход во всех программах для скачивания IPA. Как я починил свою за три дня

6 ноября у всех, кто скачивает свои покупки из App Store через сторонние программы, перестал работать вход в Apple ID. Рассказываю, что произошло, как я вернул вход в IPA PILOTDREDD и что по пути пришлось переделать.

Раздел "Покупки"
Раздел "Покупки"

Что случилось

Если коротко про саму программу: IPA PILOTDREDD — бесплатная программа для Windows, которая показывает все приложения, когда-либо купленные или скачанные на ваш Apple ID, и ставит их на iPhone. Особенно полезна при переезде на новый телефон и для приложений, которых уже нет в App Store. Подробно рассказывал в прошлой статье.

Утром 6 ноября пользователи начали присылать одну и ту же ошибку: «Login error: something went wrong (status=301)». Потом появились 204, 403, 404. Пароль правильный, программа та же, что вчера, — а войти нельзя.

Оказалось, проблема не только у меня. Apple отключила старый способ входа в App Store, которым пользовались все такие инструменты. Новый требует, чтобы компьютер подтвердил себя как «устройство Apple». На GitHub в обсуждениях за день набрались десятки одинаковых жалоб.

Первое правило: ничего не сломать

Пока не было исправления, важно было не сделать хуже:

  • Программа стала честно писать: «Apple изменила способ входа — это не ошибка пароля и не ошибка программы».
  • Уже сохранённые аккаунты продолжали работать — главное было не нажимать «Выйти».
  • Частые неудачные попытки входа Apple может посчитать подозрительными, поэтому я просил не повторять вход раз за разом.

Исправление пришло — но не ко всем

9 ноября автор ipatool-cpp (это «движок», через который программа общается с App Store) выпустил версию с новым входом. Проблема в том, что раньше моя программа получала его не напрямую, а в составе чужой сборки, и ждать её обновления можно было ещё долго.

Поэтому в версии 4.5.1 программа берёт ipatool напрямую из официальных релизов автора: проверяет контрольную сумму, делает пробный запуск, сохраняет старую версию на случай отката — и только потом заменяет. Теперь следующие исправления будут доходить до пользователей в тот же день.

Проверил на своих аккаунтах: новый вход с двухфакторной авторизацией, переключение аккаунтов, загрузка списка покупок (226 приложений за минуту) и скачивание — всё работает.

Проверка входа
Проверка входа

Попутно: «вирус» в программе

Пока чинил вход, друг прислал скриншот: Защитник Windows заблокировал программу — «файл содержит вирус или потенциально нежелательную программу».

Вируса там, конечно, нет: код открыт. Но причина ложного срабатывания оказалась понятной. Маленький файл запуска стартовал скрытое окно PowerShell с отключённой проверкой скриптов — ровно так часто делают вредоносные программы. Плюс файл пересобирался к каждой версии, и у него не успевала накопиться «репутация» у антивирусов.

В 4.5.1 файл запуска переделан: PowerShell работает внутри него, без скрытых окон, а сам файл больше не меняется от версии к версии.

Прозрачность: сборка на GitHub

Раз уж речь зашла о доверии — теперь каждая версия собирается не на моём компьютере, а на серверах GitHub прямо из открытого кода. Перед сборкой автоматически прогоняются тесты, а у готового архива есть подпись происхождения: любой может проверить, что файл собран из этого репозитория и не подменён.

Ещё одна мелочь: если GitHub временно не отвечает (у друга при первой установке была ошибка «502»), программа сама повторяет загрузку, а не показывает непонятный текст.

Раздел "Устройства"
Раздел "Устройства"

Как обновиться

  1. Скачайте новую версию и скопируйте её поверх старой папки — скачанные приложения, настройки и аккаунты сохранятся.
  2. При запуске появится «Доступно обновление ipatool» — нажмите «Обновить».
  3. Войдите в Apple ID как обычно.

Что дальше

Уже делаю версию 4.6: новая главная страница с телефоном и быстрыми действиями, мастер «Переезд на новый iPhone» с отчётом, что установилось, а что нет, обновление всех приложений на телефоне одной кнопкой и экспорт списка приложений.

Программа бесплатная, работает только с вашими собственными покупками.

Если что-то не работает — пишите в комментариях, отвечу.