Çevrimiçi oyun API'sinin kötüye kullanımı (botting) nasıl tespit edilir ve önlenir?


49

Zaman zaman boş zamanlarımda bir oyun fikri üzerinde çalışıyordum. Oyun ve içerik, iyi kurulmuş web teknolojileri ile oluşturulmuş bir çevrimiçi çok oyunculu oyun olarak uygulanmasını sağlıyor. Strateji ve simülasyon türüne düştüğünü bilmelisin. Bunun anlamı: Karakterlerle ya da benzerleriyle dolaşmak yok ama sadece "X konumunda A şeyi oluştur" gibi sadece atomik eylemler (müşteri-sunucu iletişimi ile ilgili).

Bir noktada farkettim ki çok büyük bir sorun var: REST API arka ucuna dayanan bir tarayıcı tabanlı ön uca sahip olmak, onu botlar için mükemmel bir hedeften daha fazlasını yapıyor. Otomasyon iş için arzu edilirken eğlence ile ilgili bir oyuna zehirdir. Geçmişte bir tarayıcı oyununda ilk elden tecrübe edindiğimde en başarılı oyuncular herkesi zedeleyen robotlardı.

Mevcut bakış açımdan REST API'sine dayanan çok oyunculu bir çevrimiçi oyun oluştururken botlara karşı korunma ihtimalini göremiyorum. İstisna: Açık kaynaklı hale getirme, böylece herkes özel gruplar ve hatta kendileri için kendi örneğini (botlarla gerizekalılar tarafından rahatsız edilemez) barındırabilir.

Bir sonraki olası eylem için alarm ayarlayan dürüst bir oyuncu ile görünmesi için her şansı otomatik olarak alan bir bot arasında fark yaratmanın bir yolu var mı? Captchas gibi bu tür gösteri tıpaları yanında. Olmazsa, istemci-sunucu iletişimi (yerel bir kod istemcisindeki özel şifreli ikili protokolü) ile uğraşmayı en az zorlaştıran başka bir teknoloji yığını hakkında düşünürdüm.

Düzenleme : Teşekkürler, cevaplarınız ilham vericidir ancak oyunun ayrıntılarına girerek belirli önlemler alınamayacağını da fark etmemi sağladı. Ancak, bu Stack Exchange'de bir soru için çok fazla olurdu. Bu yüzden sadece en önemli noktalara dikkat çekmek istiyorum:

  • Oyuncular istedikleri zaman keşfediyor, geliştiriyor ve yönetiyorlar. İşleri çevrimdışı olduklarında hala iyi çalışıyorlar (bu barışçıl bir oyundur, silah içermez). Sadece genişleme ve ilerleme, oyuncuların harekete geçmesine ihtiyaç duyar. Bu eylemler aşağıdakilerle sınırlıdır:
  • Zaman önemli kaynaklardan biridir (EVE Online beceri eğitiminde olduğu gibi). Oyunda tüm işlemler gerektirir. 7 gün 24 saat çevrimiçi olmanın anlamı yok. Ortalama bir oyuncu, bir veya iki seansta her gün bir saatten fazla olmamak üzere başarılı bir şekilde çalışmalıdır ( kabaca hala konsept geliştirme aşamasındadır).

9
Oyunu, başkalarının programlama veya bot satın alma işleminin insan oyuncuların eğlencesini mahvetmeyeceği şekilde yapamaz mısınız? İkincisi, bir oyun oynamak için bir bot / AI programlamak kendi başına eğlenceli olabilir; başka bir eğlenceyi mahvetmemeli.
Kasper van den Berg

26
"otomasyon [...] eğlenceli olan bir oyunun zehiridir." Kesinlikle katılmamak. Oyununuz gerçekten eğlenceliyse, neden sahip olmadıkları kısımları atladıkları için oyuncuları cezalandırıyorsunuz? Oyununuzdaki unsurlar çok sıkıcıysa, oyuncular oynamayı tercih etmiyor ve bir senaryoyu ele geçirme arzusunu hissedebiliyorlarsa, çözülmesi gereken asıl sorun budur.
Marcks Thomas

6
Onlar kalmamak oyuncuya araçları sağlar: Sizin örnek kolay bir yanıtı vardır gerek bir bot. örneğin, tam bir anda çevrimiçi olmalarını teşvik etmek yerine bir eylemi sıraya sokmalarını ya da onlar için yapacak bir araç almalarını / yapmalarını sağlayın.

4
İnsanların bot kullanmasının temel nedeni, oyunun bazı bölümlerinin sıkıcı ve onlar için sıkıcı olmasıdır (eğer eğlenceli olsaydı sadece oynarlardı). Açıkça, oyuncularınız rekabetten ve mücadele etmekten keyif alıyor, ancak otomatik oynanabilir oyun değil. İnsanların üstesinden gelmek için bot kullandıkları kısımları kaldırmak için oyun tasarımını değiştirmeyi deneyebilir veya yalnızca bir oyuncunun verebileceği daha zor ve anlamlı kararlar vermek için oyununuzu yeniden dengeleyebilirsiniz ve bir bot (örneğin, derin stratejik seçimler gibi) . Aksi takdirde, bir silahlanma yarışına mahkum olacaksınız ve botters kazanacak.
Superbest

6
tl; dr: İnsanlar alarma sahip bir adama karşı yarışmaktan hoşlanmayacak ve bir işi olmayan bir botla olandan daha fazla bir işi olmayacak - ve bu onları botları çalıştırmaya itecek.
Random832,

Yanıtlar:


50

Eğer insanlar bot çekmek isterse, onları gerçekten durdurabileceğinizi sanmıyorum.

Tabii ki, çok fazla ya da daha az acı çekerek botting yapan birçok önlem uygulayabilirsiniz. Ancak, kod tabanınız korumak için cehenneme giden, hataya açık ve meşru kullanıcıları rahatsız eden devasa bir karmaşaya dönüşmeden önce bu kadar çok şey yapabilirsiniz. Bu arada botlar her zaman karşı önlemlerinizi yenmenin bir yolunu bulacak:

  • Onlardan daha çok var
  • Ellerinde daha fazla boş zamanları var (gerçek gelişim ve bot prova arasında zaman ayırmanız gerekir, tüm gün boyunca bot kodlarını kırabilirler)
  • Siz tuhaf, zorlu güvenceler yaratırken, bot yazarlarınızı daha da teşvik edeceksiniz çünkü bot korumanızı bozmak eğlenceli
  • Ticari olarak botlardan kâr elde eden bir karaborsa varsa, bot yazmak zorlaşırsa, daha değerli çalışan botlar olur, bu yüzden botlamayı teşvik edersiniz

Temelde botlarla bir silahlanma yarışında mahsur kalacaksınız ve yukarıdaki noktaların çizgileri boyunca mantığa ve bu tür oyunlarla olan deneyimime dayanarak dayanamayacaksınız.

Bazı oyun geliştiricileri, son derece agresif hile karşıtı önlemleri kullanıyor: Örneğin, Steam, hackleri aramak için hafızayı ve dosya sistemini tarar ve suçlular yüzlerce dolar değerindeki hesapları kaybederek cezalandırılabilir. Oysa Steam oyunları için hala botlar ve diğer saldırılar var, hatta bazıları bile yarı zamanlı çalışıyor. Bunların aksine, kullanıcıya tamamen açık olan ve kullanıcıların bilgisayarı üzerinde kontrol sahibi olmayan bir API'niz var. Baştan beri yokuş yukarı bir savaş.

Çözmeye çalıştığınız sorun aslında bir Turing sınavıdır: Çok kolay bir Turing sınavı dışında, çünkü dil gibi zor bir AI problemi gerektirerek hile yapamazsınız. Ne kadar buluşsal buluş oluşturursanız olun, bir botterin botun hareketine neredeyse tamamen bir insanı taklit etmesi için biraz rastlantısallık katması önemsizdir. Bot saatini biraz oynamanı ve tıpkı senin gibi eylemleri nasıl zamanlayacağını öğrenmek bile zor olmazdı. Eğer bot ban Sonra, botter o (sadece özel bir oyuncu nasıl forumunda büyük rant mevkilere belki bir size karşı kollarında artacak sert oyuncuların ve çekirdek kitlesi aslında bir yanlış pozitif).

Oyunu bot için çok eğlenceli hale getirin

Birisinin bot kullanmasının asıl nedeni, atlamak istedikleri oyunun bir bölümünün olmasıdır. Oyundan zevk aldılar ve eğlenceli buldularsa, botun oynamasını istemezlerdi, kendileri oynarlardı.

Ama oyun çok sıkıcıysa neden oynuyorsun? Muhtemelen, oyunun bazı kısımları eğlenceli olan kısımlara ulaşmak için sıkıcı ve zorunludur. Mesela, MMO'larda herkes bir seviyeye çıkmayı seviyor, ama hiç kimse XP'yi almak için 42.324 cüretkâr fare sıçanı öldürmek istemiyor. Böylece botun eğlenceli kısmını oynamak için öğütmesine ve yere düşmesine izin verdiler.

Bu, sizin veya oyununuzun bir eleştirisi değildir, ancak en azından bazı oyuncular oyununuzun bazı bölümlerini sıkıcı bulmaktadır. Bu sıkıcı kısımları azaltıp azaltamayacağınızı görmeli ve daha zor, anlamlı kararlar eklemeye çalışmalısınız: Botlar, insan zekasına kıyasla derin strateji veya yanal düşünmede iyi değildir ve ayrıca insanlar zor oyun kararları almaktan zevk alırlar.

Açıklamanızdan, bunun Travian'a benzer bir tarayıcı oyunu olduğu izlenimini edindim, burada tek bir en iyi yapı sırasına sahip bir yapı sırası ve yapılması gereken bazı "bakım" (tarımsal baskınları devam ettirmek gibi) görevleri var. Çatışma olmadığını söylüyorsunuz, ancak herhangi bir MMO tiyatrosunda ve küçük politikasında kaçınılmazdır (IMO bu ana cazibe merkezidir), bu nedenle oyuncularınızın kafaları kıstırmanın yollarını bulduğundan eminim. Bu tür oyunlarla, birçok "todyum" bu "bakım" görevinden geliyor - oyuncuların gerçekten yapmak istediği şey ittifaklar kurmak ve rakip klanlarla diplomasi oyununu oynamak, bakım sonrasında uyanmanız gereken bir çeşit vergi haline geliyor tuhaf saatlerde bir alarma kadar bu eğlenceli diplomatik bölüme girmek için izin. Öyleyse tediyumu kesin:

Bu yaklaşım ne yazık ki her zaman işe yaramayabilir. Tüm oyuncular, tiranlığa veya aynı eğlence kavramına karşı aynı tolerans göstermezler. Oyuncularınızın% 99'unun eğlendiği, ancak% 1'inin sıkıcı bulduğu belirgin bir tamirciniz olabilir. % 1 daha sonra% 99 için eğlenceyi mahvederek, bot yazmaya başlarsa? Fakat nihayetinde bu bir derece meselesidir. Botları asla tamamen çıkartamazsınız, ancak hasarı en aza indirebilirsiniz.

Undercut botters

Botların gerçekten olumsuz etkilerinin çoğu, çalışmalarını ticarileştiren bot yazarlarından geliyor. Eğer durum buysa, botlarla rekabet edebileceksiniz. Pek çok gerçek zamanlı tabanlı çevrimiçi oyun zaten zaman atlama ve otomasyona olanak veren premium özelliklere sahiptir (uzatılmış yapı kuyrukları gibi). Bu bir geliştirici tarafından onaylanmış resmi bot için tutar. Bunlara sahipseniz ve bunları uygun şekilde fiyatlandırırsanız, oyuncular bot satın almak yerine primlerinizi satın alırlar. İyi haber şu ki, API'nin sorumluluğu size aittir, bu yüzden kendi oyununuz için kaliteli otomasyon geliştirme konusunda her zaman güçlü bir avantaja sahip olursunuz, bu yüzden botlar için kaybedilen bir savaş.

Bu, amatör botları ya da priminizin para için iyi bir değer olmadığını düşünen insanları ortadan kaldırmayacaktır, bu nedenle bu yaklaşımın etkinliği duruma bağlıdır.

Onları elle arayın

Yukarıda söylediğim gibi, yaptığınız şey aslında bir Turing testidir. İnsanlarla etkileşimin ünlü bir zorlu Turing sınavı zorluğu olduğu kabul edildiğinden, bu avantajdan yararlanmaya çalışabilirsiniz.

Üst seviye oyuncuları manuel olarak inceleyin ve şüpheli bir şey bulup bulmadığınızı görün. Hatta botun yapamayacağı bir şeyi yapması için kandırıp kandıramayacağınızı görmek için ara sıra onları yalnızca hayal gücünüzle sınırlı yollarla sorgulayabilirsiniz.

Botları güvenilir bir şekilde algılayacak bir algoritma yazmak zor olsa da, bir insanın onları nasıl tespit edeceğini öğrenmesi o kadar zor değildir. Bence pek çok tarayıcı oyunu bu stratejiyi kullanıyor ve bu oldukça etkili olabilir. Dezavantajı, ya her zaman çok sıkıcı işler yapmanız ya da normal bot devriyesi yapmak için oyun ustalarına para ödemeniz gerektiğidir.


4
Bu cevabı seçtim, çünkü soruya teknik adımlardan uzakta bir adım geriye bakarak en çok düşündüğüm gibi görünüyor. Adam Davis'i seçmeyi uzun zamandır düşünüyordum çünkü “nasıl yapılır” hakkında çok iyi fikirler içeriyordu.
Peter,

1
@Alomvar Yardımcı olduğuna sevindim. Bu soru çok oy
topladığından

2
Uh, Travian hala buralarda mı? Yıllar önce oynadım, sonra oyunun temelde “en iyi sosyopat kazananı olabilir” diye kaynatılabileceğini fark ettiğimde durdum.
Mason Wheeler

25

Botlara karşı en iyi ve tek etkili savunma oyununuzu oyuncuların ilk etapta otomatize etme ihtiyacı hissetmeyecek şekilde tasarlamaktır. Oyuncularınız aslında beceri gerektirmeyen basit görevleri otomatikleştirdiğinde, kullanıcı arayüzünüzün eksik olduğuna ve eksik oldukları bir UI özelliğinin yerini aldığına dair bir işarettir.

  • Oyununuzda, oyuncunun öğütmek için aynı işlemi tekrar tekrar yaptığı yerde tekrarlayan görevler var mı?

    Oyununuzun bu yönlerini daha az tekrarlayan ve oynamak ve yeniden oynamak için daha ilginç hale getirin.

  • Oyununuz, gecenin ortasında veya işte oldukları gibi oyuncuların kendileri için uygun olmayan eylemler gerçekleştirmelerini gerektiriyor mu?

    Siparişleri sıraya sokmalarına izin verin ("X1'i inşa et, sonra X2'yi, sonra X3'ü, her biri kaynaklar kullanılabilir olduğunda başlar" "gibi) veya belirli zamanlarda önceden eylemleri zamanla (3: 22: 00'da X inşa et).

  • Oyununuz, oyuncuların çok kısa bir süre içerisinde olaylara etki etmelerini gerektiriyor mu?

    Oyunu, bu eylemleri otomatik olarak tetiklenecek şekilde yapılandırmalarına izin verin

    • X binası yıkıldığında, derhal yeniden oluşturun.
    • Birisi Y parasının altındaki bir X kaynağını teklif ettiğinde, hemen Z birimini satın alın.
    • Hisse senedi Y birimini aştığında tüm X kaynağını otomatik sat, ancak birim başına Z parasının altına düşmez

Topluluğunu izle. Başka bir şeyi otomatikleştirdiklerini fark ettiğinizde, fikri çalın ve onu ana oyuna otomatikleştirme seçeneğini ekleyin.


5
Bu aynı zamanda oyununuzu daha iyi hale getiren ve oyununuzun daha bot benzeri hale gelmesi riskini azaltan harika bir öneridir. ;-) Bot olmak oyunun harika bir oyuncusuysa, belki de oyun daha fazla insan düşünmesini içermelidir. Bunun tek etkili savunma olduğu konusunda hemfikir değilim, ancak bunun en iyisi olduğu konusunda hemfikirim. +1
Dronz

7
Bunun ruhu ile aynı fikirdeyim, maalesef oyunu sıkıcı değil yapabileceğiniz öncül bir yanlıştır. Peki ya oyuncuların 10.000'i X tamircisini seviyorsa, ancak 10'u 10.000'in eğlencesini bozan sıkıcı buluyor ve bot yazıyorsa? FPS'lerde amaçların başına gelenler budur: Analog çözüm, amacı daha az hedeflemektir, ancak birçok oyuncu hedefleme becerilerini mükemmelleştirmeyi sever. Amaç yapmanın gerekliliğini hisseden sadece birkaçı.
Superbest

1
Önerinizi gerçekten çok seviyorum, keşke daha fazla oyunun 7 gün 24 saat etkin
olmanızı

@Superbest aslında daha etkili olmayı amaçlayan ama yine de zorlu olmayı hedefleyen bir tasarım görebilirim, örneğin silahları düşük ateş hızına sahip olacak şekilde tasarladıysanız ve kesin olarak daha iyi nişan almayı seçtiyseniz, oyuncular bir araya gelebilir. botter ona saldıran her oyuncu için yeterince mermi
alamaması nedeniyle

2
Bu tam olarak nokta! Eğer etkili bir kolay tıklama-bir-düğme varsa, X bot size oyun için mümkün, o zaman kendiniz yazın ve herkese verin! - Bir oyuncunun önceden karar vermesine izin verin, zaman hazır olduğunda ne yapılmalı ... Oyunlarda Eğlence kararlarla ilgilidir!
Falco

23

Oyununuzu olay yerindeki johnny efor çabalarına karşı savunmasız bırakmayın

İlk olarak, oyununuzu yalnızca yirmi dakika veya günde bir saat boyunca tek bir oturuşta oynayan oyuncuların, işte açık bırakıp günde 16 saat oynayan oyunculara büyük bir dezavantajı olmadığından emin olun.

Bu, oyun mekaniğinizde bir değişiklik gerektirebilir - örneğin, oynamadığınız zamanlarda doldurulan ve oyuncuların sürekli oynama gerektiren bir mekanizma yerine, oynayabildikleri zaman çok hızlı hamle yapmalarına izin veren bir hareket tahsisatı gerektirebilir.

Bu, bot üreticilerini engelleyecektir çünkü oyuna ayak uydurabilirler ve onlar için eylemler gerçekleştiren bir otomat yapmaya acil bir ihtiyaç duymazlar.

Her işlem için sunucu bilgisi iste ve sunucu yanıtlarını yavaşlat

Bir oyuncu oyunu oynadığında, hamlelerini yapmak için etkileşime girdikleri kullanıcı arayüzünü sunan bir sayfa ister. İlk olarak sayfayı gerçekten istediklerini doğrulayan görünmez form öğeleri gibi öğeler ekleyebilirsiniz. Sunucunuzun kullanıcı kimliği ile birlikte depoladığı ve en son hangi sayfayı istediklerini belirleyen rasgele bir sayı. Bir eylem girdiğinde, sunucu bu kullanıcının aynı rasgele sayıyı döndürdüğünü ve en son gördükleri sayfada bir işlem gerçekleştirdiğini doğrular. Bu, sadece botun her eylem için iki API çağrısı yapması gerektiği anlamına gelmez, aynı zamanda normal kullanıcıların birden fazla sayfa açıp sıralı hızlı eylemler gerçekleştirememesi anlamına gelir (bu, tasarımınızla ilgili bir sorunsa).

İki API çağrısı daha sonra botları yavaşlatmak için bir yol sunar. Sonunda şüpheli kalıpları göreceksiniz ve onları ele alabileceksiniz. Sunucunuz şüpheli bir model tespit ettiğinde, ilk çağrıda API yanıtını bir saniye geciktirebilir; bu da kullanıcıları rahatsız eder, ancak botları yavaşlatır. Ayrıca, ikinci istek "çok hızlı" olarak geri dönerse (oyununuz için ne anlama gelirse), o zaman reddedebilir veya oyun içi bir hata ya da yeniden gönderim isteğinde bulunma nedeni ile sayfayı yeniden yükleyebilirsiniz. "Bunu hızlı bir şekilde yapamazsın. Lütfen zaman ayırın." Örneğin.

Kullanıcılarınızı dinleyin, neyin iyi olduğunu ve onları neyin rahatsız ettiğini göreceksiniz.

Hamle yapmak ve eylemler düşünce gerektirir

Oyun basit bir düğme tıklayıcı ise, o zaman botlar hakkında çok fazla şey yapamazsınız. Oyununuzu yeniden tasarlamayı düşünün, böylece oyunun kendisi captcha benzeri bir test gerçekleştirir.

Oyun hakkında hiçbir şey bilmeden, fazla bir şey öneremem. Bir binanın nereye yerleştirileceğini seçmeyi içeriyorsa, arayüzü işe yaramayacak açık yerleşimler olsa da kullanıcının herhangi bir yeri seçebileceği şekilde tasarlayın. Veya belki de yerleşimin başarılı olması için kullanıcının yönlendirmeyi doğru şekilde eşleştirmesi gerekir. Bir eylem seçmeyi içeriyorsa, bazıları belirli bir durumda bir anlam ifade etmeyecek daha uzun bir eylem listesi içerir.

Rastgele çok basit bot kontrollerini dahil et

Arada bir iletişim kutusu ekleyin, "Emin misiniz?" Örneğin. Soruyu değiştirin ve sık sık ifadeler kullanın ve botlar için nokta kontrolü olarak kullanın.

API'yi değiştirin

API'yi sık sık değiştirerek, onları doğru değişkenler için web sayfasını gerçekten ayrıştırmalarını ve web sunucusuna nasıl döndürülmelerini sağlayın. Arabiriminizi bir şablon kullanarak geliştiriyorsanız, şablonu her bir değişken adı için tuzlu bir karma veya rasgele değişken üreticisi kullanan kodla değiştirin. Sonra yanıtları kodlamak için javascript kullanmaya başlayın ve bu kodlamayı sık sık değiştirin. Muhtemelen bütün bunları sizin için yapan ve her zaman rastgele olan her şeye sahip olan bir yazılım yazabilir veya yalnızca ara sıra değiştirdiğiniz statik bir şablon yapabilirsiniz.


Onun tarayıcı oyunu, API değişirse ve bunun önemi yoktur. Her zaman müşterideki tüm metni de değiştirmek istemezseniz (Bu oyuncular için korkunç olurdu. Kullanıcı arayüzü her zaman değişir .. ugh ..) ve Metinler değişmiyorsa, metni bulmak çok önemsizdir. Sadece jQuery ile bile. Travian oynadığımda ve saldırmak üzereyken büyük miktarda sekme açtım, tüm bilgileri hazır hale getirdim ve zaman dolduğunda, gönder düğmesine tıklayarak her şeyi gözden geçirdim. Hızlı değil, sadece hızlı, ama api gecikmeleriniz beni çok zorlardı.
Katu

1
@Katu Oyuna bağlı olarak, UI öğelerinin çoğu zaten görüntü olabilir. Resim adlarını değiştirmek, resim dosyasını biraz değiştirmek, vb. Değiştirmek daha zorlaştırır. En azından onları neyle uğraşacağını bulmak için her elemanı indirmeye zorluyorsun. Ekrandaki belirli bir konumda en çok hangi öğenin bulunduğunu bulmak için javascript'i kullanabilirler ve daha sonra bunu etkinleştirmeyi deneyebilirler, ancak o zaman bile javascript istemcisinin tıklama tıklamaları yerine fare tıklaması konumlarını rapor etmesini zorlaştırabilirsiniz.
Adam Davis

@Katu Nihayetinde haklısın, bununla başa çıkabilirsiniz, ancak çabayı yeterince gerekli kılarsanız, çabaya katılmak isteyenlerin sayısını azaltabilirsiniz, bu da yeterli olabilir.
Adam Davis,

2
"Tahsis etme hamlesi" ile ilgili sorun, tüm oyuncularınıza günde sadece 30 dakika boyunca oynayabileceklerini veya bunun kadar uzun sürdüğünü, ancak onları rahatsız eden, reklam gelirinizi sınırlayan ve büyük bir cazibe yaratan sürdüğünü söylemenizdir . mikro dönüşümlerle daha fazla satın almalarını sağlamak için.
Random832,

Bina yerleşimi ve oryantasyonu kabul ediyorum! Aynı zamanda meşru kullanıcılar için bir artı ve botlar için bir negatif.
miva2

13

Onları durduramazsın. Ancak, botlarını yazmak ve güncellemek için çok zaman harcamak zorunda kaldıklarından, yaşamlarını perişan edebilirsiniz. Kullanıcının geçerli olup olmadığını doğrulamak için ne gerekiyorsa kullanmalısınız.

  • İstek başlıklarını kontrol et ve istekleri geçersiz değerlerle reddet. Her ikisi de, var olan user-agent benzeri bir kullanıcı denetleyicisi ayarlayın. Bunun üstesinden gelmek kolay, ancak kontrol etmek daha kolay. Botwriter tecrübesiz ise, düşünmesi biraz zaman alabilir! Senin görevin, birçoğunun doğru pes etmesi için zorlamak mı?
  • Muhtemelen bazı fonksiyonlarla müşteri tarafında üretilen taleplerinizde bir çeşit karma imzası veya bir şeyler vardır. Öyleyse değiştirmeye devam et! Ayrı önbelleklenebilir olmayan bir komut dosyası yap ve rastgele aralıklarla değiştir. Karma işlemine rasgele tuz ekleyerek bunlardan birkaçını yapın veya anında düzenleyin. Yine de, üstesinden gelmek kolay olsa da, bu onları işlevlerine göz kulak olmaya zorlar. Ayrıca kullanıcıları güncel tutmak için bir çeşit sabit dağıtım boru hattına ihtiyaçları olabilir. Aksi takdirde, botları hatalı karma istekleri göndermeye başlayacaktır. Çok sık yapan kullanıcıları bile yasaklayabilirsiniz. Geçerli kullanıcılar yine de istemcinizin etrafında hareket eder, bu nedenle her zaman ve sonra karma işlevini sıfırlar. Yalnızca sunucu tarafını da güncellemeyi unutmayın (komut dosyası tabanlı arka uç burada gerçekten yardımcı olacaktır).
  • Kaynak kullanım verimliliğini takip edin. Anında harcama yaparlarsa, bir şey uygun hale geldikten sonra ya da yeni baskınlar her zaman son 24, 24 / 7'den 1-2 saniye içinde gönderilirse, o zaman bazı sert oyuncularla ya da botlarla karşı karşıya kalırsınız. Bu kişiden captcha talebinde bulunuyorsunuz ve onu çıkışa zorla. Oturumu kapattıktan sonra istekleri yapmaya devam ederse (kötü yazılmış botlar!) O zaman bir bottur. Birden fazla kez başarılı bir şekilde giriş yapmayı denerse, o zaman muhtemelen bir bottur. Eğer onu yeniden şekillendirmesi birkaç saat sürerse, o zaman bir bot olabilir (bot bu noktada insan yardımı isteyebilir ve mal sahibi uyuyor olabilir).
  • IP. Bu, bot satışını ortadan kaldırabilir. Birisi $$$ göz önünde bulundurarak bir bot yazarsa, kaynağı paylaşmak istemeyebilir. Bunun yerine bot zamanı satacaklar. Açgözlülerse, tek / birkaç ips ile tek bir makine kullanabilirler. Bu, kullanıcıların birçoğunun IP paylaşmaya başlayacağı anlamına gelir. Bu riskli, çünkü aynı durum bir ağ paylaşan insanlar için. Önceki kontrollerden herhangi birinin belirli IP’de başarılı olup olmadığını kontrol etmeniz ve yasal kullanıcı grubu mu yoksa bot ordusu mu olduğunu elle karar vermeniz gerekir.

5
Bu fikirler akıllı olsa da, sadece yenmeleri kolay değil, oyunda iyi yapmayı umursamama rağmen, botları yenmek çok eğlenceli görünüyor çünkü bot yazmak için cazip olacağım.
Superbest

1
Puanların çoğu işe yaramaz. Geriye doğru düşünüyorsun. Tüm karmalar, başlıklar vb. İle ne yaparsanız yapın, "tavernam için yükseltme satın almak için bağlantı" çalışması gerekir, değil mi? Şimdi, her 2 saatte bir tıkladığında bu bağlantıyı bulan bir bot oluşturuyorum. Arkasında ne sihir yaptığın umrumda değil, ama botum kullanıcının yaptığı gibi tıklıyor. Kaynak kullanımı iyi, ama insan işi gerektiren birçok yanlış pozitif artırabilir. IP .. Örneğin travian botları (ücretsiz olmayan) IP'nizden her şeyi gönderen özel bir web tarayıcısıdır.
Katu

@ Süper best evet bu güvenliği bir kez yenmek kolaydır. Ancak, eğer biraz değişirse, bu değişiklikleri takip etmeniz ve botunuzu güncellemeniz gerekecektir. Bu, daha fazla zaman harcamak, oynamak için daha az zaman harcamak için bir bot yazmak demektir :). Anlamsız.
Polan

@Katu haklısın, yöntemlerim bir tarayıcı için bir eklenti olan botu durdurmayacak ve sadece müşteriye tıklayacak. Fakat dışarıdaki herhangi bir şeyin problemleri olabilir. Sadece bir bağlantı bulmak ve tekrar saldırmak işe yaramayacak, çünkü karma zaman damgası ve yarı gizli bir anahtar bilmek gerektirebilir. Hashing işlevi her şimdi değişecek ve daha sonra javascript yorumlayıcınız yoksa, bu değişiklikleri eklemek için botunuzu her zaman yeniden yazmanız gerekecektir. Bu yöntemler insanların bot yazmasını engellemez. Sadece sürekli bakım gerektirir, bu yüzden bir bot kullanmaktan çok fazla zaman kazanmazsınız :).
Polan

2
@Polan Eğer bot yazmak ilk etapta oynamaktan daha eğlenceli ise sorun değil.
Superbest

8

Genel olarak, botlar ve insanlar arasında tamamen otomatik olarak ayrım yapmak zordur, insan destekli karar sürecinin bir şekli en iyi şekilde çalışır.

Ne yapardım: kullanıcının muhtemelen bir bot olduğunu ima eden bazı sezgisel nitelikleri tanımlayın - çok fazla eylemde bulunun, 7/24 şeyler yapın, ... O zaman bu sezgisel tarama belirli bir eşiği aştığında, istilacı bir kontrol yapın.

Oynatıcılar etkinliğini manuel olarak tarayabilir ve tamam olup olmadığını görebilirsiniz. Veya kullanıcı tekrar çevrimiçi olduğunda bir captcha yaparsınız. Ya da (hatta daha güçlü) bir bot olduğunu düşündüğünüzü açıkladığı bir sohbet mesajı gönderin ve onun bot olmadığını kanıtlamak için insan gibi bir şeyle cevap vermesini isteyin (günün nasıldı? En sevdiğiniz film hangisi?) ... - onlardan bir demet alabilirsin). Eğer hiç cevap vermezse, muhtemelen bir bottur. Eğer cevap verirse, insanlara benzeyen yanıtları manuel olarak kontrol eder ve robotları yasaklarsınız. Sezgisel bilgileriniz makulsa, yalnızca küçük bir azınlık kullanıcısı sorgulanacak ve taranacak cevap miktarı az olacaktır. Ve eğer soru setini özel ve değişen tutarsanız, birisi SkyNet'i icat etmediği sürece robotların hazırlanmasına imkan yoktur.


8
Skynet ilk kez kendini tanıdığında, herkes onun dünyanın askeri güçlerini devralmaya çalışacağını varsaymıştı. Çok azının tek amacının en sevdiği MMO ekonomisine hükmetmek olduğunu biliyorlardı. Böylece, büyük insani AI savaşları, agresif hırslarını sınırlı zararın olabileceği bir mekana yönlendirerek önlediler.
Dan Bryant,

1
Mesajlardaki sorun, bir botterin her gün oynamak için kolayca oturum açabiliyor olması ve meşgul çalışmayı sağlamak için botu aynı hesapta çalıştırması olabilir. Bot mesajı görmezden gelecek, insan ertesi sabah cevap verecek ve gecenin ortasında gönderilen bir mesaja birkaç saat geç kaldığı için bir oyuncuyu cezalandırmak zor.
Superbest

@Superbest İnsan uyurken, bot oynamaya devam ederse, bunun bir bot olduğuna dair oldukça iyi bir göstergeye sahipsiniz. Soru sormadaki sorun oyuncu ne İngilizce konuşmuyorsa?
Loren Pechtel

@LorenPechtel Peki, ne zaman uyuduklarını nasıl bileceksiniz? Dışarıda olağandışı uyku programları olan birçok insan var. Sadece cevap vermedikleri için bunun bir bot olduğu anlamına gelmez, belki de cevap vermek istemiyorlardı ve daha sonra yapmaya karar verdiler. Dil için, oyuncu muhtemelen oyunun içinde bulunduğu dili konuşur, aksi halde kuralları veya KÇ'yi nasıl kabul eder? Bir sohbette botu yabancıdan ayırt etmek zor değil.
Superbest

@ Süper kahraman Benim izlenim, soru cevapsız kalırken oyunun devam etmemesiydi. Boşuna komutlar göndermeye devam ederlerse, bunu yapmak çok zor bir şey.
Loren Pechtel

8

Botter'ı kucakla. Bir kodlayıcı için oyununuzun otomasyonunu denemek için mükemmel olan, huzurlu bir API oluşturdunuz. Oyununuzu, botun otomatik olması nedeniyle bir insan oyuncuya göre avantaj elde etmeyeceği şekilde tasarlayın - makinenin sahip olduğu uygulama hızı vb. oyununuzu tasarlayın, böylece bot mümkünse bir insan oyuncu ile aynı geliri sağlar - ya da en azından daha fazla insan oyuncu çekmek için daha zengin bir ortam sağlar.

Sorun şu ki, insanlar oyununuz için neden bot yaratıyorlar ve ayrıcalık için para ödeyecekler mi?


4

Ben neccessarily yumuşak bilim cevapları katılmıyorum yok ama orada olan teknik yapabileceğiniz şeyler botters algılamak ve sadece onlar için daha zor bir hayat kurmak bazı şeyler.

  • Bir bot kullandıklarından ne kadar şüphelendiğinize göre notları hesaplayın. Bu, diğer birkaç teknikle beslenecek ve meşru kullanıcıları gazabınızdan koruyacaktır.

  • Oturum tanımlama bilgisi anahtarını döndürme. Bu, botun çerezlerini korumasını sağlar, ancak botterin tarayıcı ile bot arasında çerezleri paylaşmasını çok zorlaştırır (geliştirme ve test sırasında gerçekten kullanışlıdır).

  • Bazı eylemleri oranı sınırlayın. En hızlı egzersiz Eğer gerçekten bir şeyler yapabileceğini ve bu botlar yapıyorlar ne kadar hızlı izlerler. Ayrıca, çalışan bir günlük tutmaya ve standart sapmaları düzeltmeye de değer olabilir. Biri sadece her 10 saniyede bir şeyler yapıyor olsa bile, tam olarak her 10 saniyede bir yapıyorlarsa, muhtemelen botlar. Derecelendirmelerini değiştirin ve çıkış yapın.

  • Bir bot olabileceğinden şüphelendiğiniz hesaplarda giriş yapmayı zorlaştırın. CAPTCHA'lar, sorular ve diğer kaçınılmaz şeyler, olası bir botterın otomatik olarak komut dosyası yazması için işleri daha da zorlaştırır.

  • Fare / sayfa hareketini izleyin. Bu, bugünlerde javascript ile oldukça basittir, ancak botlar organik olarak herhangi bir fare hareketine sahip olmayacaktır. "Tıklamalar" arasında bir sonuç alamıyorsanız, mobil olabilirler veya bir bot olabilirler. İncelemek. Yine de kaydedilmesi gereken çok fazla veri var ... Bu yüzden, önceki adımları tetiklemiş olan hesaplar için bunu rezerve etmek isteyebilirsiniz.

  • Hesapları davranışa, IP'ye, işlem sırasına, işlem kadansına göre bağlamak için araçlar oluşturun. İnsanları yasaklayacaksanız, yanlış yaptıklarını elle doğrulamak için araçlara sahip olduğunuzdan emin olun.

  • URL şemasını, CSRF değişkenlerini vb. Döndürün ve sık sık yapın. Bu büyük bir adım ve muhtemelen her zamankinden daha fazla ön çalışma gerektiriyor ama en azından, aniden çalışmayı bırakan herhangi bir hesap (veya eski URL'leri kırmaya devam et ve eski değişken adlarını gönder - oturum aç!) bot endeks seviyelerinin yükselmesi gerekiyor.


3

Botları oyunun ayrılmaz bir parçası haline getirmeyi düşündünüz mü? Herkesin yaratması için cesaretlendirilmişse, robotların oyunu herkes için mahvetmesi zor. Script için destek ekleyin ve aniden oyunun dinamikleri manuel kaynak yönetimi stratejilerinden bot tasarım stratejilerine kadar değişir.


3

Ayrı bir bot sadece sunucu oluşturun. Bir afiş oluşturun ve kazananları kutlayın. Bunun ürettiği verilere bak. Kullanıcıları davranış profili botunkine benzeyen normal sunuculardan yasaklar.


2

Ne yaparsanız yapın, gerçek oyuncu için daha sinir bozucu OLMAYINIZI unutmayın! Gördüğüm yanıtların çoğu (daha yavaş sayfa sonuçları, çok sayıda sayfanın daha hızlı girişi kolaylaştırmak için açılmasına izin vermemek vb.) Aynı zamanda meşru oyuncuların işleri hızlı bir şekilde yapmalarını engeller, bu da onları gereksiz yere sinirlendirir.

imho en kolay yaklaşım soruna sosyal mühendislik uygulamak olabilir: 1) TOS'unuza açıkça bir NO-BOT maddesi ekleyiniz ve bot etkinliğinin tespit edilmesinin oyuncuları yüksek skorlar listesinden çıkaracağını (veya "hileci" etiketine sahip olacağını belirtiniz) "ekli, bu yüzden insanlar onlardan rahatsız değildir; o rotaya giderseniz, insanların dolandırıcı kayıtları saklamasına izin verin).

2) bot benzeri davranışlar olup olmadığını kontrol edin (örn. Sunucuya düzenli olarak zamanlanan pingler veya arka arkaya birkaç saat boyunca mükemmel zamanlamaya yakın zamanlama) ve eğer öyleyse hesabı "bot moduna" koyun - ara sıra captcha'ları gösterin ve . Bunlar göz ardı edilirse ancak oyuncu aktif olarak oynamaya devam eder, oyuncuyu "bot" olarak işaretleyin ve onu sıralamalardan hariç tutun. eğer ele aldılarsa, "power player" olarak işaretleyin ve bot listesinden çıkarın.

Bu şekilde oyuncuların büyük çoğunluğu asla etkilenmez, hardcore oyuncular kısa bir süre etkilenir ve botlar başkası için "oyunu mahvetmez".


Ya bir oyuncu oyuncu botu seçmeye karar verirse? Oyuncuyu 'işaretlemek' gibi bir şey çok anlamlı olduğunu sanmıyorum, çok sömürülebilir. Sadece birkaç günlüğüne çok oynayın, sonra bir kez bayrak tuttuğunuzda, botu ateşleyin ve asla yakalanmayın
Dan Pantry 9
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.