Иногда я работал над идеей игры в свободное время. Игровой процесс и контент делают его реализованным в виде многопользовательской онлайн-игры, созданной с использованием хорошо зарекомендовавших себя веб-технологий. Вы должны знать, что это относится к жанру стратегии и симуляции. Это означает: не бегать с символами или схожими, но только атомарными действиями (в отношении взаимодействия клиент-сервер), такими как «построить объект A на месте X».
В какой-то момент я понял, что существует огромная проблема: наличие внешнего интерфейса на основе браузера, основанного на интерфейсе REST API, делает его более чем отличной целью для ботов. В то время как автоматизация желательна для бизнеса, это яд для игры, которая приносит удовольствие. Я испытал это на собственном опыте в браузерной игре в прошлом, когда самыми успешными игроками были боты, которые всех покоряли.
С моей нынешней точки зрения я не вижу никакой возможности защиты от ботов при создании многопользовательской онлайн-игры на основе REST API. Исключение: сделать его открытым исходным кодом, чтобы каждый мог разместить свой собственный экземпляр для частных групп или даже только для себя (чтобы не раздражаться от толчков с ботами).
Есть ли способ отличить честного игрока, который просто поставил будильник на следующее возможное действие, и бот автоматически использует все шансы на его появление? К тому же такие шоу-пробки, как капчи. Если нет, я бы подумал о другом технологическом стеке, который, по крайней мере, значительно усложняет взаимодействие с клиент-сервером (проприетарный зашифрованный двоичный протокол в клиенте с собственным кодом).
Изменить : Спасибо, ваши ответы вдохновляют, но также заставили меня понять, что конкретные контрмеры не могут быть сделаны, углубляясь в детали игры. Тем не менее, это было бы слишком для вопроса о Stack Exchange. Поэтому я просто хочу указать на самые важные моменты:
- Игроки исследуют, развивают и управляют, когда хотят. Их бизнес все еще работает нормально, когда они не в сети (это мирная игра, без оружия). Игрокам нужно только расширение и прогресс. Эти действия ограничены:
- время является одним из ключевых ресурсов (как в обучении навыкам в EVE Online). Все процессы в игре требуют этого. Нет смысла быть онлайн 24/7. Средний игрок уже должен быть успешным, тратя не более часа каждый день на одну или две сессии ( примерно , концепция все еще находится в разработке).
источник
Ответы:
Если люди хотят ботов, я не думаю, что вы действительно можете их остановить.
Конечно, вы можете реализовать много мер, которые делают боты более или менее болезненными. Но вы можете сделать так много, прежде чем ваша кодовая база превратится в гигантский беспорядок, который адски поддерживать, подвержен ошибкам и раздражает законных пользователей. Тем временем боттеры всегда найдут способ победить ваши контрмеры:
По сути, вы окажетесь в ловушке гонки вооружений с боттерами, и, исходя из логики, описанной выше, а также моего опыта в таких играх, вы не сможете идти в ногу.
Некоторые разработчики игр применяют чрезвычайно агрессивные меры против мошенничества: например, Steam сканирует память и файловую систему, чтобы найти взломы, а нарушители могут быть наказаны, потеряв аккаунты на сотни долларов. Тем не менее, есть еще боты и другие хаки для игр Steam, и некоторые из них даже работают половину времени. В отличие от них, у вас есть API, который широко открыт для пользователя, и вы не можете контролировать компьютер пользователя. Это тяжелая битва с самого начала.
Проблема, которую вы пытаетесь решить, по сути, является тестом Тьюринга: за исключением того, что это очень простой тест Тьюринга, потому что вы не можете обмануть, требуя сложных ИИ-проблем, таких как язык. Независимо от того, сколько эвристик вы создаете, для бота было бы тривиально добавить немного случайности к действию бота, чтобы он имитировал почти точно человека. Было бы даже не сложно заставить бота наблюдать за тем, как ты играешь, и научиться определять время действий точно так же, как ты. Затем, когда вы блокируете бота, он публикует на форуме громкие разговоры о том, что он просто преданный игрок (и, возможно, он на самом деле ложный позитив), и ваша основная аудитория хардкорных игроков поднимется против вас.
Сделайте игру слишком увлекательной, чтобы бот
Основная причина, по которой кто-то использует бота, заключается в том, что он хочет пропустить часть игры. Если бы они наслаждались игрой и находили ее забавной, бот не играл бы в нее, они играли бы в нее сами.
Но если игра такая скучная, зачем вообще в нее играть? Предположительно, некоторые части игры являются скучными и обязательными, чтобы попасть в интересные части. Например, в ММО всем нравится подниматься на новый уровень, но никто не хочет убивать 42324 ужасных яда с нежитью, чтобы получить ХР. Таким образом, они позволяют боту рушиться, чтобы играть забавную роль.
Это не критика вас или вашей игры, но, по крайней мере, некоторые игроки считают некоторые части вашей игры утомительными. Вы должны посмотреть, сможете ли вы уменьшить количество этих утомительных частей и посмотреть на добавление более сложных, значимых решений: боты плохо разбираются в глубокой стратегии или латеральном мышлении по сравнению с человеческим интеллектом, и, кроме того, людям нравится принимать сложные игровые решения.
Из вашего описания у меня сложилось впечатление, что это браузерная игра, похожая на Travian, где есть очередь на сборку с единственным лучшим порядком сборки и определенными задачами «обслуживания» (такими как поддержание рейдов на ферме), которые необходимо выполнить. Вы говорите, что конфликта нет, но в любой ММО драма и мелкая политика неизбежны (ИМО - это главная привлекательность), поэтому я уверен, что ваши игроки найдут способы нанести удар по голове. В играх такого типа большая часть утомления приходит от этих «задач» обслуживания - то, что игроки действительно хотят сделать, это заключить союзы и сыграть в дипломатическую игру с конкурирующими кланами, то обслуживание становится своего рода налогом, когда вам нужно проснуться. до будильника в неурочные часы, чтобы попасть в эту забавную дипломатическую часть. Так что вырежьте скуку
Этот подход не всегда может работать, к сожалению. Не все игроки имеют одинаковую терпимость к скуке или одинаковую концепцию веселья. У вас может быть выдающаяся механика, которая нравится 99% ваших игроков, но 1% считают скучной. Что если 1% тогда начнёт писать ботов, разрушая удовольствие на 99%? Но в конечном итоге это вопрос степени. Вы никогда не сможете полностью удалить ботов, но вы можете минимизировать ущерб.
Подрезанные боттеры
Многие из действительно негативных эффектов ботов прибывают от авторов ботов, коммерциализирующих их работу. Если это так, вы можете просто соревноваться с ботами. Многие онлайн-игры в реальном времени уже имеют расширенные функции, которые позволяют пропускать время и автоматизировать (например, расширенные очереди сборки). Эти суммы составляют санкционированный разработчиком официальный бот. Если они у вас есть и вы оцениваете их соответствующим образом, игроки будут покупать вашу премию вместо того, чтобы покупать ботов. Хорошая новость заключается в том, что вы отвечаете за API, так что у вас всегда есть сильное преимущество в разработке автоматизации качества для вашей собственной игры, так что на этот раз битва за проигрыш.
Это не устранит любителей-любителей или людей, которые считают, что ваша премия не является хорошим соотношением цены и качества, поэтому эффективность этого подхода зависит от ситуации.
Искать их вручную
Как я уже говорил выше, то, что вы делаете, по сути является тестом Тьюринга. Поскольку общение с людьми считается сложной задачей теста Тьюринга, вы можете попытаться использовать это.
Вручную осмотрите игроков высшего уровня и посмотрите, не нашли ли вы что-нибудь подозрительное. Возможно, вам даже удастся сойти с рук время от времени, исследуя их способами, ограниченными только вашим воображением, чтобы увидеть, сможете ли вы обмануть бота, чтобы он сделал то, чего он не сделает.
Хотя сложно написать алгоритм, который будет надежно обнаруживать ботов, человеку не так сложно научиться определять их. Я думаю, что многие браузерные игры используют эту стратегию, и она может быть довольно эффективной. Недостатком является то, что либо вам нужно все время выполнять скучную работу, либо вам нужно платить мастерам игр за регулярное патрулирование ботов.
источник
Лучшая и единственная эффективная защита против ботов - это создать свою игру таким образом, чтобы игроки не чувствовали необходимости в автоматизации в первую очередь. Когда ваши игроки автоматизируют простые задачи, которые на самом деле не требуют навыков, это признак того, что вашему пользовательскому интерфейсу не хватает, и они заменяют отсутствующую функцию пользовательского интерфейса.
Включает ли ваша игра повторяющиеся задания, в которых игрок снова и снова выполняет одно и то же действие, чтобы размолоть?
Сделайте эти аспекты вашей игры менее повторяющимися и более интересными для игры и повторного воспроизведения.
Требует ли ваша игра, чтобы игроки выполняли действия в неудобное для них время, например, среди ночи или когда они на работе?
Разрешить им ставить в очередь заказы (например, «построить X1, затем X2, затем X3, начиная каждый, как только будут доступны ресурсы») или запланировать действия на определенное время заранее (сборка X в 3:22 AM).
Требует ли ваша игра, чтобы игроки действовали на события в очень короткий промежуток времени?
Позвольте им настроить игру таким образом, чтобы эти действия запускались автоматически
Контролируйте свое сообщество. Когда вы заметите, что они автоматизируют что-то еще, украдите идею и добавьте опцию, чтобы автоматизировать ее в основной игре.
источник
Не делайте свою игру настолько уязвимой для усилий Джонни на месте
Во-первых, убедитесь, что игроки, которые играют в вашу игру только по двадцать минут или час в день за один раз, не находятся в невыгодном положении по сравнению с игроками, которые оставляют ее открытой на работе и играют по 16 часов в день.
Это может потребовать изменения в вашей игровой механике - например, выделение хода, которое заполняется, когда вы не играете, и позволяет игрокам выполнять много быстрых ходов, когда они могут играть, а не механизм, который требует постоянного управления.
Это лишит стимулов производителей ботов, потому что они могут идти в ногу с игрой, и у них нет острой необходимости создавать автомат, который выполняет за них действия.
Требовать информацию о сервере для каждого действия и замедлять ответы сервера
Когда игрок играет в игру, он запрашивает страницу с пользовательским интерфейсом, с которым он взаимодействует, чтобы сделать свой ход. Вы можете вставить элементы, такие как невидимые элементы формы, которые проверяют, действительно ли они сначала запросили страницу. Случайное число, которое ваш сервер хранит вместе с идентификатором пользователя и страницей, которую они последний раз запрашивали. Когда поступает действие, сервер проверяет, что этот пользователь возвратил то же случайное число, и выполняет действие на странице, на которой последний раз его видели. Это означает не только то, что бот должен делать два вызова API для каждого действия, но и то, что обычные пользователи не могут открывать несколько страниц и выполнять последовательные быстрые действия (если это проблема с вашим дизайном).
Два вызова API дают вам возможность замедлить работу ботов позже. В конце концов вы увидите подозрительные паттерны и сможете их обнаружить. Когда ваш сервер обнаруживает подозрительный шаблон, он может на секунду задержать ответ API при первом вызове, что раздражает пользователей, но в действительности замедляет работу ботов. Кроме того, если второй запрос возвращается «слишком быстро» (что бы это ни значило для вашей игры), вы можете отклонить его или перезагрузить страницу с некоторой внутриигровой ошибкой или причиной запроса повторной подачи. «Вы не можете построить это быстро. Пожалуйста, не торопитесь». например.
Слушайте своих пользователей, и вы узнаете, с чем у них все в порядке и что их раздражает.
Делать шаги и действия требуют мысли
Если в игре просто нажать кнопку, то вы ничего не можете сделать с ботами. Подумайте о том, чтобы изменить дизайн вашей игры, чтобы сама игра выполняла тест, похожий на капчу.
Не зная ничего об игре, я не могу многое предложить. Если это связано с выбором места размещения здания, спроектируйте интерфейс так, чтобы пользователь мог выбирать где угодно, даже если есть очевидные места размещения, которые не будут работать. Или, возможно, пользователь должен соответствовать ориентации вверх, чтобы размещение было успешным. Если это связано с выбором действия, включите более длинный список действий, некоторые из которых не имеют смысла в данной ситуации.
Включить случайные очень простые проверки ботов
Добавьте случайный диалог "Вы уверены?" например. Часто меняйте вопрос и формулировку и используйте его как выборочную проверку для ботов.
Изменить API
Часто меняйте API, заставляя их фактически анализировать веб-страницу на предмет правильных переменных и того, как они возвращаются веб-серверу. Если вы разрабатываете свой интерфейс, используя шаблон, замените шаблон кодом, который использует соленый хеш или генератор случайных величин для каждого имени переменной. Затем начните использовать javascript для кодирования ответов и часто меняйте эту кодировку. Вы, вероятно, можете написать программное обеспечение, которое сделает все это за вас, и либо все случайное, либо просто создать статический шаблон, который вы время от времени меняете.
источник
Вы не можете остановить их. Но вы можете сделать их жизнь несчастной, поскольку им приходится тратить много времени на написание своих ботов и их обновление. Вы должны использовать все, что вам нужно, чтобы проверить, если пользователь действителен.
источник
В целом, различие между ботами и людьми полностью автоматически затруднено, лучше всего подходит некоторая форма процесса принятия решений, осуществляемого человеком.
Что я хотел бы сделать: определить некоторую эвристику, которая намекает на то, что пользователь, вероятно, является ботом - выполняет много действий, делает вещи 24/7, ... Затем, если эти эвристики выходят за определенный порог, проводят инвазивную проверку.
Вы можете вручную сканировать активность игроков и посмотреть, все ли в порядке. Или вы сделаете капчу в следующий раз, когда пользователь будет в сети. Или (еще сильнее) просто отправьте ему сообщение в чате, где вы объясняете, что подозреваете, что он бот, и хотите, чтобы он ответил чем-то похожим на человека, чтобы доказать, что он не бот (как прошел ваш день? Какой ваш любимый фильм? ... - вы можете иметь кучу таких). Если он не отвечает вообще, он, вероятно, бот. Если он отвечает, вы вручную проверяете ответы на сходство с людьми и запрещаете роботов. Если ваша эвристика приемлема, будет опрошено лишь небольшое количество пользователей, и количество ответов на сканирование будет небольшим. И если вы оставите набор вопросов закрытым и изменяющимся, роботы не смогут подготовиться, если кто-то не изобрел SkyNet.
источник
Обними боттера. Вы создали удобный API, идеально подходящий для программиста, который может поэкспериментировать с автоматизацией вашей игры. Создайте свой игровой процесс таким образом, чтобы бот не получал преимущества над человеком-игроком из-за его автоматизации - исключайте преимущества скорости выполнения и т. Д., Которыми обладает машина; Создайте свою игру так, чтобы бот приносил такой же доход, как и человек-игрок, если это возможно, или, по крайней мере, предоставлял более богатую среду для привлечения большего числа игроков.
Вопрос в том, почему люди создают ботов для вашей игры и будут ли они платить за эту привилегию?
источник
Я не согласен с провайдер блокирует на мягких научных ответов , но есть это технические вещи , которые вы можете сделать , чтобы обнаружить botters и некоторые вещи , которые просто делают жизнь труднее для них.
Оценки объясняют тем, насколько вы подозреваете, что они используют бота. Это будет использовать несколько других методов и защитит законных пользователей от вашего гнева.
Вращение ключа cookie сеанса. Это гарантирует, что бот сохраняет свои cookie-файлы, но при этом боттеру намного сложнее делиться cookie-файлами между браузером и ботом (что действительно удобно при разработке и тестировании).
Ограничьте скорость определенных действий. Отработать быстрый вы могли бы сделать что - то, и следить , как быстро эти боты делают это. Может также стоить вести рабочий журнал и вырабатывать стандартные отклонения. Даже если кто-то делает что-то каждые 10 секунд, если он делает это ровно каждые 10 секунд, он, вероятно, бот. Изменить их рейтинг и выйти из системы.
Сделайте вход в систему более сложным для аккаунтов, которые, как вы подозреваете, могут быть ботами. CAPTCHA, вопросы и другие неизбежные вещи значительно усложняют задачу для потенциального пользователя автоматически писать сценарии.
Контролировать движение мыши / страницы. Это довольно просто с javascript в наши дни, но у ботов не будет никаких движений мыши. Если между "кликами" вы ничего не получаете, они могут быть мобильными или ботами. Исследовать. Хотя в нем много данных для регистрации ... Так что вы можете зарезервировать это для учетных записей, которые уже инициировали предыдущие шаги.
Создавайте инструменты для связи учетных записей по поведению, IP, последовательности действий, каденции действий. Если вы собираетесь забанить людей, убедитесь, что у вас есть инструменты для ручной проверки их правонарушений.
Поворачивайте схему URL, переменные CSRF и т. Д. И делайте это часто. Это большой шаг и, вероятно, требует больше предварительной работы, чем это когда-либо будет стоить, но, по крайней мере, любые учетные записи, которые внезапно просто перестают работать (или продолжают забивать старые URL-адреса и отправлять старые имена переменных - регистрируйте это!) нужно повысить уровень индекса их ботов.
источник
Вы рассматривали создание ботов как неотъемлемую часть игры? Для ботов сложно испортить игру для всех, если их поощряют все. Добавьте поддержку сценариев и внезапно динамика игры изменится с стратегий ручного управления ресурсами на стратегии разработки ботов.
источник
Создайте отдельный сервер только для бота. Создайте таблицу лидеров и отметьте победителей. Посмотрите на данные, которые это генерирует. Запретить пользователям доступ к обычным серверам, чей профиль поведения похож на профиль бота.
источник
Что бы вы ни делали, помните, что это НЕ раздражает настоящего игрока! Многие ответы, которые я видел (более медленные результаты страниц, не позволяющие открывать несколько страниц, чтобы ускорить ввод и т. Д.) Также не позволят легитимным игрокам делать что-либо быстро, что просто излишне расстроит их.
imho, самый простой подход - применить социальную инженерию к проблеме: 1) добавить явное условие NO-BOT к своему TOS и добавить, что обнаружение активности бота приведет к удалению игрока из списка рекордов (или к ярлыку «обманщик»). «привязан, так что люди не так разочарованы ими; если вы идете по этому пути, позвольте людям скрывать записи мошенников).
2) проверять поведение, похожее на бот (например, регулярно синхронизирующийся пинг на сервер или почти идеальное время в течение многих часов подряд), и если это так, то переводить учетную запись в «режим бота» - отображать случайные капчи и еще много чего , если они игнорируются, но игрок продолжает активно играть в игру, пометьте игрока как «бота» и исключите его из рейтинга. если они адресованы, пометьте его как «сильного игрока» и уберите его из списка ботов.
таким образом, подавляющее большинство игроков никогда не будут затронуты, хардкорные геймеры пострадают в течение короткого периода времени, и боты не "разрушают игру" для кого-либо еще.
источник