Доброго времени суток, дорогие читатели!
Сегодня будет небольшая запись для любителей яблочной техники. Наверняка многие из вас сталкивались с тем, что вы решили обновить приложение на своем любимом телефоне/планшете, а приложение внезапно или перестало стабильно работать, или оттуда убрали какие-то полезные функции (например во вконтакте теперь музыку не послушать, умный будильник из приложения Mi Fit для браслета убрали, экзаменационные билеты ПДД обновили, хотя может кто-то до сентября сдавать экзамен будет и ему не нужны ваши новые билеты и тп).
Так вот, как с этим быть? Скорее всего большинство из вас услышат только два ответа на этот вопрос:
- Никак, Жизньболь, Всётлен;
- Перейти на Андроид, там таких проблем нет.
Однако, есть и третий вариант (я сейчас не рассматриваю джейлбрейк и режим разработчика) - это скачать одну из предыдущих версий. При этом, всё легально и мы ничего не нарушим :)
Суть этого метода вот в чем: мы хотим скачать из AppStore приложение, AppStore в ответ присылает нам список доступных версий, мы выбираем нужную и скачиваем её. После этого устанавливаем приложение на свой родной iPhone или iPad.
Сейчас многие, наверное, удивились, ведь нам не предлагают никаких версий (кроме некоторых случаев, когда ваше устройство не поддерживает последнюю версию и вам предлагают скачать последнюю рабочую). Так вот, предлагают, просто мы об этом не знаем и наш iTunes сам решает за нас, скачивая последнюю версию.
Для работы нам понадобится: iTunes, мобильный девайс, и одна небольшая программка под названием Charles. Она платная, но её можно использовать в демо-режиме с полным функционалом, просто время от времени будет вылезать баннер со счетчиком и предложением купить программу, плюс она сама закроется через пол часа времени.
к содержанию ↑
Charles Web Debugging Proxy
Итак, скачиваем Charles, например, отсюда. С установкой ничего сложного, поэтому запускаем её и видим баннер, который вы еще не раз увидите:
После 10 секунд появится основное окно:
Теперь немного о том, что эта программа, собственно, делает. А делает она следующее: она мониторит сеть и показывает какие запросы были отправлены и какие ответы были получены (да, это прокси). Однако для правильной работы нужно правильно выставить настройки прокси, но нас сейчас это не интересует.
Теперь открываем iTunes, в поиске AppStore вводим VK, жмем Enter, находим оф приложение от ВК и скачиваем его:
Достаточно загрузить процентов 10 от приложения, после чего смело отменяйте загрузку (выберите загрузку и нажмите на клавишу Delete):
Это нам нужно, чтобы Charles получил информацию. Открываем теперь его и видит примерно такое:
Фактически, он просто мониторит обычные POST/GET запросы и обрабатывает их содержимое в удобном для нас виде (запросы от Apple передаются, например, в xml синтаксисе)
Находим строчку (у меня это https://p45-buy.itunes.apple.com), раскрываем список и видим там <unknown>.
Дело в том, что это зашифрованный запрос и по-умолчанию Charles не показывает такие запросы. Так что щелкаем правой кнопкой по строчке и выбираем Enable SSL Proxying:
Далее снова повторяем фишку с загрузкой приложения (если у вас написано "Загружено", хотя вы отменили загрузку, то обновите страницу нажатием на заголовок приложения) и её последующей отмены (если не отменить, то придется удалять приложение, а это лишние телодвижения). Затем переходим обратно в Charles, раскрываем список и переходим по пути WebObjects - MZBuy.woa - wa - buyProduct. Далее щелкаем на buyProduct и в правом окне переходим в панель Response. Прокручиваем наш ответ от AppStore до строчки <key>softwareVersionExternalIdentifiers</key>:
Ниже вы увидите список номеров версий (да, это не сами версии, а некий номер). К сожалению, узнать какому номеру какая версия соответствует мы не сможем, поэтому придется идти наугад. Нам нужна версия 2.0, потому что это последняя версия, где можно было слушать аудиозаписи. Сохраняем весь список с номерами, он нам потом пригодится.
Далее следуем по методу дихотомии (если выбранная нами версия выше, чем 2.0, то ниже по списку идти не нужно, она где-то выше и наоборот). Выбираем, например, номер 813678592. Сохраняем где-нибудь и, самое главное, теперь жмем правой кнопкой по buyProduct и выбираем пункт Breakpoints:
Далее у меня истекли 30 минут и программа выдала:
Так что мне пришлось заново проделывать все операции :)
В общем, установили мы брейкпоинт. Это означает, что перед отправкой запроса на скачку ПО программа этот запрос перехватит и не отправит, пока мы не скажем. Мы в этом запросе поменяем одну строчку (чтобы отправить запрос не для последней версии ПО, а нужной нам) и только после этого отправим. Снова скачиваем приложение и тут сразу появится окно Charles:
Меняем строчку номер 5 на <string>813678592</string> и жмем на кнопку Execute. После этого еще раз жмем на кнопку Execute и ждем когда приложение скачается. Смотрим версию скачанного нами приложения и видим:
Увы, мимо. Удаляем эту версию и пробуем другой номер. При этом стоит учитывать, что там, по всей видимости, есть какие-то промежуточные версии, которые не будут скачиваться, вместо них скачается последняя (на данный момент - это версия 2.8). И таким образом находим тот самый номер 166062632 (я его угадал с двух попыток :) ):
На этом работа с Charles окончена и можно устанавливать приложение на ваше устройство. Только не забывайте, что старые версии могут несколько странно работать, особенно, если это приложения для социалок :)
При этом, если вам надоест слушать музыку, можете прямо на самом устройстве обновить приложение, как вы это обычно делаете. У меня таким образом стоит старая версия Mi Fit (1.6.2, номер 816329811, если кто пользуется браслетами Mi Band), в которой умный будильник еще жив.
к содержанию ↑Послесловие
Как-то так. Таким нехитрым способом можно установить практически любую версию практически любого приложения, т.к. многие разработчики оставили список версий для совместимости со старыми устройствами :)
Как и всегда, если есть какие-то вопросы, то добро пожаловать в комментарии к этой статье.
PS: За существование оной статьи отдельное спасибо другу проекта и члену нашей команды под ником “barn4k“.
Порадуем, пожалуй, яблочников.. :)
0_0 ты уже за яблочников взялся? Круто! продолжение цикла о яблочниках будет?
Что-нибудь придумаем :)
хотелось бы побольше узнать про эту ось)вообще
Посмотрим, что можно сделать :)
Спасибо, попробую
Рады, что пригодилось :)
Лишь бы на пользу ;)
..........Перейти на Андроид, там таких проблем нет..........
Я вообще незнаю приложение для андроид, чтобы делать откаты.
Есть приложение и статья для андроид?
Можно просто найти нужную версию apk файла в интернете и установить её, предварительно разрешив установку из неизвестных источников
Подскажите как быть, у меня как у вас нету вкладки Response в правом окне ?
Статья старовата, но вдруг. Что делать, если на втором круге загрузки itunes начинает жаловаться, что сертификат сервера был подписан неизвестным бюро сертификации и не дает Charles получить остальные данные?