Jak wykrywać nadużycia (botowanie) interfejsu API gier online i zapobiegać im?

49

W wolnym czasie od czasu do czasu pracowałem nad pomysłem na grę. Rozgrywka i zawartość sprawiają, że jest on implementowany jako gra online dla wielu graczy zbudowana z wykorzystaniem dobrze znanych technologii internetowych. Powinieneś wiedzieć, że należy do gatunku strategii i symulacji. Oznacza to: brak biegania z postaciami lub podobnymi, ale tylko akcje atomowe (dotyczące komunikacji klient-serwer), takie jak „buduj rzecz A w lokalizacji X”.

W pewnym momencie zdałem sobie sprawę, że istnieje ogromny problem: posiadanie interfejsu opartego na przeglądarce opartego na interfejsie API REST sprawia, że ​​jest to więcej niż doskonały cel dla botów. Automatyzacja jest pożądana w biznesie, ale jest trucizną dla gry, która jest zabawą. Doświadczyłem tego z pierwszej ręki w grze przeglądarkowej, w której najbardziej udanymi graczami były boty, które podbiły wszystkich.

Z mojego obecnego punktu widzenia nie widzę żadnej możliwości ochrony przed botami podczas budowania gry online dla wielu graczy opartej na interfejsie API REST. Wyjątek: uczynienie go otwartym oprogramowaniem, aby każdy mógł hostować własną instancję dla grup prywatnych, a nawet po prostu siebie (aby nie dać się zirytować palantom z botami).

Czy jest jakiś sposób na rozróżnienie między uczciwym graczem, który właśnie ustawił alarm na następną możliwą akcję, a botem automatycznie wykorzystującym każdą okazję, gdy się pojawi? Poza takimi korkami pokazowymi jak captchas. Jeśli nie, pomyślałbym o innym stosie technologii, który sprawia, że ​​co najmniej znacznie trudniej jest zadzierać z komunikacją klient-serwer (zastrzeżony zaszyfrowany protokół binarny w kliencie natywnym).

Edycja : Dziękuję, twoje odpowiedzi są inspirujące, ale także uświadomiły mi, że nie można podjąć konkretnych środków zaradczych, zagłębiając się w szczegóły gry. To by było jednak za dużo na pytanie na Stack Exchange. Chcę tylko wskazać najważniejsze punkty:

  • Gracze odkrywają, rozwijają i zarządzają, kiedy tylko chcą. Ich firmy nadal działają dobrze, gdy są offline (jest to spokojna gra, bez użycia broni). Tylko ekspansja i postęp wymagają działania graczy. Działania te są ograniczone przez:
  • czas jest jednym z kluczowych zasobów (jak w szkoleniu umiejętności EVE Online). Wszystkie procesy w grze tego wymagają. Nie ma sensu być online 24/7. Przeciętny gracz powinien odnieść sukces, spędzając nie więcej niż godzinę dziennie w jednej lub dwóch sesjach (z grubsza , koncepcja jest wciąż w fazie rozwoju).
Piotr
źródło
9
Czy nie potrafisz sprawić, aby gra tak, że inni programujący lub kupujący boty nie zrujnowali zabawy ludzi? Po drugie, zaprogramowanie bota / sztucznej inteligencji do grania w grę może być zabawą samą w sobie; nie powinno to jednak zrujnować zabawy innych.
Kasper van den Berg
26
„automatyzacja [...] jest trucizną dla gry, która polega na zabawie”. Zdecydowanie się nie zgadzam. Jeśli twoja gra jest naprawdę zabawna, po co karać graczy za pomijanie części tam, gdzie ich nie ma? Jeśli elementy Twojej gry są tak nużące, że gracze wolą nie grać i odczuwają chęć przejęcia skryptu, to jest prawdziwy problem, którym należy się zająć.
Marcks Thomas
6
Twój przykład ma łatwą odpowiedź: daj graczowi narzędzia, aby nie potrzebowali bota. np. pozwól im ustawiać się w kolejce w akcji, zamiast zachęcać ich do bycia online w określonym momencie lub zdobycia / stworzenia narzędzia, które zrobi to za nich.
4
Głównym powodem, dla którego ludzie używają botów, jest to, że części gry są dla nich nudne i nudne (gdyby były zabawne, po prostu w nie grali). Wyraźnie Twoi gracze cieszą się z rywalizacji i wyzwań, ale nie z automatyczną rozgrywką. Możesz spróbować zmienić wygląd gry, aby usunąć części, które ludzie używają do przejścia przez boty, lub ponownie zrównoważyć grę, aby podejmować trudniejsze i bardziej znaczące decyzje, które może podejmować tylko człowiek, a bot nie (np. Głębokie wybory strategiczne) . W przeciwnym razie zostaniesz skazany na wyścig zbrojeń, a dna wygrywają.
Superbest
6
tl; dr: Ludzie nie będą lubili konkurować z facetem z alarmem i pracą nie bardziej niż z facetem z botem - i to właśnie doprowadzi ich do uruchamiania botów.
Random832

Odpowiedzi:

50

Jeśli ludzie chcą botować, nie sądzę, że naprawdę możesz ich powstrzymać.

Możesz oczywiście wdrożyć wiele środków, które sprawiają, że botowanie jest mniej lub bardziej bolesne. Ale możesz zrobić tylko tyle, zanim baza kodu zamieni się w gigantyczny bałagan, który jest piekło w utrzymaniu, podatny na błędy i denerwuje legalnych użytkowników. Tymczasem osoby zajmujące się butelkami zawsze znajdą sposób na pokonanie środków zaradczych:

  • Jest ich więcej niż ty
  • Mają więcej wolnego czasu (musisz podzielić czas między rzeczywisty rozwój i sprawdzanie botów, mogą włamać się do kodu bota przez cały dzień)
  • Gdy tworzysz dziwaczne, wymagające zabezpieczenia, autorzy botów będą zachęcani, ponieważ fajnie jest przełamać ochronę bota
  • Jeśli istnieje czarny rynek ludzi komercyjnie czerpiących zyski z botów, im trudniej jest napisać bota, tym bardziej wartościowe stają się roboty, więc zachęca się do botowania

Zasadniczo zostaniesz uwięziony w wyścigu zbrojeń z dnem, a na podstawie logiki zgodnej z powyższymi punktami, a także mojego doświadczenia z takimi grami, nie będziesz w stanie nadążyć.

Niektórzy twórcy gier stosują wyjątkowo agresywne środki zapobiegające oszustwom: na przykład Steam skanuje pamięć i system plików w poszukiwaniu hacków, a przestępcy mogą zostać ukarani za utratę kont wartych setki dolarów. Jednak nadal są boty i inne hacki do gier Steam, a niektóre z nich działają nawet o połowę krócej. W przeciwieństwie do nich masz interfejs API, który jest szeroko otwarty dla użytkownika i nie ma kontroli nad komputerem użytkownika. Od samego początku jest to bitwa pod górę.

Problem, który próbujesz rozwiązać, to zasadniczo test Turinga: z wyjątkiem tego, że jest to bardzo łatwy test Turinga, ponieważ nie możesz oszukiwać, wymagając trudnych problemów AI, takich jak język. Bez względu na to, ile heurystyk stworzysz, botter może w niewielkim stopniu dodać losowości do działania bota, aby naśladował niemal dokładnie człowieka. Nie byłoby nawet trudno mieć bota, który grał przez chwilę, i uczyć się, jak mierzyć czas akcji dokładnie tak jak ty. Wtedy, kiedy zakaz BOT, słupki Botter ogromny rant na forum o tym, jak on jest tylko dedykowany odtwarzacz (a może on jest rzeczywiście fałszywy alarm) a rdzeń publiczność zapalonych graczy wzrośnie z bronią w ręku przeciwko tobie.

Spraw, by gra była zbyt zabawna, by botować

Głównym powodem, dla którego ktoś używa bota, jest to, że istnieje część gry, którą chce pominąć. Gdyby ta gra sprawiała im przyjemność, nie mieliby bota w nią grać, graliby sami.

Ale jeśli gra jest tak nudna, po co w ogóle grać? Przypuszczalnie niektóre części gry są nudne i obowiązkowe, aby dostać się do części, które są zabawne. Na przykład w MMO wszyscy uwielbiają awansować na wyższy poziom, ale nikt nie chce zabijać 42 324 strasznych nieumarłych szczurów, aby zdobyć XP. Pozwolili więc botowi się zgryźć i wpaść, by zagrać w zabawną rolę.

To nie jest krytyka ciebie ani twojej gry, ale najwyraźniej niektórzy gracze uważają niektóre części gry za nudne. Powinieneś sprawdzić, czy możesz zmniejszyć te żmudne części, i zastanowić się nad dodaniem trudniejszych, znaczących decyzji: Boty nie są dobre w głębokiej strategii lub myśleniu bocznym w porównaniu z ludzką inteligencją, a poza tym ludzie lubią podejmować trudne decyzje w grze.

Z twojego opisu mam wrażenie, że jest to gra przeglądarkowa podobna do Traviana, w której jest kolejka budowania z pojedynczą najlepszą kolejnością budowania i pewnymi zadaniami „konserwacyjnymi” (takimi jak utrzymywanie nalotów farmy), które należy wykonać. Mówisz, że nie ma konfliktu, ale w żadnym dramacie MMO i drobna polityka jest nieunikniona (IMO to główna atrakcja), więc jestem pewien, że twoi gracze znajdą sposoby na uderzenie głową. W tego rodzaju grach większość nudy pochodzi z zadań „utrzymania” - gracze naprawdę chcą zrobić sojusze i grać w grę dyplomacyjną z rywalizującymi klanami, utrzymanie staje się wtedy rodzajem podatku, w którym trzeba się obudzić aż do alarmu w dziwnych godzinach, aby dostać się do tej zabawnej części dyplomatycznej. Wytnij więc nudę:

Takie podejście nie zawsze może niestety działać. Nie wszyscy gracze mają taką samą tolerancję na nudę lub tę samą koncepcję zabawy. Możesz mieć wybitną mechanikę, która spodoba się 99% graczy, ale 1% uważa za nudne. Co jeśli 1% zacznie pisać boty, rujnując zabawę dla 99%? Ale ostatecznie jest to kwestia stopnia. Nigdy nie możesz całkowicie usunąć botowania, ale możesz zminimalizować obrażenia.

Podcięte butelki

Wiele naprawdę negatywnych efektów botów pochodzi od autorów botów, którzy komercjalizują swoją pracę. Jeśli tak jest w twoim przypadku, możesz po prostu konkurować z botami. Wiele gier online opartych na czasie rzeczywistym ma już funkcje premium, które umożliwiają pomijanie czasu i automatyzację (takie jak rozbudowane kolejki kompilacji). Kwoty te stanowią oficjalny bot usankcjonowany przez programistę. Jeśli je posiadasz i odpowiednio je wycenisz, gracze kupią twoją premię zamiast kupować boty. Dobrą wiadomością jest to, że jesteś odpowiedzialny za API, więc zawsze masz silną przewagę w opracowywaniu wysokiej jakości automatyzacji własnej gry, więc tym razem jest to przegrana walka o dno.

Nie wyeliminuje to amatorów-amatorów, ani osób, które uważają, że twoja premia nie jest dobra w stosunku do ceny, więc ponownie skuteczność tego podejścia zależy od sytuacji.

Poszukaj ich ręcznie

Jak powiedziałem powyżej, to, co robisz, jest zasadniczo testem Turinga. Ponieważ interakcja z ludźmi jest znana jako trudne wyzwanie testowe Turinga, możesz spróbować to wykorzystać.

Ręcznie sprawdź graczy na najwyższym poziomie i sprawdź, czy znajdziesz coś podejrzanego. Może nawet uda ci się uciec od czasu do czasu sondowania ich w sposób ograniczony tylko do twojej wyobraźni, aby sprawdzić, czy możesz oszukać bota, aby zrobił coś, czego nie zrobiłby.

Chociaż trudno jest napisać algorytm, który niezawodnie wykrywa boty, nie jest tak trudne dla człowieka, aby nauczyć się je wykrywać. Myślę, że wiele gier przeglądarkowych korzysta z tej strategii i może być całkiem skuteczna. Wadą jest to, że albo musisz cały czas nudzić się, albo płacić mistrzom gry za regularny patrol bota.

Superbest
źródło
4
Wybrałem tę odpowiedź, ponieważ wydaje mi się ona najbardziej przemyślana, patrząc na pytanie o krok wstecz, od szczegółów technicznych. Długo myślałem o wyborze Adama Davisa, ponieważ zawiera on kilka bardzo dobrych pomysłów na temat „jak”.
Peter
1
@Alomvar Cieszę się, że było to pomocne. Ponieważ pytanie uzyskało tyle głosów, równie dobrze możesz umieścić link do swojej gry w swoim profilu :)
Superbest
2
Ugh, czy Travian wciąż tu jest? Grałem w to wiele lat temu, a potem przestałem, kiedy zdałem sobie sprawę, że rozgrywkę można w zasadzie sprowadzić do „oby zwycięstwa najlepszego socjopaty”.
Mason Wheeler,
25

Najlepszą i jedyną skuteczną obroną przed botami jest takie zaprojektowanie gry, aby gracze nie odczuwali potrzeby automatyzacji. Kiedy gracze automatyzują proste zadania, które w rzeczywistości nie wymagają umiejętności, jest to znak, że brakuje interfejsu użytkownika i zastępują brakującą funkcję interfejsu użytkownika.

  • Czy twoja gra zawiera powtarzające się zadania, w których gracz wykonuje tę samą akcję w celu grindowania?

    Spraw, aby te aspekty gry były mniej powtarzalne i bardziej interesujące do grania i ponownego grania.

  • Czy Twoja gra wymaga od graczy wykonywania czynności, które są dla nich niewygodne, np. W środku nocy lub w pracy?

    Pozwól im kolejkować zamówienia (np. „Kompiluj X1, potem X2, a następnie X3, zaczynając każde, gdy tylko zasoby będą dostępne”) lub planuj działania o określonych porach wcześniej (kompilacja X o 03:22).

  • Czy twoja gra wymaga od graczy działania w bardzo krótkim czasie?

    Pozwól im skonfigurować grę w taki sposób, aby działania te były uruchamiane automatycznie

    • gdy budynek X zostanie zniszczony, natychmiast go odbuduj.
    • Gdy ktoś zaoferuje zasób X za mniej niż Y pieniędzy, natychmiast kup do Z jednostek.
    • Automatycznie sprzedaj wszystkie zasoby X, gdy zapasy przekraczają Y jednostek, ale nie za mniej niż Z pieniędzy na jednostkę.

Monitoruj swoją społeczność. Kiedy zauważysz, że automatyzują cokolwiek innego, wykradnij pomysł i dodaj opcję automatyzacji do podstawowej wersji gry.

Philipp
źródło
5
To świetna sugestia, która również poprawia twoją grę i zmniejsza ryzyko, dzięki czemu Twoi gracze stają się bardziej podobni do botów. ;-) Jeśli bota jest świetnym graczem w twojej grze, być może gra powinna wymagać więcej ludzkiego myślenia. Nie zgadzam się, że jest to jedyna skuteczna obrona, ale zgadzam się, że jest to najlepsza ogólnie rzecz biorąc. +1
Dronz
7
Chociaż zgadzam się z duchem tego, niestety założenie, że możesz sprawić, że gra nie będzie nudna, jest błędem. Co jeśli 10 000 graczy lubi mechanikę X, ale 10 uważa, że ​​jest to żmudne i pisze boty, rujnując zabawę 10 000? Tak dzieje się w przypadku Aimbots w FPS: analogicznym rozwiązaniem byłoby zmniejszenie celowania, ale wielu graczy uwielbia doskonalić swoje umiejętności celowania. Tylko nieliczni odczuwają potrzebę aimbot.
Superbest
1
Naprawdę podoba mi się twoja sugestia, chciałbym, aby więcej gier zrobiło coś takiego zamiast prosić cię o bycie około 24/7, aby być wydajnym
meneldal
@Superbest faktycznie widzę rozwiązanie, w którym możesz zaprojektować celowanie, które jest ważniejsze, ale nadal trudne do botowania, aby było skuteczne, na przykład, jeśli zaprojektowałeś broń tak, aby miał małą szybkostrzelność i precyzyjne celowanie bardziej użyteczne, to gracze mogliby się połączyć botter, ponieważ nie może wystrzelić wystarczającej liczby kul dla każdego atakującego go gracza
Matthew Pigram
2
Właśnie o to chodzi! Jeśli istnieje skuteczna łatwa kliknięcie jednym przyciskiem w danym momencie X bota dla twojej gry, napisz go sam i daj go wszystkim! - Pozwól graczowi wcześniej zdecydować, co należy zbudować, gdy czas będzie gotowy ... Zabawa w grach polega na decyzjach!
Falco,
23

Nie narażaj swojej gry na ryzyko związane z Johnnym na miejscu

Po pierwsze, upewnij się, że gracze, którzy grają w twoją grę tylko przez dwadzieścia minut lub godzinę dziennie na jednym posiedzeniu, nie są w bardzo niekorzystnej sytuacji dla graczy, którzy pozostawiają ją otwartą w pracy i grają 16 godzin dziennie.

Może to wymagać zmiany w mechanice gry - na przykład przydziału ruchu, który wypełnia się, gdy nie grasz, i pozwala graczom wykonać wiele szybkich ruchów, gdy mogą grać, zamiast mechanizmu wymagającego ciągłej opieki.

To zniechęci twórców botów, ponieważ mogą nadążyć za grą i nie mają pilnej potrzeby tworzenia automatu, który wykonuje dla nich działania.

Wymagaj informacji o serwerze dla każdej akcji i spowolnij reakcje serwera

Gdy gracz gra w tę grę, prosi o stronę przedstawiającą interfejs użytkownika, z którym wchodzi w interakcję, aby wykonać ruch. Możesz wstawiać elementy, takie jak niewidoczne elementy formularza, które potwierdzają, że faktycznie najpierw poprosiły o stronę. Losowa liczba, którą serwer przechowuje wraz z identyfikatorem użytkownika i stroną, o którą ostatnio prosił. Gdy pojawia się akcja, serwer sprawdza, czy ten użytkownik zwrócił tę samą liczbę losową i wykonuje akcję na stronie, na której był ostatnio widziany. Oznacza to nie tylko, że bot musi wykonać dwa wywołania API dla każdej akcji, ale że zwykli użytkownicy nie mogą otwierać wielu stron i wykonywać sekwencyjnych szybkich akcji (jeśli jest to problem z twoim projektem).

Dwa wywołania API umożliwiają późniejsze spowolnienie botów. W końcu zobaczysz podejrzane wzorce i będziesz mógł je wykryć. Gdy serwer wykryje podejrzany wzorzec, może opóźnić odpowiedź API w pierwszym wywołaniu o sekundę - co zirytuje użytkowników, ale naprawdę spowolni boty. Ponadto, jeśli drugie żądanie powróci „zbyt szybko” (cokolwiek to oznacza dla Twojej gry), możesz je odrzucić lub ponownie załadować stronę z błędem w grze lub powodem żądania ponownego przesłania. „Nie możesz zbudować tego szybko. Nie spiesz się.” na przykład.

Słuchaj użytkowników, a przekonasz się, z czym są w porządku i co ich denerwuje.

Wykonuj ruchy i działania, które wymagają przemyślenia

JEŻELI gra jest prostym przyciskiem, nie możesz wiele zrobić z botami. Rozważ przeprojektowanie gry, aby sama gra wykonała test podobny do captcha.

Nie wiedząc nic o grze, nie mogę wiele sugerować. Jeśli wiąże się to z wyborem miejsca umieszczenia budynku, zaprojektuj interfejs, aby użytkownik mógł wybrać gdziekolwiek, nawet jeśli istnieją oczywiste miejsca, które nie działałyby. A może użytkownik musi poprawnie dopasować orientację, aby umieszczenie zakończyło się powodzeniem. Jeśli wiąże się to z wyborem akcji, dołącz dłuższą listę akcji, z których niektóre nie miałyby sensu w danej sytuacji.

Dołącz losowe, bardzo proste kontrole botów

Dodaj od czasu do czasu okno dialogowe „Jesteś pewien?” na przykład. Często zmieniaj pytanie i sformułowania i używaj go jako kontroli na miejscu dla botów.

Zmień interfejs API

Często zmieniaj interfejs API, zmuszając je do parsowania strony pod kątem poprawnych zmiennych i sposobu, w jaki są zwracane na serwer. Jeśli rozwijasz interfejs za pomocą szablonu, zastąp szablon kodem, który używa solonej wartości skrótu lub generatora zmiennych losowych dla każdej nazwy zmiennej. Następnie zacznij używać javascript do kodowania odpowiedzi i często zmieniaj to kodowanie. Prawdopodobnie możesz napisać oprogramowanie, które robi to wszystko za Ciebie i albo mieć wszystko losowo przez cały czas, albo po prostu zrobić statyczny szablon, który od czasu do czasu zmieniasz.

Adam Davis
źródło
Jeśli jego gra na przeglądarkę, interfejs API zmieni się i wszystko to nie będzie miało znaczenia. Chyba że jesteś skłonny zmienić cały tekst w kliencie również za każdym razem (byłoby to okropne dla graczy. Interfejs użytkownika zmienia się cały czas .. ugh ..) i jeśli Teksty się nie zmieniają, to bardzo trywialne jest znalezienie tekstu. Nawet z jQuery. Kiedy grałem w Traviana i miałem właśnie zaatakować, otworzyłem ogromne ilości kart, ustawiłem wszystkie informacje w gotowości, a gdy czas minął, przewijałem wszystko, klikając przycisk Prześlij. Nie botowanie, tylko szybkie, ale twoje opóźnienia API uderzyłyby mnie mocno.
Katu
1
@Katu W zależności od gry wiele elementów interfejsu użytkownika może już być obrazami. Zmiana nazw obrazów, zmiana skrótów pliku obrazu itp. Sprawi, że będzie to trudniejsze. Co najmniej zmuszasz ich do pobrania każdego elementu, aby dowiedzieć się, z czym sobie poradzić. Mogą użyć javascript, aby znaleźć element na wierzchu w danym miejscu na ekranie, a następnie spróbować go aktywować, ale nawet wtedy możesz to utrudnić, dzięki klientowi javascript zgłaszając lokalizacje kliknięć myszą zamiast kliknięć elementu.
Adam Davis,
@Katu Ostatecznie masz rację, można sobie z tym poradzić, ale jeśli zrobisz wystarczająco duży wysiłek, zmniejszysz liczbę osób chętnych do podjęcia wysiłku, co może być wystarczające.
Adam Davis
2
Problem z „przydziałem ruchu” polega na tym, że mówisz wszystkim swoim graczom, że mogą grać tylko 30 minut dziennie lub jak długo to zajmie, co ich irytuje, ogranicza przychody z reklam i stwarza ogromną pokusę. aby pozwolić im kupować więcej poprzez mikrotransakcje.
Random832
Zgadzam się z umiejscowieniem budynku i orientacją! To jednocześnie plus dla legalnych użytkowników i minus dla botów.
miva2
13

Nie możesz ich powstrzymać. Ale możesz sprawić, że ich życie będzie nieszczęśliwe, ponieważ będą musieli spędzać dużo czasu na pisaniu botów i aktualizowaniu ich. Musisz użyć wszystkiego, co musisz zweryfikować, czy użytkownik jest prawidłowy.

  • Sprawdź nagłówki żądań i odrzucaj żądania z niepoprawnymi wartościami. Ustaw niestandardowe sprawdzenie nagłówka dla istniejącego klienta użytkownika. Pewnie, że łatwo go pokonać, ale jeszcze łatwiej to sprawdzić. Jeśli botwriter nie ma doświadczenia, zastanowienie się nad tym może trochę potrwać! Twoim zadaniem jest zmusić jak najwięcej z nich do rezygnacji, prawda?
  • Prawdopodobnie masz jakiś podpis hash lub coś w swoich żądaniach, które są generowane po stronie klienta z jakąś funkcją. Więc zmieniaj to! Ustaw go jako osobny skrypt, którego nie można buforować, i zmieniaj go w losowych odstępach czasu. Wykonaj kilka z nich lub edytuj w locie, dodając losową sól do procesu mieszania. Choć znów jest to łatwe do przezwyciężenia, zmusi ich to do pilnowania twojej funkcji. Mogą także potrzebować pewnego rodzaju ciągłego strumienia wdrażania, aby użytkownicy byli na bieżąco. W przeciwnym razie ich boty zaczną wysyłać niepoprawnie zakodowane żądania. Możesz nawet zablokować użytkowników, którzy robią to zbyt często. Prawidłowi użytkownicy i tak będą się przemieszczać po twoim kliencie, więc od czasu do czasu będą pobierać funkcję skrótu. Pamiętaj tylko, aby zaktualizować również stronę serwera (backend oparty na skryptach naprawdę tu pomoże).
  • Śledź efektywność wykorzystania zasobów. Jeśli zostaną wydane natychmiast, gdy coś stanie się niedrogie, lub jeśli nowe naloty są zawsze wysyłane w ciągu 1-2 sekund od ostatniej, 24/7, masz do czynienia z jakimś hardcorowym graczem lub botem. Poprosisz captcha od takiej osoby i wymusisz jej wylogowanie. Jeśli nadal wysyła prośby po wylogowaniu (źle napisane boty!), To jest to bot. Jeśli spróbuje zalogować się wiele razy bez powodzenia, prawdopodobnie jest botem. Jeśli ponowne zalogowanie zajmie mu kilka godzin, może to być bot (w tym momencie bot może poprosić o pomoc człowieka, a właściciel może spać).
  • IP. Ten może wyeliminować sprzedaż botów. Jeśli ktoś napisze bota z myślą o $$$, może nie chcieć udostępniać źródła. Zamiast tego będą sprzedawać czas bota. Jeśli są chciwi, mogą korzystać z jednej maszyny, z jednym / kilkoma Ips. Oznacza to, że wielu użytkowników zacznie udostępniać IP. Jest to ryzykowne, ponieważ ten sam przypadek dotyczy osób, które współużytkują sieć. Będziesz musiał sprawdzić, czy któryś z poprzednich sprawdzeń zakończył się powodzeniem dla określonego adresu IP i ręcznie zdecydować, czy jest to legalna grupa użytkowników, czy armia botów.
Polan
źródło
5
Chociaż te pomysły są sprytne, nie tylko łatwo je pokonać, ale pokusiłbym się o napisanie bota po prostu dlatego, że pokonanie ich wydaje się tak zabawne, nawet jeśli nie dbałbym zbytnio o dobre wyniki w grze.
Superbest
1
Większość punktów jest bezużyteczna. Myślicie wstecz. Bez względu na to, co robisz ze wszystkimi skrótami, nagłówkami itp., „Link do zakupu aktualizacji dla mojej tawerny” musi działać, prawda? Teraz tworzę bota, który znajduje ten link, co 2 godziny klika go. Nie obchodzi mnie, jaką magię robisz za tym, ale mój bot klika to tak, jak zrobiłby to użytkownik. Wykorzystanie zasobów jest dobre, ale może wywoływać wiele fałszywych trafień, które wymagają ludzkiej pracy. IP .. Na przykład boty Travian (non-free) to niestandardowa przeglądarka internetowa, która wysyła wszystko z twojego adresu IP.
Katu
@Najlepsze tak, łatwo raz pokonać to bezpieczeństwo. Ale jeśli trochę się zmieni, będziesz musiał śledzić te zmiany i zaktualizować bota. Oznacza to spędzanie więcej czasu na pisaniu bota, aby spędzać mniej czasu na grze :). Bezcelowy.
Polan
@Katu masz rację, moje metody nie zatrzymają bota, który jest wtyczką do przeglądarki i po prostu klika klienta. Ale wszystko na zewnątrz może mieć problemy. Samo znalezienie linku i atakowanie powtórek nie zadziała, ponieważ skrót może wymagać znacznika czasu i znajomości częściowo tajnego klucza. Funkcja mieszania będzie się zmieniać co jakiś czas, więc jeśli nie masz interpretera javascript, będziesz musiał cały czas przepisywać swojego bota, aby uwzględnić te zmiany. Te metody nie powstrzymają ludzi przed pisaniem bota. Będzie to wymagało tylko ciągłej konserwacji, więc nie zaoszczędzisz tyle czasu na użyciu bota :).
Polan
2
@Polan Nie ma problemu, jeśli pisanie bota jest bardziej zabawne niż granie w pierwszej kolejności.
Superbest
8

Zasadniczo rozróżnianie botów od ludzi w pełni automatycznie jest trudne, najlepiej działa jakaś forma procesu decyzyjnego wspomaganego przez człowieka.

Co bym zrobił: zdefiniuj niektóre heurystyki, które sugerują, że użytkownik jest prawdopodobnie botem - wykonując wiele czynności, robiąc rzeczy 24/7, ... Jeśli te heurystyki przekroczą pewien próg, wykonaj inwazyjne sprawdzenie.

Możesz ręcznie zeskanować aktywność graczy i sprawdzić, czy wydaje się to w porządku. Lub zrobisz captcha, gdy użytkownik będzie online. Lub (jeszcze silniejszy) po prostu wyślij mu wiadomość na czacie, w której wyjaśnisz, że podejrzewasz, że jest botem i chcesz, aby odpowiedział czymś w rodzaju człowieka, aby udowodnić, że nie jest botem (jak minął dzień? Jaki jest twój ulubiony film? ... - możesz mieć ich kilka). Jeśli w ogóle nie odpowiada, prawdopodobnie jest botem. Jeśli on odpowie, ręcznie sprawdzisz odpowiedzi pod kątem podobieństwa do ludzi i zablokujesz roboty. Jeśli Twoja heurystyka jest rozsądna, tylko niewielka część użytkowników zostanie przesłuchana, a liczba odpowiedzi na skanowanie będzie niewielka. A jeśli zachowasz prywatność i zmienność zestawu pytań, roboty nie będą mogły zostać przygotowane, chyba że ktoś wymyśli SkyNet.

Martin Modrák
źródło
8
Kiedy Skynet po raz pierwszy stał się samoświadomy, wszyscy zakładali, że będzie próbował przejąć światowe siły zbrojne. Nie wiedzieli, że jedynym celem jest zdominowanie gospodarki ulubionej gry MMO. W ten sposób uniknięto wielkich wojen między ludzką AI, kierując ich agresywne ambicje w miejsce, w którym można wyrządzić ograniczone szkody.
Dan Bryant
1
Problem z wiadomościami polega na tym, że botter może łatwo logować się, aby grać codziennie i uruchamiać go na tym samym koncie, aby zająć się pracą. Bot zignoruje wiadomość, człowiek odpowie następnego dnia rano i ciężko jest ukarać gracza za odpowiedź o kilka godzin za późno na wiadomość wysłaną w środku nocy.
Superbest
@ Superbest Jeśli bot nadal próbuje grać, gdy człowiek śpi, masz całkiem niezłą wskazówkę, że to bot. Problem z zadawaniem pytań polega na tym, że gracz nie mówi po angielsku?
Loren Pechtel
@LorenPechtel Cóż, skąd będziesz wiedzieć, kiedy śpią? Istnieje wiele osób z bardzo nietypowymi harmonogramami snu. To, że nie odpowiedzieli, nie oznacza, że ​​to był bot, może po prostu nie mieli ochoty odpowiadać i postanowili to zrobić później. Jeśli chodzi o język, prawdopodobnie gracz mówi w języku, w którym gra, w przeciwnym razie jak zgodziłby się na zasady lub Warunki? Nie to, że trudno odróżnić bota od obcokrajowca w rozmowie.
Superbest
@ Superbest Mam wrażenie, że gra nie będzie kontynuowana, dopóki pytanie pozostanie bez odpowiedzi. Jeśli nadal wysyłają daremne polecenia, jest całkiem prawdopodobne, że robi to bot.
Loren Pechtel
8

Ogarnij go. Zbudowałeś spokojny interfejs API, idealny dla programisty do eksperymentowania z automatyzacją twojej gry. Zaprojektuj swoją grę tak, aby bot nie zyskał przewagi nad człowiekiem z powodu automatyzacji - wyeliminuj zalety szybkości wykonywania itp., Które ma maszyna; zaprojektuj swoją grę, aby bot zapewniał takie same dochody jak ludzki gracz, jeśli to możliwe - lub przynajmniej zapewni bogatsze środowisko, aby przyciągnąć więcej ludzkich graczy.

Pytanie brzmi: dlaczego ludzie tworzą boty dla twojej gry i czy zapłacą za przywilej?

MatthewToday
źródło
4

Nie neccessarily zgadzam się z odpowiedziami soft-naukowych, ale nie sprawy techniczne, które można zrobić , aby wykryć botterów i niektóre rzeczy, które sprawiają, że życie po prostu trudniejsze dla nich.

  • Oceniaj konta według tego, na ile podejrzewasz, że używają bota. Wpłynie to na kilka innych technik i ochroni prawowitych użytkowników przed twoim gniewem.

  • Obracanie klucza cookie sesji. Dzięki temu bot zachowuje pliki cookie, ale znacznie utrudnia dzielenie się plikami cookie między przeglądarką a botem (co jest bardzo przydatne podczas opracowywania i testowania).

  • Ogranicz niektóre działania. Wypracuj jak najszybciej możesz coś zrobić i monitoruj, jak szybko robią to boty. Warto też prowadzić dziennik i opracowywać standardowe odchylenia. Nawet jeśli ktoś robi coś co 10 sekund, jeśli robi to dokładnie co 10 sekund, prawdopodobnie jest botem. Zmodyfikuj ich ocenę i wyloguj się.

  • Utrudnij logowanie na kontach, które podejrzewasz, że mogą być botem. CAPTCHA, pytania i inne nieuniknione rzeczy znacznie utrudniają potencjalnemu botterowi automatyczne pisanie skryptów.

  • Monitoruj ruch myszy / strony. W przypadku javascript jest to dość proste, ale boty nie będą organicznie poruszać myszką. Jeśli nie ma żadnych „kliknięć”, mogą być mobilne lub być botem. Zbadać. Jest jednak dużo danych do zarejestrowania ... Możesz więc zarezerwować to dla kont, które już uruchomiły poprzednie kroki.

  • Twórz narzędzia do łączenia kont według zachowania, adresu IP, sekwencji działań, rytmu akcji. Jeśli zamierzasz banować ludzi, upewnij się, że masz narzędzia do ręcznej weryfikacji ich wykroczeń.

  • Odwracaj schemat URL, zmienne CSRF itp. I rób to często. To duży krok i prawdopodobnie wymaga więcej pracy z góry niż kiedykolwiek będzie to warte, ale przynajmniej konta, które nagle przestają działać (lub wciąż wbijają stare adresy URL i wysyłają stare nazwy zmiennych - zaloguj się!) wymagają zwiększenia poziomu indeksu bota.

Oli
źródło
3

Czy rozważałeś uczynienie botów integralną częścią gry? Robotom trudno jest zrujnować grę dla wszystkich innych, jeśli wszyscy są zachęcani do ich tworzenia. Dodaj obsługę skryptów i nagle dynamikę zmian w grze - od ręcznych strategii zarządzania zasobami po strategie projektowania botów.

Kenneth Cochran
źródło
3

Utwórz osobny serwer tylko dla botów. Utwórz tabelę wyników i świętuj zwycięzców. Spójrz na dane, które to generuje. Zakazuj użytkownikom normalnych serwerów, których profil zachowania wygląda jak bot.

przypuszczenia
źródło
2

Cokolwiek robisz, pamiętaj, aby NIE sprawiać, aby prawdziwy gracz był bardziej denerwujący! Wiele odpowiedzi, które widziałem (wolniejsze wyniki na stronie, niedozwolone otwieranie wielu stron w celu ułatwienia szybszego wprowadzania itp.) Również uniemożliwiłyby legalnym graczom szybkie robienie rzeczy, co po prostu niepotrzebnie ich frustruje.

imho najłatwiejszym rozwiązaniem może być zastosowanie inżynierii społecznej do problemu: 1) dodaj wyraźną klauzulę NO-BOT do swojego TOS i dodaj, że wykrycie aktywności bota spowoduje usunięcie gracza z listy najlepszych wyników (lub oznaczenie „cheater” „dołączone, więc ludzie nie są tak sfrustrowani; jeśli pójdziesz tą drogą, pozwól, aby ludzie ukrywali oszustów).

2) sprawdź zachowanie podobne do botów (np. Regularnie wysyłane pingi do serwera lub zbliżone do idealnego taktowanie przez wiele godzin z rzędu), a jeśli tak, to przełącz konto w „tryb bota” - wyświetlaj od czasu do czasu captchas i tak dalej . jeśli zostaną one zignorowane, ale gracz będzie aktywnie grał, oznacz gracza jako „bota” i wyklucz go z rankingu. jeśli są zaadresowane, oznacz go jako „gracza mocy” i zdejmij z listy botów.

w ten sposób ogromna większość graczy nigdy nie zostaje dotknięta, gracze hardcore pozostają pod wpływem krótkotrwałego działania, a boty nie „niszczą gry” dla nikogo innego.

TI Troll
źródło
Co jeśli mocny gracz zdecyduje się na bot? Nie sądzę, aby „oznaczanie” odtwarzacza było czymś sensownym, jest bardzo użyteczne. Po prostu graj dużo przez kilka dni, a potem, gdy zdobędziesz flagę, odpal bota i nigdy nie daj się złapać
Dan Pantry