- PVSM.RU - https://www.pvsm.ru -
С момента появления Pokemon Go, я с большим любопытством отслеживаю всё, касающееся этой игрушки. Как ни странно, она даёт безумное количество интересной информации — в первую очередь относительно разработки мобильных приложений. Казалось бы, занимаетесь вы разработкой банковских приложений — в чём тут может быть связь? А нет, вам тоже найдётся, чему научиться у покемонов.
Сегодня хотелось бы остановиться всего лишь на одном из интересных наблюдений — а именно — на защищённости мобильного приложения. Не то чтобы Niantic являлся иконой для всех мировых разработчиков, но давайте исходить из того, что их уровень разработки довольно высок, и их ошибки и недочёты будут справедливы и для большинства других мобильных приложений. Постараюсь излагать так, чтобы было интересно и понятно всем разработчикам, а не только тем, кто играл или читал что-то про игрушку.
Первые версии приложения были очень слабо защищены от реверс инжиниринга, и с огромной скоростью появились гики-разработчики, которые разбирали механику игры или добавляли туда дополнительные фичи или хаки. Когда мне стало интересно, сколько всего разработчиков вовлечены эту забаву, я открыл гитхаб и мне немного поплохело:
Да, глаза вас не обманули. 1644 репозитория. Наверное, стоит уточнить, что там:
Следует отметить, что многие приложения обязаны своим появлением тому, что в игре очень плохо реализованы или объяснены многие моменты — вполне естественно, что находчивые разработчики решили на скорую руку сколотить себе несколько костылей.
В какой-то момент приложение резко перестало показывать удалённость покемонов (ранее были показаны три степени удалённости). Как вы думаете, с чем это связано? Подумайте пару минут. Ваше самое худшее предположение окажется правдой — удалённость рассчитывалась в клиентском приложении, которому передавались координаты находящихся рядом покемонов — что изрядно увеличивало радиус обнаружения для резвящихся ботов. Не совсем понятно, по какой причине Niantic решил полностью убрать эту фичу вместо того, чтобы перенести рассчёт на сторону сервера… Ну да ладно, это мы вряд ли когда-нибудь узнаем. Возможно, они решили не добавлять дополнительной нагрузки на и без того трещащие от натуги сервера. В эту статью не входит вопрос о том, как дочерняя компания Google так облажалась с масштабированием игры с настолько малой связностью данных, но всё же…
Чуть позже время обнаружения покемонов после появления игрока в локации увеличилось вдвое — насколько я помню, с 5 до 10 секунд. Похоже на какие-то панические меры защиты, которые, конечно, не могли принести внятных результатов — боты точно так же увеличили вдвое таймаут.
Наконец настал день, когда боты и сканеры разом перестали работать. Честные игроки вздохнули с облегчением — конкурировать с ботами, многие из которых набрали недоступный игроку 30+ уровень, было очень утомительно, да и просто грустно. Но что же… Облегчение длилось всего трое суток. Энтузиасты с реддита за это время разобрали нативную C++ библиотеку, входящую в состав приложения, подобрали необходимые данные и шифрование и вновь выкатили работающую версию API, которую в течении суток подхватили боты и сканеры.
Справедливости ради стоит заметить, что пятый и четвёртый акт шли параллельно, но мне хотелось их логически разделить.
В этом акте Google начал банить без разбору любые приложения на Google Play, которые имели хоть какое-то отношение к покемонам. Банхаммер работал без отдыха и разбора. Как пример неправедно пострадавших приложений, можно привести
Сложно назвать этот акт иначе. После того, как популярные приложения были убраны с google play, разработчики дружно выложили их в open source на github. Вообще, инфраструктура мобильных приложений на гитхабе довольно интересна — 2016 год позволяет делать автоматическое обновление с гитхаба, отправлять куда угодно сообщения об ошибках и в целом довольно неплохо жить без Google Play. Более того, доверие к приложению становится не меньше, а больше, чем если бы оно было выложено на Google Play…
И что же произошло? Довольно ожидаемая, но от этого не менее печальная вещь. Niantic пошёл жаловаться на репозитории. В результате большинство авторов удалили свой код (надо сказать, не полностью, а просто затёрли его последним коммитом) с примерно таким сообщением:
I've received a notice to cease and desist from Niantic Labs, and I've decided to comply with their requests. I'd like to clarify that the main reason I chose to shut it down was because I’ve lost interest rather than legal concerns. Niantic’s actions towards 3rd party developers have been very off-putting and it has killed my personal motivation to work on this project. This was a fun weekend project for a game I enjoyed, and now I’ve lost interest in both. I won’t resume development, but there are active forks of this project you could use.
Не то чтобы авторы испугались обращений Niantic, но их политика просто огорчила разработчиков до глубины души. Код приложений остался на гитхабе, форки множатся, и злонамеренное использование по-прежнему процветает. Niantic не смогли ни предоставить собственного адекватного инструментария для работы с игрой, ни защитить игру от стороннего вмешательства. И просто пошли строчить жалобы. Ну что же… Не так чтобы это было неожиданно в свете аналогичной судьбы гораздо менее популярного Ingress, но жалко, что компания, которая претендует на революцию в игровой индустрии, не учится на своих ошибках, и даже не признаёт их. Хотя радует, что есть ребята вроде Blizzard, которые понимают, насколько полезно дать игрокам возможность влиять на общий игровой мир и дорабатывать его.
Что мы можем вынести из этой печальной истории?
Могу рассказать ещё несколько историй, если вы укажете в комментариях, что они вам интересны:
Автор: jehy
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/174509
Ссылки в тексте:
[1] Приложение: https://github.com/farkam135/GoIV
[2] Простенький калькулятор: https://github.com/jehy/Pokemon-Go-Weakness-calculator
[3] Подробности: https://www.reddit.com/r/pokemongodev/comments/4w1cvr/pokemongo_current_api_status
[4] Источник: https://habrahabr.ru/post/307974/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.