Заранее извиняюсь, что довольно таки мало технических подробностей про запросы/ответы, пока что сам разбираюсь.
Да, вслед за Реверсом AppStore, решил я взяться за то же самое, но с Google. Google Play Store. (как Бонд. Джеймс Бонд).
Весело то, что у гугла все просто и секъюрно. Юзаются подписи, nonce'ы. А также сервис разделяется на две составляющие — push и обычную. Все запаковано во что бы вы думали? Правильно — protobuffers! It's hard to decode, ибо формат бинарного сообщения сам себя не описывает, много эвристики и веселья.
Забавно, однако, что, как и в Apple, ВНЕЗАПНО, плевали они на стандарты (или я неправильно понял?) — gzip отдается плейнтекстом/binary — в protobuffers, а вот binary отдается в… gzip!
Добро пожаловать под кат.
Покупка проходит очень легко и непринужденно сложно.
Первое — /fdfe/toc
— выдает данные о Terms&Conditions маркета и другую обязательную чушь.
Второе — /fdfe/purchase
или /market/api/ApiRequest
— получить данные о покупке (та кнопка «купить» в маркете)
Третье — /fdfe/completePurchase
— выполнить собственно покупку
Пятое — /fdfe/purchaseStatus
или /market/api/ApiRequest
— проверить статус покупки — получить nonce и прочие параметры о покупке в json
Шестое — /market/api/ApiRequest
— получение Nonce, деталей покупки
Седьмое — запрос к /market/api/ApiRequest
и получение какой-то интересной строки типа ‹ г bе`PxБОі‰‰ эњ
— я не понял, что это.
Также не ясно, почему запросы идут то к /market/api/ApiRequest
, то к /fdfe/*
при покупке. Может я попал под тихую смену протоколов?
+ большой брат следит за тобой! Переодически уходят запросы на /fdfe/log
:
Вместе с этим приходит push-уведомление с данными о том, что, «ваша покупка загружена», либо «не удалось совершить покупку» — пока остановился на этом. А без уведомления ничего не работает. Еще одна степень защиты, однако.
Забавно, что все это дело (push) работет через TCP over SSL/TLS (уважаю), ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет — protobuffers в base64 и что-то еще:
To be continued... (если меня, конечно, корпорация добра не забанит)
PS:
Удалось уже сэмулировать и вполне работает покупка восстанавливаемых покупок, но очень нестабильно. Если хотите как-то помочь, составить, например, .proto файл для ответов маркета — добро пожаловать в личку.
PSS:
Я работаю не один, мне помогает человек с ником madkite, не знаю, есть ли он на хабре. По ходу нет.
Автор: ZonD80