Как обнаружить и предотвратить злоупотребления (боты) API онлайн-игр?

50

Иногда я работал над идеей игры в свободное время. Игровой процесс и контент делают его реализованным в виде многопользовательской онлайн-игры, созданной с использованием хорошо зарекомендовавших себя веб-технологий. Вы должны знать, что это относится к жанру стратегии и симуляции. Это означает: не бегать с символами или схожими, но только атомарными действиями (в отношении взаимодействия клиент-сервер), такими как «построить объект A на месте X».

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

С моей нынешней точки зрения я не вижу никакой возможности защиты от ботов при создании многопользовательской онлайн-игры на основе REST API. Исключение: сделать его открытым исходным кодом, чтобы каждый мог разместить свой собственный экземпляр для частных групп или даже только для себя (чтобы не раздражаться от толчков с ботами).

Есть ли способ отличить честного игрока, который просто поставил будильник на следующее возможное действие, и бот автоматически использует все шансы на его появление? К тому же такие шоу-пробки, как капчи. Если нет, я бы подумал о другом технологическом стеке, который, по крайней мере, значительно усложняет взаимодействие с клиент-сервером (проприетарный зашифрованный двоичный протокол в клиенте с собственным кодом).

Изменить : Спасибо, ваши ответы вдохновляют, но также заставили меня понять, что конкретные контрмеры не могут быть сделаны, углубляясь в детали игры. Тем не менее, это было бы слишком для вопроса о Stack Exchange. Поэтому я просто хочу указать на самые важные моменты:

  • Игроки исследуют, развивают и управляют, когда хотят. Их бизнес все еще работает нормально, когда они не в сети (это мирная игра, без оружия). Игрокам нужно только расширение и прогресс. Эти действия ограничены:
  • время является одним из ключевых ресурсов (как в обучении навыкам в EVE Online). Все процессы в игре требуют этого. Нет смысла быть онлайн 24/7. Средний игрок уже должен быть успешным, тратя не более часа каждый день на одну или две сессии ( примерно , концепция все еще находится в разработке).
Питер
источник
9
Разве вы не можете сделать игру такой, чтобы другие программисты или покупатели ботов не испортили веселье человеческим игрокам? И во-вторых, программирование бота / ИИ для игры может быть забавным само по себе; это не должно портить удовольствие другим.
Каспер ван ден Берг
27
«[...] автоматизация - это яд для игры, которая приносит удовольствие». Сильно не согласен. Если ваша игра действительно веселая, зачем наказывать игроков за пропуск частей, где их нет? Если элементы вашей игры настолько утомительны, что игроки предпочитают не играть и хотят, чтобы сценарий вступил во владение, это реальная проблема, которую нужно решить.
отмечает Томас
6
Ваш пример имеет простой ответ: дайте игроку инструменты, чтобы им не нужен бот. например, пусть они ставят в очередь действие, а не поощряют их быть в сети в определенный момент или получают / делают инструмент, чтобы сделать это для них.
4
Основная причина, по которой люди используют ботов, заключается в том, что некоторые части игры для них скучны и скучны (если бы им было весело, они бы просто поиграли в них). Очевидно, что ваши игроки наслаждаются соревнованием и испытанием, но не автоматическим игровым процессом. Вы можете попробовать изменить игровой дизайн, чтобы удалить части, которые люди используют для преодоления ботов, или изменить баланс вашей игры, чтобы создавать более сложные и значимые решения, которые может принять только игрок-человек, а бот - нет (например, глубокий стратегический выбор). , В противном случае вы будете обречены на гонку вооружений, и победители выиграют.
Супербест
6
tl; dr: Людям не понравится соревноваться с парнем с тревогой и никакой работой, как против парня с ботом - и это то, что заставит их запускать ботов.
Random832

Ответы:

51

Если люди хотят ботов, я не думаю, что вы действительно можете их остановить.

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

  • Их больше, чем тебя
  • У них больше свободного времени (нужно разделить время между фактической разработкой и проверкой ботов, они могут взламывать свой код бота в течение всего дня)
  • По мере того, как вы создаете диковинные, сложные меры предосторожности, авторы ботов будут и далее поощряться, потому что весело нарушать защиту ботов.
  • Если существует черный рынок людей, коммерчески извлекающих выгоду из ботов, чем сложнее вам написать бота, тем более ценными становятся рабочие боты, поэтому вы стимулируете ботов

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

Некоторые разработчики игр применяют чрезвычайно агрессивные меры против мошенничества: например, Steam сканирует память и файловую систему, чтобы найти взломы, а нарушители могут быть наказаны, потеряв аккаунты на сотни долларов. Тем не менее, есть еще боты и другие хаки для игр Steam, и некоторые из них даже работают половину времени. В отличие от них, у вас есть API, который широко открыт для пользователя, и вы не можете контролировать компьютер пользователя. Это тяжелая битва с самого начала.

Проблема, которую вы пытаетесь решить, по сути, является тестом Тьюринга: за исключением того, что это очень простой тест Тьюринга, потому что вы не можете обмануть, требуя сложных ИИ-проблем, таких как язык. Независимо от того, сколько эвристик вы создаете, для бота было бы тривиально добавить немного случайности к действию бота, чтобы он имитировал почти точно человека. Было бы даже не сложно заставить бота наблюдать за тем, как ты играешь, и научиться определять время действий точно так же, как ты. Затем, когда вы блокируете бота, он публикует на форуме громкие разговоры о том, что он просто преданный игрок (и, возможно, он на самом деле ложный позитив), и ваша основная аудитория хардкорных игроков поднимется против вас.

Сделайте игру слишком увлекательной, чтобы бот

Основная причина, по которой кто-то использует бота, заключается в том, что он хочет пропустить часть игры. Если бы они наслаждались игрой и находили ее забавной, бот не играл бы в нее, они играли бы в нее сами.

Но если игра такая скучная, зачем вообще в нее играть? Предположительно, некоторые части игры являются скучными и обязательными, чтобы попасть в интересные части. Например, в ММО всем нравится подниматься на новый уровень, но никто не хочет убивать 42324 ужасных яда с нежитью, чтобы получить ХР. Таким образом, они позволяют боту рушиться, чтобы играть забавную роль.

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

Из вашего описания у меня сложилось впечатление, что это браузерная игра, похожая на Travian, где есть очередь на сборку с единственным лучшим порядком сборки и определенными задачами «обслуживания» (такими как поддержание рейдов на ферме), которые необходимо выполнить. Вы говорите, что конфликта нет, но в любой ММО драма и мелкая политика неизбежны (ИМО - это главная привлекательность), поэтому я уверен, что ваши игроки найдут способы нанести удар по голове. В играх такого типа большая часть утомления приходит от этих «задач» обслуживания - то, что игроки действительно хотят сделать, это заключить союзы и сыграть в дипломатическую игру с конкурирующими кланами, то обслуживание становится своего рода налогом, когда вам нужно проснуться. до будильника в неурочные часы, чтобы попасть в эту забавную дипломатическую часть. Так что вырежьте скуку

Этот подход не всегда может работать, к сожалению. Не все игроки имеют одинаковую терпимость к скуке или одинаковую концепцию веселья. У вас может быть выдающаяся механика, которая нравится 99% ваших игроков, но 1% считают скучной. Что если 1% тогда начнёт писать ботов, разрушая удовольствие на 99%? Но в конечном итоге это вопрос степени. Вы никогда не сможете полностью удалить ботов, но вы можете минимизировать ущерб.

Подрезанные боттеры

Многие из действительно негативных эффектов ботов прибывают от авторов ботов, коммерциализирующих их работу. Если это так, вы можете просто соревноваться с ботами. Многие онлайн-игры в реальном времени уже имеют расширенные функции, которые позволяют пропускать время и автоматизировать (например, расширенные очереди сборки). Эти суммы составляют санкционированный разработчиком официальный бот. Если они у вас есть и вы оцениваете их соответствующим образом, игроки будут покупать вашу премию вместо того, чтобы покупать ботов. Хорошая новость заключается в том, что вы отвечаете за API, так что у вас всегда есть сильное преимущество в разработке автоматизации качества для вашей собственной игры, так что на этот раз битва за проигрыш.

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

Искать их вручную

Как я уже говорил выше, то, что вы делаете, по сути является тестом Тьюринга. Поскольку общение с людьми считается сложной задачей теста Тьюринга, вы можете попытаться использовать это.

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

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

Superbest
источник
4
Я выбрал этот ответ, потому что он кажется мне наиболее продуманным, когда он рассматривает вопрос на шаг назад, вдалеке от технических деталей. Я долго думал о выборе Адама Дэвиса, потому что он содержит несколько очень хороших идей о том, «как».
Питер
1
@Alomvar Я рад, что это было полезно. Так как вопрос получил так много голосов, вы можете также добавить ссылку на свою игру в своем профиле :)
Superbest
2
Тьфу, Травиан все еще рядом? Я играл в нее много лет назад, а затем остановился, когда понял, что игровой процесс в основном сводится к «пусть победит лучший социопат».
Мейсон Уилер
25

Лучшая и единственная эффективная защита против ботов - это создать свою игру таким образом, чтобы игроки не чувствовали необходимости в автоматизации в первую очередь. Когда ваши игроки автоматизируют простые задачи, которые на самом деле не требуют навыков, это признак того, что вашему пользовательскому интерфейсу не хватает, и они заменяют отсутствующую функцию пользовательского интерфейса.

  • Включает ли ваша игра повторяющиеся задания, в которых игрок снова и снова выполняет одно и то же действие, чтобы размолоть?

    Сделайте эти аспекты вашей игры менее повторяющимися и более интересными для игры и повторного воспроизведения.

  • Требует ли ваша игра, чтобы игроки выполняли действия в неудобное для них время, например, среди ночи или когда они на работе?

    Разрешить им ставить в очередь заказы (например, «построить X1, затем X2, затем X3, начиная каждый, как только будут доступны ресурсы») или запланировать действия на определенное время заранее (сборка X в 3:22 AM).

  • Требует ли ваша игра, чтобы игроки действовали на события в очень короткий промежуток времени?

    Позвольте им настроить игру таким образом, чтобы эти действия запускались автоматически

    • когда здание X будет разрушено, немедленно восстановите его.
    • Когда кто-то предлагает ресурс X менее чем за Y денег, немедленно покупайте до Z единиц.
    • Автоматическая продажа всего ресурса X, когда запас превышает Y единиц, но не менее чем за Z денег за единицу.

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

Philipp
источник
5
Это отличное предложение, которое также делает вашу игру лучше и снижает риск вашей игры, делая ваших игроков более похожими на ботов. ;-) Если быть ботом - отличный игрок в вашей игре, возможно, игра должна включать больше человеческого мышления. Я не согласен с тем, что это единственная эффективная защита, но я согласен с тем, что это лучший результат. +1
Дронз
7
Хотя я согласен с духом этого, к сожалению, предпосылка, что вы можете сделать игру не утомительной, является ошибкой. Что если 10 000 ваших игроков любят механику X, но 10 считают ее утомительной и пишут ботов, разрушая удовольствие от 10 000? Вот что происходит с прицельными ботами в FPS: аналогичным решением было бы уменьшить прицеливание, но многие игроки любят совершенствовать свои навыки прицеливания. Лишь немногие чувствуют необходимость прицеливаться.
Superbest
1
Мне очень нравится ваше предложение, я хочу, чтобы в других играх было что-то подобное, вместо того, чтобы просить вас работать 24 часа в сутки, 7 дней в неделю
meneldal
@Superbest, на самом деле, я вижу решение, в котором вы могли бы разработать цель, которая будет более важной, но все же трудной для того, чтобы боты были эффективными, например, если вы разработали оружие с низкой скорострельностью и точным прицеливанием, более полезным, чем игроки могли бы сразиться боттер, потому что он не может стрелять достаточным количеством пуль для каждого нападающего на него игрока
Мэтью Пиграм
2
Это именно то, что нужно! Если для вашей игры есть эффективная легкая кнопка «нажми одну кнопку», то напишите ее сами и раздайте всем! - Пусть игрок заранее решит, что будет построено, как только будет готово время ... Веселье в играх - это решения!
Falco
23

Не делайте свою игру настолько уязвимой для усилий Джонни на месте

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

Это может потребовать изменения в вашей игровой механике - например, выделение хода, которое заполняется, когда вы не играете, и позволяет игрокам выполнять много быстрых ходов, когда они могут играть, а не механизм, который требует постоянного управления.

Это лишит стимулов производителей ботов, потому что они могут идти в ногу с игрой, и у них нет острой необходимости создавать автомат, который выполняет за них действия.

Требовать информацию о сервере для каждого действия и замедлять ответы сервера

Когда игрок играет в игру, он запрашивает страницу с пользовательским интерфейсом, с которым он взаимодействует, чтобы сделать свой ход. Вы можете вставить элементы, такие как невидимые элементы формы, которые проверяют, действительно ли они сначала запросили страницу. Случайное число, которое ваш сервер хранит вместе с идентификатором пользователя и страницей, которую они последний раз запрашивали. Когда поступает действие, сервер проверяет, что этот пользователь возвратил то же случайное число, и выполняет действие на странице, на которой последний раз его видели. Это означает не только то, что бот должен делать два вызова API для каждого действия, но и то, что обычные пользователи не могут открывать несколько страниц и выполнять последовательные быстрые действия (если это проблема с вашим дизайном).

Два вызова API дают вам возможность замедлить работу ботов позже. В конце концов вы увидите подозрительные паттерны и сможете их обнаружить. Когда ваш сервер обнаруживает подозрительный шаблон, он может на секунду задержать ответ API при первом вызове, что раздражает пользователей, но в действительности замедляет работу ботов. Кроме того, если второй запрос возвращается «слишком быстро» (что бы это ни значило для вашей игры), вы можете отклонить его или перезагрузить страницу с некоторой внутриигровой ошибкой или причиной запроса повторной подачи. «Вы не можете построить это быстро. Пожалуйста, не торопитесь». например.

Слушайте своих пользователей, и вы узнаете, с чем у них все в порядке и что их раздражает.

Делать шаги и действия требуют мысли

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

Не зная ничего об игре, я не могу многое предложить. Если это связано с выбором места размещения здания, спроектируйте интерфейс так, чтобы пользователь мог выбирать где угодно, даже если есть очевидные места размещения, которые не будут работать. Или, возможно, пользователь должен соответствовать ориентации вверх, чтобы размещение было успешным. Если это связано с выбором действия, включите более длинный список действий, некоторые из которых не имеют смысла в данной ситуации.

Включить случайные очень простые проверки ботов

Добавьте случайный диалог "Вы уверены?" например. Часто меняйте вопрос и формулировку и используйте его как выборочную проверку для ботов.

Изменить API

Часто меняйте API, заставляя их фактически анализировать веб-страницу на предмет правильных переменных и того, как они возвращаются веб-серверу. Если вы разрабатываете свой интерфейс, используя шаблон, замените шаблон кодом, который использует соленый хеш или генератор случайных величин для каждого имени переменной. Затем начните использовать javascript для кодирования ответов и часто меняйте эту кодировку. Вы, вероятно, можете написать программное обеспечение, которое сделает все это за вас, и либо все случайное, либо просто создать статический шаблон, который вы время от времени меняете.

Адам Дэвис
источник
Если его браузерная игра, API изменится и все это не будет иметь значения. Если вы не готовы менять весь текст в клиенте также каждый раз (это было бы ужасно для игроков. Интерфейс меняется все время ... тьфу ...), и если тексты не меняются, найти текст очень просто. Даже с просто JQuery. Когда я играл в Travian и собирался атаковать, я открыл огромное количество вкладок, подготовил всю информацию и, когда время истекло, пролистал все, нажав «Отправить». Не боты, просто быстро, но твои задержки API сильно ударили бы по мне.
Кату
1
@Katu В зависимости от игры, многие элементы пользовательского интерфейса уже могут быть изображениями. Изменение имен изображений, незначительное изменение хешей файлов изображений и т. Д. Сделает его более сложным. Как минимум, вы заставляете их загружать каждый элемент, чтобы понять, с чем иметь дело. Они могут использовать javascript, чтобы найти, какой элемент находится сверху в заданном месте на экране, и затем попытаться активировать это, но даже в этом случае вы можете сделать это сложнее, если клиент javascript сообщит о местах щелчков мыши, а не о щелчках элементов.
Адам Дэвис,
@Katu Вы в конечном итоге правы, с этим можно справиться, но если вы приложите достаточно большие усилия, вы уменьшите количество людей, готовых пойти на это, чего может быть достаточно.
Адам Дэвис,
2
Проблема с «распределением ходов» заключается в том, что вы говорите всем своим игрокам, что они могут играть только 30 минут в день или сколько угодно времени, чтобы их использовать, что раздражает их, ограничивает ваши доходы от рекламы и создает огромный соблазн. чтобы позволить им покупать больше через микротранзакции.
Random832
Я согласен с расположением здания и ориентацией! Это в то же время плюс для законных пользователей и минус для ботов.
miva2
13

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

  • Проверьте заголовки запросов и отклоните запросы с недопустимыми значениями. Либо установите пользовательскую проверку заголовка для существующего пользовательского агента. Конечно, это легко преодолеть, но еще проще проверить. Если ботрайтер неопытен, ему может потребоваться некоторое время, чтобы подумать об этом! Твоя задача - заставить как можно больше сдаться, верно?
  • Возможно, в ваших запросах есть какая-то хэш-сигнатура или что-то подобное, что генерируется на стороне клиента с помощью какой-либо функции. Ну, тогда продолжайте менять это! Сделайте это как отдельный не кешируемый скрипт и меняйте его через произвольные интервалы. Сделайте несколько тем или отредактируйте их, добавив случайную соль в процесс хеширования. Хотя это снова легко преодолеть, это заставит их следить за вашей функцией. Им также может понадобиться какой-то постоянный конвейер развертывания, чтобы держать пользователей в курсе. Иначе их боты начнут отправлять неправильно хешированные запросы. Вы даже можете запретить пользователям, которые делают это слишком часто. Действительные пользователи в любом случае будут перемещаться по вашему клиенту, поэтому время от времени они будут обновлять функцию хеширования. Только не забудьте обновить серверную часть тоже (скрипт, основанный на бэкенде, действительно поможет здесь).
  • Следите за эффективностью использования ресурсов. Если они тратятся мгновенно, после того, как что-то становится доступным, или если новые рейды всегда отправляются в течение 1-2 секунд с последнего, 24/7, то вы имеете дело с каким-то хардкорным игроком или ботом. Вы запрашиваете капчу у такого человека и принудительно выходите из него. Если он продолжает делать запросы после выхода из системы (плохо написанные боты!), То это бот. Если он попытается войти в систему несколько раз безуспешно, то он, вероятно, бот. Если ему потребуется несколько часов, чтобы пересобраться, то он может быть ботом (бот может запросить помощь человека в этот момент, а владелец может спать).
  • IP. Это может устранить продажу ботов. Если кто-то напишет бота с мыслью о $$$, он может не захотеть делиться источником. Вместо этого они будут продавать время бота. Если они жадные, они могут использовать одну машину с одним / несколькими ips. Это означает, что многие пользователи начнут делиться IP. Это рискованно, потому что такой же случай для людей, которые делят сеть. Вам нужно будет проверить, была ли успешна какая-либо из предыдущих проверок на определенном IP, и решить вручную, является ли это законной группой пользователей или армией ботов.
Polan
источник
5
Хотя эти идеи умны, их не только легко победить, но я бы соблазнился написать бота просто потому, что победить их было бы забавно, даже если бы я не заботился о том, чтобы преуспеть в игре.
Супербест
1
Большинство пунктов бесполезны. Вы думаете назад. Независимо от того, что вы делаете со всеми хешами, заголовками и т. Д., «Ссылка для покупки обновления для моей таверны» должна работать, верно? Теперь я создаю бота, который находит эту ссылку, каждые 2 часа нажимает на нее. Мне все равно, какое волшебство вы делаете за этим, но мой бот щелкает по нему так же, как и пользователь. Использование ресурсов - это хорошо, но может вызвать много ложных срабатываний, что требует человеческой работы. IP .. Например travian bots (несвободный) - это пользовательский веб-браузер, который отправляет все с вашего ip.
Кату
@Superbest да, легко одолеть эту защиту один раз. Но если он немного изменится, вам придется следить за этими изменениями и обновлять своего бота. Это значит тратить больше времени на написание бота и тратить меньше времени на игры :). Бессмысленно.
Полан
@ Katu, вы правы, мои методы не остановят бота, который является плагином для браузера и просто нажимает на клиента. Но что-то снаружи может иметь проблемы. Простой поиск ссылки и повторная атака не сработают, поскольку для хэша может потребоваться временная метка и знание полусекретного ключа. Функция хеширования будет время от времени меняться, поэтому, если у вас нет интерпретатора javascript, вам придется все время переписывать своего бота, чтобы включить эти изменения. Эти методы не остановят людей от написания бота. Это просто потребует постоянного обслуживания, поэтому вы не сэкономите столько времени от использования бота :).
Полан
2
@Polan Не проблема, если писать бота веселее, чем играть в первую очередь.
Супербест
8

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

Что я хотел бы сделать: определить некоторую эвристику, которая намекает на то, что пользователь, вероятно, является ботом - выполняет много действий, делает вещи 24/7, ... Затем, если эти эвристики выходят за определенный порог, проводят инвазивную проверку.

Вы можете вручную сканировать активность игроков и посмотреть, все ли в порядке. Или вы сделаете капчу в следующий раз, когда пользователь будет в сети. Или (еще сильнее) просто отправьте ему сообщение в чате, где вы объясняете, что подозреваете, что он бот, и хотите, чтобы он ответил чем-то похожим на человека, чтобы доказать, что он не бот (как прошел ваш день? Какой ваш любимый фильм? ... - вы можете иметь кучу таких). Если он не отвечает вообще, он, вероятно, бот. Если он отвечает, вы вручную проверяете ответы на сходство с людьми и запрещаете роботов. Если ваша эвристика приемлема, будет опрошено лишь небольшое количество пользователей, и количество ответов на сканирование будет небольшим. И если вы оставите набор вопросов закрытым и изменяющимся, роботы не смогут подготовиться, если кто-то не изобрел SkyNet.

Мартин Модрак
источник
8
Когда Скайнет впервые осознал себя, все предполагали, что он попытается захватить мировые вооруженные силы. Мало ли они знали, что его единственная цель состояла в том, чтобы доминировать над экономикой своей любимой MMO. Таким образом, были предотвращены великие войны между людьми и ИИ, направив их агрессивные амбиции в место, где мог быть нанесен ограниченный ущерб.
Дэн Брайант
1
Проблема с сообщениями заключается в том, что боттер может легко входить в систему, чтобы играть каждый день, и запускать бот под одной и той же учетной записью, чтобы позаботиться о занятой работе. Бот проигнорирует сообщение, человек ответит на следующее утро, и сложно наказать игрока за то, что он на несколько часов слишком поздно ответил на сообщение, отправленное посреди ночи.
Супербест
@Superbest Если бот продолжает пытаться играть, пока человек спит, у вас есть довольно хорошее свидетельство того, что это бот. Проблема в том, чтобы задавать вопросы, что если игрок не говорит по-английски?
Лорен Печтел
@LorenPechtel Ну, как ты узнаешь, когда они спят? Там много людей с очень необычным графиком сна. То, что они не ответили, не означает, что это был бот, может быть, они просто не хотели отвечать и решили сделать это позже. Что касается языка, то, по-видимому, игрок говорит на языке, на котором находится игра, иначе как они согласятся с правилами или правилами игры? Не то чтобы трудно отличить бота от иностранца в разговоре.
Супербест
@ Superbest У меня сложилось впечатление, что игра не будет продолжаться, пока вопрос остается без ответа. Если они продолжают посылать бесполезные команды, вполне очевидно, что это делает бот.
Лорен Печтел
8

Обними боттера. Вы создали удобный API, идеально подходящий для программиста, который может поэкспериментировать с автоматизацией вашей игры. Создайте свой игровой процесс таким образом, чтобы бот не получал преимущества над человеком-игроком из-за его автоматизации - исключайте преимущества скорости выполнения и т. Д., Которыми обладает машина; Создайте свою игру так, чтобы бот приносил такой же доход, как и человек-игрок, если это возможно, или, по крайней мере, предоставлял более богатую среду для привлечения большего числа игроков.

Вопрос в том, почему люди создают ботов для вашей игры и будут ли они платить за эту привилегию?

MatthewToday
источник
4

Я не согласен с провайдер блокирует на мягких научных ответов , но есть это технические вещи , которые вы можете сделать , чтобы обнаружить botters и некоторые вещи , которые просто делают жизнь труднее для них.

  • Оценки объясняют тем, насколько вы подозреваете, что они используют бота. Это будет использовать несколько других методов и защитит законных пользователей от вашего гнева.

  • Вращение ключа cookie сеанса. Это гарантирует, что бот сохраняет свои cookie-файлы, но при этом боттеру намного сложнее делиться cookie-файлами между браузером и ботом (что действительно удобно при разработке и тестировании).

  • Ограничьте скорость определенных действий. Отработать быстрый вы могли бы сделать что - то, и следить , как быстро эти боты делают это. Может также стоить вести рабочий журнал и вырабатывать стандартные отклонения. Даже если кто-то делает что-то каждые 10 секунд, если он делает это ровно каждые 10 секунд, он, вероятно, бот. Изменить их рейтинг и выйти из системы.

  • Сделайте вход в систему более сложным для аккаунтов, которые, как вы подозреваете, могут быть ботами. CAPTCHA, вопросы и другие неизбежные вещи значительно усложняют задачу для потенциального пользователя автоматически писать сценарии.

  • Контролировать движение мыши / страницы. Это довольно просто с javascript в наши дни, но у ботов не будет никаких движений мыши. Если между "кликами" вы ничего не получаете, они могут быть мобильными или ботами. Исследовать. Хотя в нем много данных для регистрации ... Так что вы можете зарезервировать это для учетных записей, которые уже инициировали предыдущие шаги.

  • Создавайте инструменты для связи учетных записей по поведению, IP, последовательности действий, каденции действий. Если вы собираетесь забанить людей, убедитесь, что у вас есть инструменты для ручной проверки их правонарушений.

  • Поворачивайте схему URL, переменные CSRF и т. Д. И делайте это часто. Это большой шаг и, вероятно, требует больше предварительной работы, чем это когда-либо будет стоить, но, по крайней мере, любые учетные записи, которые внезапно просто перестают работать (или продолжают забивать старые URL-адреса и отправлять старые имена переменных - регистрируйте это!) нужно повысить уровень индекса их ботов.

Oli
источник
3

Вы рассматривали создание ботов как неотъемлемую часть игры? Для ботов сложно испортить игру для всех, если их поощряют все. Добавьте поддержку сценариев и внезапно динамика игры изменится с стратегий ручного управления ресурсами на стратегии разработки ботов.

Кеннет Кокран
источник
3

Создайте отдельный сервер только для бота. Создайте таблицу лидеров и отметьте победителей. Посмотрите на данные, которые это генерирует. Запретить пользователям доступ к обычным серверам, чей профиль поведения похож на профиль бота.

гипотезы
источник
2

Что бы вы ни делали, помните, что это НЕ раздражает настоящего игрока! Многие ответы, которые я видел (более медленные результаты страниц, не позволяющие открывать несколько страниц, чтобы ускорить ввод и т. Д.) Также не позволят легитимным игрокам делать что-либо быстро, что просто излишне расстроит их.

imho, самый простой подход - применить социальную инженерию к проблеме: 1) добавить явное условие NO-BOT к своему TOS и добавить, что обнаружение активности бота приведет к удалению игрока из списка рекордов (или к ярлыку «обманщик»). «привязан, так что люди не так разочарованы ими; если вы идете по этому пути, позвольте людям скрывать записи мошенников).

2) проверять поведение, похожее на бот (например, регулярно синхронизирующийся пинг на сервер или почти идеальное время в течение многих часов подряд), и если это так, то переводить учетную запись в «режим бота» - отображать случайные капчи и еще много чего , если они игнорируются, но игрок продолжает активно играть в игру, пометьте игрока как «бота» и исключите его из рейтинга. если они адресованы, пометьте его как «сильного игрока» и уберите его из списка ботов.

таким образом, подавляющее большинство игроков никогда не будут затронуты, хардкорные геймеры пострадают в течение короткого периода времени, и боты не "разрушают игру" для кого-либо еще.

TI Troll
источник
Что если сильный игрок решит заняться ботом? Я не думаю, что «помечать» игрока как что-то имеет смысл, это очень удобно. Просто играйте много дней, а затем, как только вы получите флаг, запустите бота, и вас никогда не поймают
Дэн Пантри