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»), программа сама повторяет загрузку, а не показывает непонятный текст.
Как обновиться
- Скачайте новую версию и скопируйте её поверх старой папки — скачанные приложения, настройки и аккаунты сохранятся.
- При запуске появится «Доступно обновление ipatool» — нажмите «Обновить».
- Войдите в Apple ID как обычно.
Что дальше
Уже делаю версию 4.6: новая главная страница с телефоном и быстрыми действиями, мастер «Переезд на новый iPhone» с отчётом, что установилось, а что нет, обновление всех приложений на телефоне одной кнопкой и экспорт списка приложений.
Программа бесплатная, работает только с вашими собственными покупками.
Если что-то не работает — пишите в комментариях, отвечу.