Як виявити та запобігти зловживанню (завантаження) API онлайн-ігри?


49

Я у вільний час працюю над ідеєю гри. Ігровий процес і контент дають змогу реалізувати його як багатокористувацьку гру онлайн, побудовану з добре усталеними веб-технологіями. Ви повинні знати, що вона потрапляє в стратегію та жанр моделювання. Це означає: Не бігайте з символами або подібними, а лише атомарними діями (щодо зв'язку клієнт-сервер) на зразок "побудувати річ А на місці X".

Одного разу я зрозумів, що існує величезна проблема: наявність переднього кінця браузера, що спирається на задній кінець API REST, робить це більш ніж відмінною ціллю для ботів. Хоча автоматизація бажана для бізнесу, вона є отрутою для гри, яка розважається. Я відчував це з перших рук у браузерній грі, коли найуспішніші гравці були ботами, які підкоряли всіх.

З моєї нинішньої точки зору, я не бачу жодної можливості захищатись від ботів під час створення багатокористувацької онлайн-гри на основі API REST. Виняток: зробити це відкритим кодом, щоб кожен міг влаштувати власний екземпляр для приватних груп або навіть просто себе (щоб не дратуватися ривками з ботами).

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

Редагувати : Дякую, ваші відповіді надихають, але також змусили мене зрозуміти, що конкретних контрзаходів неможливо здійснити, заглиблюючись детальніше в гру. Однак це було б занадто багато питань для Stack Exchange. Тому я просто хочу зазначити найважливіші моменти:

  • Гравці досліджують, розробляють та керують, коли захочуть. Їх бізнес все ще працює в режимі офлайн (це мирна гра, зброя не бере участь). Дії гравців потребують лише розширення та прогресу. Ці дії обмежені:
  • час є одним із ключових ресурсів (як, наприклад, в навчанні майстерності EVE Online). Всі процеси в грі вимагають цього. Немає сенсу бути 24/7 в мережі. Середній гравець повинен бути успішним, витрачаючи щодня не більше години на одну або дві сесії ( приблизно , концепція ще в розробці).

9
Ви не можете зробити гру такою, щоб інші програмування або купівля ботів не руйнували задоволення людських гравців? По-друге, програмування бота / AI для гри в гру може бути цікавим саме собою; це не повинно руйнувати задоволення інших.
Каспер ван ден Берг

26
"автоматизація [...] є отрутою для гри, яка розважається." Категорично не згоден. Якщо у грі по-справжньому цікаво, навіщо штрафувати гравців за пропуск деталей, де їх немає? Якщо елементи вашої гри настільки виснажливі, що гравці вважають за краще не грати і відчувають бажання перейняти сценарій, це справжня проблема, яку потрібно вирішити.
Маркс Томас

6
Ваш приклад має просту відповідь: дайте гравцеві інструменти, щоб він не потребував бота. наприклад, дозвольте їм розпочати чергу, а не спонукати їх бути в Інтернеті в точний момент або отримати / створити інструмент, щоб зробити це для них.

4
Основна причина, по якій люди використовують ботів, полягає в тому, що частини гри для них нудні і нудні (якби їм було весело, вони б просто в них грали). Очевидно, що ваші гравці насолоджуються конкуренцією та викликами, але не автоматичним геймплеєм. Ви можете спробувати змінити ігровий дизайн, щоб видалити частини, якими користуються боти, щоб перебороти, або перебалансувати вашу гру, щоб створити більш важкі і осмислені рішення, які може приймати тільки людський гравець, а бот не може (наприклад, глибокий стратегічний вибір) . Інакше ви будете приречені на гонку озброєнь, і боттери переможуть.
Супербест

6
tl; dr: Людям не подобається змагатися проти хлопця з сигналізацією тривоги і не більше роботи, ніж проти хлопця з ботом - і ось що змусить їх запускати ботів.
Випадково832

Відповіді:


50

Якщо люди хочуть бот, я не думаю, що ти насправді можеш їх зупинити.

Ви, звичайно, можете вживати багатьох заходів, які роблять біль чи меншим болем. Але ви можете зробити так багато лише до того, як ваша база коду перетвориться на гігантську безлад, яку потрібно підтримувати, схильну до помилок і дратує законних користувачів. Тим часом боттери завжди знайдуть спосіб перемогти ваші контрзаходи:

  • Їх більше, ніж ти
  • У них більше вільного часу (вам потрібно розділити час між фактичним розвитком і захистом бота, вони можуть зламати свій бот-код протягом усього дня)
  • Коли ви створюєте чужі, складні гарантії, автори ботів будуть надалі заохочуватися, оскільки це цікаво порушити захист бота
  • Якщо є чорний ринок людей, комерційно отримують прибуток від ботів, тим складніше змусити писати бота, тим більше цінні робочі боти стають, тим ви стимулюєте ботинг

Ви, в основному, потрапите в пастку озброєнь з боттерами, і, виходячи з логіки, узгодженої з вищезазначених пунктів, а також мого досвіду таких ігор, ви не зможете не відставати.

Деякі розробники ігор застосовують надзвичайно агресивні заходи проти обману: Наприклад, Steam сканує пам’ять та файлову систему, щоб шукати хаки, а порушників можна покарати втратою рахунків на суму сотень доларів. Але все ж є боти та інші хаки для ігор Steam, а деякі з них працюють навіть половину часу. На відміну від них, у вас широко відкритий користувач API і не має контролю над комп'ютером користувачів. Це важкий бій з самого початку.

Проблема, яку ви намагаєтеся вирішити, по суті є тестом Тьюрінга: За винятком це дуже простий тест Тьюрінга, тому що ви не можете обдурити, вимагаючи важких проблем з AI, як мова. Незалежно від того, скільки евристики ви створюєте, було б тривіально для боттера додати трохи випадковості дії бота, щоб він імітував майже точно людину. Навіть ботові не було б важко дивитися, щоб ви трохи грали, і навчитися визначати час саме так, як ви. Потім , коли ви заборонити бот, пости Боттер величезного RANT на форумі про те , що він просто відданий гравець (і , можливо , він є на самому ділі помилкової позитивним результатом ) і вашого основною аудиторією хардкорних гравців будуть рости зі зброєю в руках проти вас.

Зробіть гру надто цікавою для бота

Основна причина, коли хтось використовує бота, полягає в тому, що є частина гри, яку вони хочуть пропустити. Якби вони насолоджувалися грою і вважали її веселою, вони не мали б бота в неї грати, вони грали б у неї самі.

Але якщо гра настільки нудна, навіщо її взагалі грати? Імовірно, деякі частини гри нудні та обов’язкові, щоб потрапити на цікаві частини. Наприклад, у ММО всі люблять підніматися на рівень, але ніхто не хоче вбити 42 324 страшних щурів з отрутою нежиті, щоб отримати XP. Тож вони дозволяють боту подрібнюватись та впускатись, щоб грати у найсміливішу роль.

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

З вашого опису, у мене складається враження, що це браузерна гра, схожа на "Травіан", де є черга складання з єдиним найкращим порядком побудови та певними завданнями "технічного обслуговування" (наприклад, ведення рейдів на фермах), які необхідно виконати. Ви кажете, що конфлікту немає, але в будь-якій драмі MMO і дрібній політиці це неминуче (IMO - це головна атракція), тому я впевнений, що ваші гравці знаходять способи прикути голову. З такими видами ігор багато цікавого походить від цих завдань на "технічне обслуговування" - те, що гравці дійсно хочуть зробити, це створити альянси та грати в гру дипломатії з суперницькими кланами, після чого технічне обслуговування стає своєрідним податком, де вам потрібно прокинутися до тривоги в непарні години, щоб дозволити собі потрапити в ту веселу дипломатичну частину. Тож виріжте нудьгу:

На жаль, такий підхід може не завжди працювати. Не всі гравці мають однакову толерантність до занурення або однакову концепцію розваги. Ви можете мати видатного механіка, яким користуються 99% ваших гравців, але 1% вважають нудним. Що робити, якщо 1% потім почне писати ботів, що зруйнує задоволення для 99%? Але в кінцевому рахунку це питання ступеня. Ви ніколи не можете видалити боттинг повністю, але ви можете мінімізувати шкоду.

Підрізні боттери

Багато дійсно негативних наслідків роботи ботів надходять від авторів ботів, комерціалізуючи свою роботу. Якщо це стосується вас, ви можете просто конкурувати з ботами. У багатьох онлайн-іграх, що базуються в режимі реального часу, вже є преміальні функції, які дозволяють пропускати час та автоматизувати (наприклад, розширені черги на збірку). Вони становлять санкціонований розробником офіційний бот. Якщо у вас є такі, і ціна їх буде відповідно, гравці купуватимуть вашу премію замість того, щоб купувати ботів. Хороша новина в тому, що ви керуєте API, тому у вас завжди є велика перевага в розробці автоматизації якості для вашої власної гри, тому на цей раз це програшний біт за боттерів.

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

Вручну шукайте їх

Як я вже говорив вище, те, що ви робите, є по суті тестом Тьюрінга. Оскільки взаємодія з людьми, як відомо, вважається важким випробуванням Тюрінга, ви можете спробувати використати це.

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

Хоча важко написати алгоритм, який надійно виявить ботів, людині не так складно навчитися їх визначати. Я думаю, що багато браузерних ігор використовують цю стратегію, і це може бути досить ефективно. Недоліком є ​​те, що або вам потрібно весь час робити нудну роботу, або вам потрібно платити майстрам ігор, щоб робити регулярний ботовий патруль.


4
Я вибрав цю відповідь, тому що вона видається мені найбільшою думкою, дивлячись на питання за крок назад, подалі від технічних деталей. Я довго думав над тим, як вибрати Адама Девіса, оскільки він містить дуже хороші ідеї про те, як «як це зробити».
Пітер

1
@Alomvar Я радий, що це було корисно. Оскільки запитання
набрало

2
Фу, а Травіан все ще? Я грав у це багато років тому, потім зупинився, коли зрозумів, що геймплей в основному може бути зведений до "може перемогти найкращий соціопат".
Мейсон Уілер

25

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

  • Чи включає Ваша гра повторювані завдання, коли гравець виконує одну і ту ж дію знову і знову, щоб подрібнити?

    Зробіть ці аспекти своєї гри менш повторюваними та цікавішими для гри та повторної гри.

  • Чи вимагає від вашої гри гравців виконувати дії, незручні для них, наприклад, посеред ночі або коли вони на роботі?

    Дозвольте їм чергувати замовлення (наприклад, "побудувати X1, потім X2, потім X3, починаючи кожен, як тільки ресурси будуть доступні") або плануйте дії на певний час заздалегідь (побудуйте X на 3:22 ранку).

  • Чи вимагає від вашої гри гравців діяти на події протягом дуже короткого періоду часу?

    Дозвольте їм налаштувати гру таким чином, що ці дії запускаються автоматично

    • коли будівля X руйнується, відновіть її негайно.
    • Коли хтось пропонує ресурс X менше, ніж гроші Y, негайно купуйте до Z одиниць.
    • Автоматично продайте весь ресурс X, коли запас перевищує Y одиниць, але не менше ніж Z грошей на одиницю.

Слідкуйте за своєю спільнотою. Коли ви помітите, що вони автоматизують будь-що інше, вкрадіть ідею та додайте опцію автоматизації її до основної гри.


5
Це чудова пропозиція, яка також робить вашу гру кращою та знижує ризик вашої гри, завдяки чому ваші гравці стають більш схожими на бота. ;-) Якщо ваш бот робить чудовим гравцем вашої гри, можливо, гра повинна залучати більше людського мислення. Я не згоден, що це єдина ефективна оборона, але я згоден, що це найкраща в цілому. +1
Дронз

7
Хоча я погоджуюся з духом цього, але, на жаль, передумова, що ти можеш зробити гру не нудною, - це помилка. Що робити, якщо там 10 000 ваших гравців люблять механіку X, але 10 вважають це нудним і пишуть ботів, руйнуючи задоволення від 10 000? Ось що відбувається з ботами наведення в FPS: аналогічне рішення полягатиме в тому, щоб зробити прицілювання менше, але багато гравців люблять удосконалювати свої навички націлювання. Лише небагатьох, хто відчуває необхідність прицілитися.
Superbest

1
Мені дуже подобається ваша пропозиція, я б хотів, щоб більше ігор робило щось подібне замість того, щоб просити вас бути близько 24/7, щоб бути ефективними
meneldal

@Superbest насправді я можу побачити рішення, де ви могли б створити націлювання на те, щоб бути важливішим, але все-таки важким для того, щоб боттинг був ефективним, наприклад, якщо ви створили зброю для повільної швидкості вогню та точного націлювання, більш корисної, тоді гравці могли б зібратись на боттер, оскільки він не може вистрілити достатньо кульок для кожного гравця, який напав на нього
Меттью Піграма

2
Саме в цьому і полягає! Якщо у вас є ефективний легкий клацання однією кнопкою на час бота X для вас, тоді напишіть його самостійно та подаруйте всім! - Нехай гравець заздалегідь вирішить, що потрібно будувати, коли буде готовий час ... Весело в Іграх - це рішення!
Фалько

23

Не робіть свою гру настільки вразливою для зусиль на місці

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

Для цього може знадобитися зміна вашої ігрової механіки - наприклад, розподіл рухів, який заповнюється, коли ви не граєте, і дозволяє гравцям виконувати багато швидких рухів, коли вони можуть грати, а не механізм, який вимагає постійної тенденції.

Це призведе до зневаги виробників ботів, оскільки вони можуть бути в курсі гри, і у них немає гострої необхідності робити автомат, який виконує дії для них.

Потрібна інформація про сервер для кожної дії та зробіть реакції сервера повільнішими

Коли гравець грає в гру, вони запитують сторінку, яка представляє їм інтерфейс, з яким вони взаємодіють, щоб зробити свій рух. Ви можете вставити елементи, такі як елементи невидимих ​​форм, які підтверджують, що вони спочатку запитували сторінку. Випадкове число, яке зберігає ваш сервер разом із ідентифікатором користувача та на якій сторінці він останній запитував. Коли відбувається дія, сервер перевіряє, що цей користувач повернув те саме випадкове число і виконує дію на сторінці, на якій вони востаннє бачилися. Це не тільки означає, що бот повинен робити два виклики API за кожну дію, але й постійні користувачі не можуть відкривати кілька сторінок і виконувати послідовні швидкі дії (якщо це проблема з вашим дизайном).

Два виклики API надають спосіб сповільнити завантаження роботи пізніше. Згодом ви побачите підозрілі візерунки, і ви зможете їх підібрати. Коли ваш сервер виявить підозрілу схему, він може затримати відповідь API в першому дзвінку на секунду - це буде дратувати користувачів, але дійсно сповільнить роботи. Крім того, якщо другий запит повернеться "занадто швидко" (що б це не означало для вашої гри), ви можете його відхилити або перезавантажити сторінку з певною помилкою в грі або причиною для запиту на повторне надсилання. "Ви не можете так швидко побудувати. Будь ласка, знайдіть свій час." наприклад.

Слухайте своїх користувачів, і ви знайдете, з чим вони нормальні, і що їх дратує.

Зробити рухи та дії вимагають продумання

ЯКЩО гра є простим натисканням кнопок, тоді ви не можете багато зробити з ботами. Подумайте про перероблення своєї гри, щоб гра сама провела тест у формі капчу.

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

Включіть випадкові дуже прості ботові перевірки

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

Змініть API

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


Якщо його браузерна гра, API зміниться, і все це не має значення. Якщо ви не готові також змінювати весь текст клієнта щоразу (Це було б жахливо для гравців. Користувальницький інтерфейс змінюється весь час .. тьфу ..) і якщо Тексти не змінюються, то дуже тривіально знайти текст. Навіть лише за допомогою jQuery. Коли я грав у Травіан, і я збирався лише атакувати, я відкрив величезні кількості вкладок, встановив всю інформацію, готову, і коли час закінчився, прокручував усе, натискаючи надіслати Не ботинг, просто швидко, але ваші затримки з АПІ мене б сильно вразили.
Кату

1
@Katu Залежно від гри, багато елементів інтерфейсу можуть бути вже зображеннями. Якщо змінити назви зображень, трохи змінити хеши файлів зображень тощо, це зробить більш складним завдання. Як мінімум, ви змушуєте їх завантажувати кожен елемент лише для того, щоб зрозуміти, з чим боротися. Вони можуть використовувати javascript, щоб знайти, який елемент знаходиться вгорі в заданому місці на екрані, а потім спробувати активувати це, але навіть тоді ви можете зробити це складніше, якщо клієнт JavaScript звітує про розташування клацань миші, а не натискання елементів.
Адам Девіс

@Katu Ви, зрештою, маєте рацію, з цим можна вирішити, але якщо ви докладете зусиль, необхідних досить великі, тоді ви зменшите кількість бажаючих докласти зусиль, що може бути достатньо.
Адам Девіс

2
Проблема з "переміщенням розподілу" полягає в тому, що ви говорите всім своїм гравцям, що вони можуть грати лише 30 хвилин на день або скільки часу потрібно, щоб використати це, що їх дратує, обмежує ваші доходи від реклами та створює велику спокусу щоб дозволити їм купувати більше за допомогою мікротранзакцій.
Випадково832

Я згоден з розміщенням та орієнтацією будівлі! Це в той же час плюс для законних користувачів і мінус для ботів.
miva2

13

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

  • Перевірте заголовки запитів та відхиліть запити з недійсними значеннями. Або встановіть спеціальну перевірку headeror на наявність таких, як користувальницький агент. Звичайно, це легко подолати, але це ще простіше перевірити. Якщо роботодавець недосвідчений, йому може знадобитися певний час подумати про це! Ваше завдання - змусити якомога більше їх відмовитися?
  • Можливо, у ваших запитах є якийсь хеш-підпис або щось подібне, що генерується на стороні клієнта з якоюсь функцією. Ну, тоді продовжуйте її змінювати! Зробіть це як окремий не кешований скрипт і міняйте його через випадкові проміжки часу. Зробіть декілька з них або відредагуйте на льоту, додавши до процесу хешування випадкову сіль. Хоча це знову, легко подолати, це змусить їх стежити за вашою функцією. Можливо, їм також знадобиться якийсь конвеєр постійного розгортання для постійного оновлення користувачів. Крім того, їх боти почнуть надсилати неправильно хешовані запити. Можна навіть заборонити користувачам, які роблять це занадто часто. Дійсні користувачі в будь-якому разі переміщатимуться за вашим клієнтом, тому вони раз у раз перероблятимуть функцію хешування. Просто не забудьте також оновити сторону сервера (тут створений сервер на основі сценаріїв справді допоможе).
  • Слідкуйте за ефективністю використання ресурсів. Якщо вони витрачаються миттєво, після чого щось стає доступним або якщо нові рейди завжди надсилаються протягом 1-2 секунд з останнього, 24/7, тоді ви маєте справу з якимсь хардкор-гравцем або ботом. Ви вимагаєте captcha від такої особи та примушуєте її вийти. Якщо він продовжує робити запити після виходу з системи (погано написані боти!), Це бот. Якщо він намагається ввійти кілька разів без успіху, то він, ймовірно, бот. Якщо йому потрібно кілька годин, щоб переписатися, він може бути ботом (бот може просити допомоги людини в цей момент, а власник може спати).
  • IP. Це може усунути продаж ботів. Якщо хтось пише бота, маючи на увазі $$$, він може не захотіти поділитися джерелом. Вони замість цього продадуть бот-час. Якщо вони жадібні, вони можуть використовувати одну машину, з одним / кількома ips. Це означає, що багато користувачів почнуть ділитися IP-адресою. Це ризиковано, тому що той самий випадок стосується людей, які діляться мережею. Вам доведеться перевірити, чи якась попередня перевірка є успішною для певного IP-адреси, і вирішити вручну, чи це законна група користувачів, чи армія ботів.

5
Хоча ці ідеї розумні, їх не просто легко перемогти, але мені б сподобалося написати бота просто тому, що перемогти їх здається так весело, навіть якщо я не дуже переймався тим, як добре в грі.
Супербест

1
Більшість пунктів марні. Ти думаєш назад. Незалежно від того, що ви робите з усіма хешами, заголовками тощо, "посилання на придбання оновлення для моєї таверни" має працювати, чи не так? Тепер я створюю бота, який знаходить це посилання, кожні 2 години клацає по ньому. Мені все одно, яку магію ви робите за цим, але мій бот клацає його так, як і користувач. Справа щодо використання ресурсів хороша, але може створити багато помилкових позитивних результатів, що вимагає людської праці. IP .. Наприклад, травіанські боти (невільні) - це користувацький веб-браузер, який надсилає все з вашого ip.
Кату

@Superbest так, легко перемогти цю безпеку один раз. Але якщо це трохи зміниться, вам доведеться відслідковувати ці зміни та оновлювати свого бота. Це означає витрачати більше часу на написання бота, щоб витратити менше часу на гру :). Безглуздо.
Полан

@Katu ви праві, мої методи не зупиняють бота, який є плагіном до браузера, а просто натисканням на клієнта. Але все, що зовні, може мати проблеми. Просто знайти посилання та повторно атакувати не вийде, тому що хеш може зажадати часової позначки та знання напівсекретного ключа. Функція хешування буде змінюватися раз у раз, тому якщо у вас немає інтерпретатора javascript, вам доведеться весь час переписувати бота, щоб включити ці зміни. Ці методи не зупинять людей писати бота. Це просто вимагатиме постійного обслуговування, тому ви не заощадите стільки часу від використання бота :).
Полан

2
@Polan Не проблема, якщо писати бота веселіше, ніж грати в першу чергу.
Супербест

8

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

Що я б робив: визначте деякі евристики, які натякають на користувача, ймовірно, бот - робити багато дій, робити речі 24/7, ... Потім, якщо ці евристики перейдуть певний поріг, зробіть інвазивну перевірку.

Ви можете вручну сканувати активність гравців і бачити, чи здається це нормальним. Або ви робите капчу наступного разу, коли користувач буде в Інтернеті. Або (ще сильніше) просто надішліть йому повідомлення в чаті, де ви поясните, що підозрюєте, що він бот, і хочете, щоб він відповідав чимось по-людськи, щоб довести, що він не бот (як пройшов день? Який ваш улюблений фільм? ... - ви можете мати купу таких). Якщо він взагалі не реагує, він, мабуть, бот. Якщо він відповість, ви вручну перевіряєте відповіді на подібність до людини і забороняєте роботи. Якщо ваші евристики розумні, лише невелика частина користувачів буде поставлена ​​під сумнів, а кількість відповідей на сканування буде невеликою. І якщо ви будете зберігати набір питань приватними та змінюватими, роботи не можуть бути підготовлені, якщо хтось не вигадає SkyNet.


8
Коли Skynet вперше усвідомив себе, всі припускали, що намагатимуться взяти на озброєння світові військові сили. Мало що вони знали, що її єдиною метою було домінування в економіці улюбленого ММО. Таким чином, великі людські війна-ІІ війни були попереджені, спрямовуючи свої агресивні амбіції на місце, де могла бути заподіяна обмежена шкода.
Дан Брайант

1
Проблема з повідомленнями полягає в тому, що боттер може легко входити в систему, щоб грати кожен день, і запускати бота в одному і тому ж акаунті, щоб піклуватися про зайнятість. Бот ігнорує повідомлення, людина відповість наступного ранку, і важко покарати гравця за те, що він відповів кілька годин пізно на повідомлення, надіслане посеред ночі.
Супербест

@Superbest Якщо бот продовжує намагатися грати, поки людина спить, у вас є досить хороший показник того, що це бот. Проблема з питаннями полягає в тому, що якщо гравець не розмовляє англійською?
Лорен Печтел

@LorenPechtel Ну, як ти дізнаєшся, коли вони сплять? Там багато людей з дуже незвичайними розкладами сну. Тільки тому, що вони не відповіли, це не означає, що це бот, можливо, вони просто не відчували, як відповісти тоді, і вирішили зробити це пізніше. Що стосується мови, то, мабуть, гравець розмовляє мовою, якою є гра, інакше як би вони погодилися з правилами або ToS? Не те, що важко відрізнити бота від іноземця в розмові.
Супербест

@Superbest Моє враження було, що гра не буде продовжуватися, поки питання не залишилося без розгляду. Якщо вони продовжують надсилати марні команди, це очевидно, що це робить бот.
Лорен Печтел

8

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

Питання в тому, чому люди створюють ботів для вашої гри, і чи будуть вони платити гроші за пільгу?


4

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

  • Оцініть облікові записи за тим, скільки ви підозрюєте, що вони використовують бота. Це підготує декілька інших методик і захистить законних користувачів від вашого гніву.

  • Поворот клавіші cookie сеансу. Це гарантує, що бот зберігає свої файли cookie, але також набагато складніше обмінювати файли cookie між браузером та ботом (що дуже зручно під час розробки та тестування).

  • Обмежте норму певних дій. Опрацюйте якнайшвидше, що ви насправді могли щось зробити, і стежте за тим, як швидко ці боти роблять це. Можливо, варто також вести журнал запуску та відпрацьовувати стандартні відхилення. Навіть якщо хтось робить щось лише кожні 10 секунд, якщо він робить це саме кожні 10 секунд, він, ймовірно, бот. Змініть їх рейтинг та вийдіть із системи.

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

  • Слідкуйте за рухом миші та сторінки. Сьогодні це досить просто з javascript, але боти органічно не мають жодного руху миші. Якщо ви не отримуєте жодного "кліку", вони можуть бути мобільними або можуть бути ботом. Досліджуйте. Хоча для реєстрації дуже багато даних ... Тому ви можете зарезервувати це для облікових записів, які вже запустили попередні кроки.

  • Створіть інструменти для зв’язку облікових записів за поведінкою, IP, послідовностями дій, каденцією дій. Якщо ви збираєтесь заборонити людей, переконайтеся, що у вас є інструменти для ручної перевірки їхніх правопорушень.

  • Обертайте схему URL-адрес, змінні CSRF тощо та робіть це часто. Це великий крок і, ймовірно, вимагає більшої роботи, ніж це буде колись, але, принаймні, будь-які облікові записи, які раптом просто перестають працювати (або продовжують забивати старі URL-адреси та надсилати старі імена змінних - увійдіть!) потребує підвищення рівня їх індексу бота.


3

Чи вважали ви зробити ботів невід'ємною частиною гри? Ботам важко зруйнувати гру для всіх інших, якщо всіх заохочують їх створити. Додайте підтримку сценаріїв і раптом динаміка зміни гри змінюється від ручних стратегій управління ресурсами до стратегій дизайну бота.


3

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


2

Що б ви не робили, пам’ятайте, що НЕ зробите це більше дратівливим для справжнього гравця! Дуже багато відповідей, які я бачив (повільніші результати сторінок, не дозволяючи відкрити кілька сторінок, щоб полегшити швидше введення даних тощо), також заважали законним гравцям робити швидкі дії, що просто зайве зривати їх.

найпростішим підходом може бути застосування соціальної інженерії до проблеми: 1) додати явний пункт NO-BOT до свого TOS і додати, що виявлення діяльності бота видалить гравця зі списку найвищих показників (або матиме ярлик "cheater" "додається, тому люди не так розчаровані з ними; якщо ви йдете цим маршрутом, дозвольте людям приховувати записи обману).

2) перевірити наявність ботоподібної поведінки (наприклад, регулярно присвоєні пінг-файли серверу або близькі до досконалого часу протягом декількох годин поспіль), і якщо так, то переведіть обліковий запис у "бот-режим" - відображайте періодичні капчу та інше . якщо вони ігноруються, але гравець продовжує активно грати в гру, позначте гравця як "бота" та виключіть його з рейтингу. якщо вони будуть адресовані, позначте його як "гравця потужності" та зніміть його із списку ботів.

таким чином переважна більшість гравців ніколи не зачіпається, жорстокі геймери впливають на короткий час, і боти не «руйнують гру» для кого-небудь іншого.


Що робити, якщо енергетичний гравець вирішить запустити бот? Я не думаю, що «маркувати» гравця як щось має багато сенсу, це дуже зручно. Просто грайте багато днів, потім, як тільки ви отримаєте прапор, вистріліть бота і ніколи не будете спіймані
Dan Pantry
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.