Ботовод: за кулисами

После публикации интервью с читером в редакцию проекта пришли не только эмоциональные отзывы, но и что-то гораздо более интересное… Мы предлагаем вниманию читателей рассказ, посвящённый технической стороне ботов 😉

Как тебе пришла в голову идея написать бота? Ведь было же много других систем?

В Ingress я играю с 14-го года, в то время был активный мониторинг порталов из-за медали Guardian. Я как обычный игрок хотел себе самую топовую медаль в профиль, но охотники за гардианами мне не давали этого сделать. Было понятно, что они используют ботов для этого, но, как мы знаем, все эти боты были не для простых смертных и просто так найти этих ботов на просторах интернета невозможно. Так и родилась идея написать своего собственного локального бота, который будет следить за каждым порталом в моей ячейке и немного за её пределами. Первая версия бота работала на домашнем компе и запускалась раз в сутки для получения данных, точность его оставляла желать лучшего, но расположение гардианов он всё-таки показывал. Имея начальную версию бота, приходили идеи новых возможностей для него и увеличения точности сбора данных. Так бот заполучил свой собственный маломощный сервер, который собирал данные 24/7 со всей России. В 2016 году я решил сделать публичную версию бота по отображению гардианов, которая привлекла внимание широкого круга людей, в том числе и за пределами России (первый бот ingress-guard.tk). С этого момента проект начал активный рост, некоторые пользователи предлагали серверные мощности в обмен на получение данных в их регионах. Количество данных быстро росло, и нужно было вкладываться в инфраструктуру, на что собственные средства расходовать не хотелось, а донатная кнопка за 4 месяца работы бота не принесла ни копейки, хотя количество активных пользователей росло.

Я принял решение закрыть проект, выложил базу собранных мною порталов на торренты и выложил исходники на Github. Спустя какое то время, мне постучался иностранный агент с предложением продавать данные, от меня требовался софт, от него — продажи. После запуска проекта с премиум-доступом я понял, что проект может жить и развиваться. Пользователи активно скупали доступ, а я так же активно старался улучшить бота и как можно скорее добавлять «хотелки» пользователей. Это дало новый толчок к развитию проекта, был куплен достаточно мощный сервер и заказан дизайн для сайта.

После выпила Niantic медали Guardian, у меня была идея снова закрыть проект, потому что ожидали отток пользователей. Многие приходили в личку с гневными письмами «наконец-то твой проект загнётся». Но мы снизили цену на подписку, убрали подписки сроком больше 3-х месяцев, т.к. не могли и не можем гарантировать работу сервиса на столь долгий период — и вот проект всё ещё существует. Сейчас практически все функции сервиса доступны бесплатно, за исключением исторических данных, имеются ограничения на треккинг в Telegram боте. Пока сбор средств через премиум-аккаунты превышает затраты на инфраструктуру — проект будет жить и постоянно улучшаться. Ещё одной причиной закрытия проекта может послужить усложнение сбора данных со стороны Niantic, но они не торопятся этого делать.

В чём особенность твоего бота? Каких функций нет у других?

Я не могу сказать точно, что есть у других ботов, а чего нет у меня. Но основную свою роль поиска «ачивок» он выполнял на «отлично». Сейчас бот покрывает все API карты Intel и редактора миссий, а до закрытия Redacted бот использовал также API сканера, которая позволяла, например, смотреть профили прямо через плагин, создавать коллажи из миссий или регистрировать аккаунты без использования мобильного приложения. После закрытия Redacted я был вынужден отключить часть функций, но данные остались, и их всё ещё можно получить с помощью плагина или сайта. Иногда приходит какая-нибудь новая идея, и я добавляю новые возможности, последними были показ по клику информации о линке и поле, и порталы с самым большим количеством AP. Нередко идеи приходят от пользователей сервиса.

В данный момент основной упор сделан на бота в Telegram, который позволяет отслеживать различную активность в определённой местности, конкретного агента или на портале. Также активно обновляется плагин для IITC с большим количеством бесплатных и платных возможностей.

Интересно было бы узнать, какие API есть у Prime? Делал ли попытки?

Я несколько вечеров потратил на исследование работы Prime, но в итоге бросил эту идею, потому что в нём не так просто провести реверс-инжиниринг. Во-первых, Prime использует проверку сертификата на стороне клиента, что не позволяет провести атаку «man in the middle» и посмотреть трафик между клиентом и сервером, а это единственное, что мне нужно для адаптации ботов. Во-вторых, Prime написан на Unity, и то, что получается на выходе после компиляции — усложняет поиск нужных методов в декомпилированом коде и эмуляцию трафика клиента. Вскрыть трафик Prime возможно, но игра не стоит свеч, и я бросил эту идею. В API Prime не так уж и много нужного мне (профили, миссии профиля, полный список картинок с портала). Если кто-то работает над этим, то можно скооперироваться, чтобы решить эту задачу и поделиться наработками.

Откуда берутся аккаунты? Ведь на один телефон можно зарегистрировать ограниченное количество.

Для регистрации новых аккаунтов Google я использовал сторонние сервисы по продаже номеров. Но с ростом известности проекта, росло и количество обращений с различными предложениями о сотрудничестве. Скажем так, у моего сервиса есть партнёр из группы C7H, который поставляет мне игровые аккаунты, взамен я также делюсь с ним кое-какими наработками. Он также проживает в России, в основном, занимается продажей игрового снаряжения и прочего. 

Для полноценной работы бота достаточно всего 3 аккаунта. До остановки Redacted требовалось минимум 5, т.к. онлайн в Ingress был гораздо больше. На текущей сборке работает 30 аккаунтов 24/7, что позволяет ускорить работу бота.

Три аккаунта на весь мир? Или на регион? Как распределяется работа между ними?

Да, три аккаунта на весь мир. Бот «обучается» на данных, которые он получает с серверов Ingress, и оптимизирует запросы. В минуту происходит не так много действий в игре, поэтому нескольких аккаунтов достаточно для сбора всех логов. Например, нет смысла постоянно собирать данные с ячеек, где малое количество порталов, достаточно запросить их в течение часа. Регионы с большим количеством порталов опрашиваются постоянно, а во время аномалий бот заранее знает все кластеры с порталами и запрашивает данные чаще и с более мелких областей. Одна аномалия обычно генерирует столько же логов за несколько часов, сколько весь мир за один месяц.

Я использую очередь сообщений для распределения задач для воркеров, каждый аккаунт работает в несколько потоков и ждёт задач. Так же учитываются ограничения, наложенные Niantic, которые не позволяют бесконечный скрейпинг (в простонародье «Intel бан»).

Правда ли, что аккаунты для бота — неполноценные аккаунты?

Я использую разные аккаунты, например, для сбора данных с сервиса создания миссий используются аккаунты с определённым уровнем, для Intel же достаточно просто подтвердить лицензионное соглашение в Prime. Аккаунты используются только для сбора данных, полётами и сносом порталов на заказ я не занимаюсь, что не позволяет игрокам пожаловаться на аккаунт в поддержку, и поэтому аккаунты живут долго.

Какой сервер используется для запуска бота?

Основной сервер имеет 64 Гб ОЗУ, 12-ядерный AMD процессор, 2 скоростных SSD диска и один HDD для хранения бэкапов, и безлимитный трафик. Также имеется кластер из дешёвых VPS для прокси (Niantic любит банить скрейпера по адресу). За 3 года работы бота собрано 2 миллиарда единиц исторических данных из COMM (капчуры, поля, линки, вирусы, фракеры) и один месяц хранятся все данные из Intel (моды, деплой резонаторов и т.д.). Ежедневное количество активных пользователей сайта и плагина варьируется от 800 до 1200 человек в сутки, по боту я не веду статистику. Бот сканирует весь мир для поиска новых порталов (примерно 2 недели уходит на один цикл скана), а также проверяет каждый портал на моды и владельца портала (2-3 дня, чтобы проверить каждый портал).

Возможно ли как-нибудь получить доступ к историческим данным по полям, например? Или они стираются? Сколько места занимает архив?

Я храню все логи в течение месяца без изменений. Все логи, что старше месяца, содержат только информацию о захвате портала, линки, поля, вирусы и фракеры. Хранить информацию о модах и резонаторах не имеет особого смысла, и занимает очень много места. Архивная информация доступна полностью только на премиум-доступе, остальные возможности доступны бесплатно. 

До недавних пор размер архива был около 3-х миллиардов архивных записей, после чистки стал чуть больше чем 2 миллиарда (~350 Гб). Примерный прирост сейчас 120 миллионов в месяц. Данные я храню с июля 2017 года.

Как на это реагирует Niantic и сколько времени проходит, прежде чем замечают ботов?

До выхода Prime было время, когда я получал бан аккаунтов каждый день, но бот был доработан и позволял работать аккаунтам до месяца без банов. Скорее всего, получилось обойти автоматическое обнаружение бот-акканутов. После выхода Prime, Niantic «подзабил» на скрейперов, и баны прилетают очень редко. Их заявление о том, что они вычистили основную часть бот-аккаунтов и аккаунтов магазинов с игровыми предметами, вызвало только улыбку, потому что ни один аккаунт не был забанен. 

Также я имел честь пообщаться с Niantic, после того, как они заявили о нарушении авторских прав и написали жалобу моему провайдеру домена, т.к. домен содержал слово «ingress». В то время у Niantic сильно бушевали гормоны, когда кто-то использовал их логотип или слоган компании на своих ресурсах. Под раздачу банов попали несколько сайтов и в том числе мой. Вступать в спор с Niantic я не стал, потому что нужно было заплатить 1500$ (дороговато) за решение спора. Через месяц домен ingress.news в одностороннем порядке был передан Niantic, и сейчас переадресовывает на его основной сайт. Текущий домен xgress.com уже больше года живёт без предъявления претензий со стороны Niantic, надеюсь, что так и продолжится.

Как ты считаешь, сможет ли Niantic когда-нибудь начать поддерживать сайты, использующие скрейпинг?

Судя по всему, Niantic поддерживал и поддерживает скрейпинг. Никаких проблем в данный момент со сбором данных нет. Легально они никогда не будут поддерживать такие сайты, это противоречит их правилам. Им проще перенести все возможности таких сайтов на тот же Intel, и сторонние сервисы станут неактуальными. 

С одной стороны, есть правила, в которых подобное запрещено. Но в то же время Niantic не препятствуют этому? Получается, у них двойные стандарты? 

Правда известна только Niantic, нам остаётся лишь только гадать. Безусловно, им нравится вовлечённость людей в создание дополнительных инструментов для их игры. Взять тот же IITC, его пишет не один человек, и Intel как инструмент без него уже не представляется возможным. Тоже касается различных ботов, сейчас их на порядок меньше, чем было до закрытия Redacted, но люди продолжают пользоваться. Правила запрещают, но всегда же есть исключения из правил. Чем плох, например, IITC — ничем, он гораздо удобнее и быстрее, чем стоковый Intel, видимо, поэтому Niantic так долго не обновляли стоковую карту. 

Нет никаких проблем сделать инструмент, который бы автоматически удалял аккаунты, которые собирают данные с Intel, но Niantic не предпринимает никаких действий. Как только сложность сбора данных будет увеличена, я думаю, все эти сервисы просто перестанут существовать, пример тому — Prime.

А какая реакция на тебя как на автора в сообществе? Или вы вне его?

Я участвую в жизни сообщества и стараюсь участвовать в различных операциях как полевой агент, что делаю сейчас намного реже, чем раньше (Ingress уже не тот). Сообщество не знает обо мне как о владельце сервиса, я стараюсь не афишировать, потому что не все адекватно реагируют на использование стороннего софта (хотя и пользуются им 🙂 ). Но есть несколько агентов, которым я доверяю и дарю доступ.

Как по твоему, какая категория игроков пользуется сайтом чаще всех?

Я не веду подробную статистику тех, кто пользуется сайтом, только количество уникальных пользователей в сутки. После того, как прошла 2-х недельная бесплатная версия, онлайн вырос примерно на 300+ юзеров в сутки. Плюс очень часто вижу скриншоты игроков, на которых есть мой плагин.

Что нужно сделать Niantic, чтобы вернуть гарды?

Я надеюсь, что просто выставить параметр включения гардов в true на стороне сервера.

Как ты сам относишься к идее вернуть гарды?

Я считаю, что гарды нужны для этой игры, так как после отключения данной медали очень много человек потеряло интерес к игре. Эта медаль была привлекательна тем, что вовлекала очень много людей в развитие сообщества вокруг Ingress, в том числе разработчиков ботов и плагинов для IITC. У нас в городе было сообщество охотников за гардианами, которое своими силами зачищало такие порталы, а если портал был проставлен в другом регионе или стране, то договаривались с местными агентами. Но если не получалось договориться, то агент, поставивший портал, получал заслуженную медаль. Речь о снятии вертолётом у нас даже не поднималась. Единственный минус этой медали был в том, что была возможность снести гардиан вертолётом без возможности возврата данного портала агенту с помощью Niantic, чем многие и пользовались. Niantic, видимо, решил, что отключить медаль проще, чем решить проблему с читерами. В итоге медали нет, а читеры остались.

Как ты думаешь, какое будущее у Ingress есть вообще?

По моему мнению, Ingress превращается в однопользовательскую игру типа Pokemon. В игре очень много КФ-механик и ивентов, которые убивают основную идею Ingress — противостояние. Конечно же, продолжают проводить различные операции по накрытиям и не только, но уже без былого духа авантюризма. Сканер был инструментом, а Prime — это нарядная игра с маячками и фейерверками. Niantic поставил проект Ingress в конец очереди, все обещанные механики внедряются очень медленно или вовсе не появляются в игре. Это лично моё мнение, кто-то, возможно, рад таким переменам. «Раньше было лучше» 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *