온라인 게임 API의 남용 (botting)을 탐지하고 방지하는 방법은 무엇입니까?


49

나는 자유 시간에 가끔씩 게임 아이디어를 연구하고 있습니다. 게임 플레이와 컨텐츠는 잘 확립 된 웹 기술로 구축 된 온라인 멀티 플레이어 게임으로 구현되도록합니다. 전략과 시뮬레이션 장르에 속한다는 것을 알아야합니다. 즉, "X 위치의 빌드 A"와 같은 문자 또는 이와 유사한 동작은 없지만 클라이언트-서버 통신과 관련된 원자적인 동작 만 수행합니다.

한 시점에서 엄청난 문제가 있음을 깨달았습니다. REST API 백엔드에 의존하는 브라우저 기반 프론트 엔드를 갖는 것은 봇에게 탁월한 목표 이상이됩니다. 자동화는 비즈니스에 바람직하지만 재미에 관한 게임에는 독이 있습니다. 과거에 브라우저 게임에서 처음으로 경험 한 것은 가장 성공적인 플레이어는 모두를 정복 한 봇이었습니다.

현재의 관점에서 REST API를 기반으로 멀티 플레이어 온라인 게임을 구축 할 때 봇으로부터 보호 할 가능성이 없습니다. 예외 : 모든 사람이 개인 그룹 또는 심지어 자신을 위해 자신의 인스턴스를 호스팅 할 수 있도록 공개 소스로 설정 (봇을 가진 바보에 의해 성가 시게하지 않음).

다음 가능한 행동에 대한 경보를 설정 한 정직한 선수와 그 행동에 대한 모든 기회를 자동으로 취하는 봇 사이를 구별 할 수있는 방법이 있습니까? 보안 문자와 같은 쇼 쇼퍼 외에도. 그렇지 않다면 클라이언트-서버 통신 (기본 코드 클라이언트의 독점 암호화 된 이진 프로토콜)을 엉망으로 만드는 것이 훨씬 더 어려운 다른 기술 스택에 대해 생각할 것입니다.

편집 : 감사합니다. 귀하의 답변은 고무적이지만 게임의 세부 사항으로 더 나아가서 구체적인 대책을 세울 수 없다는 것을 알게되었습니다. 그러나 Stack Exchange에 대한 질문에는 너무 많은 것입니다. 그래서 가장 중요한 점을 지적하고 싶습니다.

  • 플레이어는 원할 때마다 탐색하고 개발하고 관리합니다. 그들의 사업은 오프라인 일 때도 여전히 잘 운영됩니다 (평화로운 게임이며 무기가 필요하지 않습니다). 확장과 진행 만 플레이어 행동이 필요합니다. 이러한 조치는 다음에 의해 제한됩니다.
  • 시간 은 핵심 자원 중 하나입니다 (EVE 온라인 기술 교육에서와 같이). 게임의 모든 프로세스에 필요합니다. 연중 무휴 온라인 상태는 중요하지 않습니다. 평균적인 플레이어는 하루에 한두 번의 세션에서 매일 한 시간 이상을 소비하는 데 성공해야합니다 ( 대략 개념은 아직 개발 중입니다).

9
다른 사람이 봇을 프로그래밍하거나 구매하는 것이 인간 플레이어의 재미를 망치지 않도록 게임을 만들 수 없습니까? 둘째, 게임을하도록 봇 / AI를 프로그래밍하는 것만으로도 재미있을 수 있습니다. 그래도 다른 사람의 재미를 망치지 않아야합니다.
카스퍼 반 덴 버그

26
"자동화 [...]는 재미있는 게임에 독이됩니다." 강하게 동의. 게임이 정말 재미 있다면 플레이어가없는 부분을 건너 뛰어 플레이어에게 불이익을주는 이유는 무엇입니까? 게임의 요소가 너무 지루하여 플레이어가 게임을하고 싶지 않고 스크립트를 인수하려는 욕구를 느끼는 경우 실제로 해결해야 할 문제입니다.
Marcks Thomas

6
당신의 예는 쉬운 반응을 보입니다 : 플레이어에게 봇이 필요 없는 툴을 제공하십시오 . 예를 들어, 그들이 정확한 순간에 온라인으로 접속하도록 격려하거나, 그들을위한 도구를 얻거나 만들지 말고 행동을 줄 이도록하십시오.

4
사람들이 봇을 사용하는 주된 이유는 게임의 일부가 지루하고 지루하기 때문입니다 (재미라면 재미있게 놀 것입니다). 분명히 플레이어는 경쟁과 도전을 즐기고 있지만 자동화 가능한 게임 플레이는 아닙니다. 게임 디자인을 변경하여 사람들이 봇을 사용하여 극복하는 부분을 제거하거나 게임의 균형을 재조정하여 인간 플레이어 만 할 수 있고 봇이 할 수없는 더 어렵고 의미있는 결정을 내릴 수 있습니다 (예 : 심도있는 전략적 선택) . 그렇지 않으면, 당신은 무기 경주에 운명이 될 것이고, 놈들은 이길 것입니다.
Superbest

6
tl; dr : 사람들은 알람이있는 사람과 경쟁하는 것을 좋아하지 않으며 봇을 가진 사람에 대한 것보다 더 직업이 없습니다.
Random832

답변:


50

사람들이 봇을 원한다면 정말로 멈출 수 없다고 생각합니다.

물론 봇팅을 다소 고통스럽게 만드는 많은 조치를 구현할 수 있습니다. 그러나 코드베이스가 유지 관리가 어렵고 오류가 발생하기 쉽고 합법적 인 사용자를 성가 시게하는 거대한 혼란으로 바뀌기 전에는 많은 것을 할 수 있습니다. 한편, 수다쟁이는 항상 대응책을 물리 칠 수있는 방법을 찾을 것입니다.

  • 당신보다 더 많은 것이 있습니다
  • 그들은 더 많은 자유 시간을 가지고 있습니다 (실제 개발과 봇 교정으로 시간을 나누어야하며 하루 종일 봇 코드를 해킹 할 수 있습니다)
  • 외설적이고 도전적인 보호 장치를 만들면 봇 보호 기능을 깨는 것이 재미있어서 봇 작성자에게 더 많은 격려가 될 것입니다.
  • 봇으로부터 상업적으로 이익을 얻는 암흑 시장이있는 경우, 봇을 더 어렵게 만들수록 더 가치있는 워킹 봇이되기 때문에 봇팅에 인센티브를 줄 수 있습니다

당신은 기본적으로 보 터들과 무기 경쟁에 갇히게 될 것이며, 위의 포인트를 따르는 논리와 그러한 게임에 대한 나의 경험에 따르면, 당신은 계속 유지할 수 없을 것입니다.

일부 게임 개발자는 매우 공격적인 부정 행위 방지 조치를 사용합니다. 예를 들어, Steam은 메모리와 파일 시스템을 검사하여 해킹을 찾게되며 수백 달러 상당의 계정을 잃어 가해자를 처벌 할 수 있습니다. 그러나 스팀 게임에는 여전히 봇과 다른 핵이 있으며 일부는 반 시간 동안 작동합니다. 그것들과는 달리, 당신은 사용자에게 광범위하게 개방 된 API를 가지고 있으며, 사용자 컴퓨터를 제어 할 수 없습니다. 처음부터 오르막길입니다.

해결하려는 문제는 본질적으로 튜링 테스트입니다. 언어와 같은 어려운 AI 문제를 요구하여 속일 수 없기 때문에 매우 쉬운 튜링 테스트는 예외입니다. 얼마나 많은 휴리스틱을 생성하든, 봇의 행동에 거의 임의성을 추가하여 거의 사람을 모방하도록하는 것이 보터에게는 사소한 일입니다. 봇에게 당신이 약간의 시간을 지켜보고 정확하게 당신과 같은 행동을하는 시간을 배우는 것은 그리 어렵지 않을 것입니다. 당신은 그가 단지 전용 플레이어의 방법에 대한 포럼에 봇의 botter 게시물 거대한 호언 장담을 금지 할 때 다음 (어쩌면 그는 입니다 당신에 대하여 무기에 일어날 것이다 하드 코어 플레이어 및 핵심 고객 실제로 긍정적 인 거짓).

봇하기에는 게임을 너무 재미있게

누군가가 봇을 사용하는 주된 이유는 건너 뛰려는 게임의 일부가 있기 때문입니다. 그들이 게임을 즐겼고 재미 있다면 봇이 게임을하지 않고 스스로 게임을했을 것입니다.

그러나 게임이 너무 지루하다면 왜 전혀 게임을하지 않습니까? 아마도 게임의 일부 부분은 재미있는 부분에 도달하기 위해 지루하고 의무적 일 것입니다. 예를 들어, MMO에서는 모두가 레벨을 올리는 것을 좋아하지만 XP를 얻기 위해 42,324 개의 죽지 않은 독사를 죽이려는 사람은 없습니다. 그래서 그들은 봇이 재미있는 부분을하기 위해 갈아서 떨어 뜨 렸습니다.

이것은 당신이나 당신의 게임에 대한 비판은 아니지만, 분명히 적어도 일부 플레이어는 게임의 일부 부분을 지루하게 생각합니다. 이러한 지루한 부분을 줄일 수 있는지 확인하고 더 어렵고 의미있는 결정을 추가해야합니다. 봇은 인간 지능에 비해 심도있는 전략이나 측면 사고에 좋지 않으며, 인간은 어려운 게임 결정을하는 것을 좋아합니다.

귀하의 설명에 따르면, 이것이 Travian과 유사한 브라우저 게임이라는 인상을 받았습니다. 여기서는 최상의 단일 빌드 순서와 특정 "유지 관리"(예 : 농사를 계속 유지하는) 작업이 포함 된 빌드 대기열이 있습니다. 당신은 갈등이 없다고 말하지만 MMO 드라마와 소소한 정치에서는 불가피합니다 (IMO가 주요 매력입니다). 나는 선수들이 머리를 맞대는 방법을 찾을 것이라고 확신합니다. 이러한 종류의 게임을 사용하면 많은 "지식 유지 관리"작업에서 많은 지루함이 발생합니다. 플레이어가 실제로하고 싶은 것은 동맹을 맺고 라이벌 클랜과 외교 게임을하는 것입니다. 이상한 시간에 알람을 울려서 재미있는 외교적 부분에 들어갈 수 있습니다. 따라서 지루한 부분을 잘라내십시오.

이 방법은 불행히도 항상 작동하는 것은 아닙니다. 모든 플레이어가 동일한 테디 움이나 같은 재미 개념에 대한 내성을 갖지는 않습니다. 99 %의 플레이어가 즐길 수있는 눈에 띄는 기계공이있을 수 있지만 1 %는 지루합니다. 1 %가 봇 작성을 시작하여 99 %의 재미를 망치면 어떻게 될까요? 그러나 궁극적으로 그것은 정도의 문제입니다. 봇팅을 완전히 제거 할 수는 없지만 손상을 최소화 할 수 있습니다.

언더컷 보터

봇의 많은 부정적인 영향은 봇 작성자가 자신의 작업을 상업화 한 데서 비롯됩니다. 이것이 당신에게 해당된다면, 당신은 단순히 봇과 경쟁 할 수 있습니다. 많은 실시간 기반 온라인 게임에는 이미 확장 된 빌드 큐와 같은 타임 스키핑 및 자동화를 허용하는 프리미엄 기능이 있습니다. 이는 개발자 승인 공식 봇에 해당합니다. 이것들이 있고 적절히 가격을 책정하면 플레이어는 봇을 구매하는 대신 프리미엄을 구매합니다. 좋은 소식은 API를 담당하고 있기 때문에 항상 자신의 게임에 대한 품질 자동화를 개발할 때 강력한 이점을 가지게되므로 이번에는 수사와의 싸움에서 패배한다는 것입니다.

이것은 아마추어 수다쟁이 또는 프리미엄이 돈을 위해 가치가 없다고 생각하는 사람들을 제거하지 않을 것이므로이 접근법의 효과는 상황에 달려 있습니다.

수동으로 찾으십시오

위에서 말했듯이, 당신이하고있는 일은 본질적으로 튜링 테스트입니다. 인간과의 상호 작용은 유명한 Turing 테스트 과제로 유명하기 때문에이를 활용할 수 있습니다.

최상위 플레이어를 수동으로 검사하고 의심스러운 점이 있는지 확인하십시오. 봇이 자신이하지 않는 일을하도록 속일 수 있는지 확인하기 위해 때로는 상상력에만 국한된 방식으로 조사 할 수도 있습니다.

봇을 안정적으로 감지하는 알고리즘을 작성하는 것은 어렵지만, 인간이 로봇을 발견하는 방법을 배우는 것은 그리 어렵지 않습니다. 많은 브라우저 게임에서이 전략을 사용한다고 생각합니다. 단점은 항상 많은 지루한 작업을 수행하거나 정기적 인 봇 순찰을 위해 게임 마스터에게 비용을 지불해야한다는 것입니다.


4
이 답변은 기술적 세부 사항에서 멀어지고 한 단계 뒤로 질문을 살펴보면서 가장 생각했던 것이므로이 답변을 선택했습니다. 나는 "방법"에 대한 아주 좋은 아이디어를 포함하고 있기 때문에 Adam Davis '를 선택하는 것에 대해 오랫동안 생각하고있었습니다.
Peter

1
@Alomvar 도움이되어서 기쁩니다. 질문이 너무 많이 투표되었으므로 프로필에 게임 링크를 넣을 수도 있습니다 :)
Superbest

2
트라 비안은 아직도 주변에 있습니까? 나는 몇 년 전에 그 게임을했고, 게임 플레이가 기본적으로 "최고의 사회 경로를 이길 수있다"는 삶을 깨달았다는 것을 깨달았을 때 멈췄다.
메이슨 휠러

25

봇에 대한 최선의 유일한 방어책은 플레이어가 처음에 자동화 할 필요가없는 방식으로 게임을 디자인하는 것입니다. 플레이어가 실제로 기술이 필요하지 않은 간단한 작업을 자동화하면 사용자 인터페이스가 부족하고 누락 된 UI 기능을 대체한다는 신호입니다.

  • 게임에 플레이어가 같은 동작을 반복해서 반복하는 반복 작업이 포함되어 있습니까?

    게임의 이러한 측면을 덜 반복적이고 재미있게 재생하고 재생하십시오.

  • 한밤중이나 직장에서와 같이 게임에서 불편한 시간에 플레이어가 조치를 취해야합니까?

    고객이 주문을 대기 시키거나 ( "리소스 X1, X2, X3, 리소스가 사용 가능한 즉시 시작"등) 특정 시간에 사전에 작업을 예약하십시오 (오전 3:22에 빌드 X).

  • 게임에서 플레이어가 매우 짧은 시간 내에 이벤트에 참여해야합니까?

    이러한 작업이 자동으로 트리거되는 방식으로 게임을 구성하도록 허용

    • X 건물이 파괴되면 즉시 다시 빌드하십시오.
    • 누군가 Y 자원보다 적은 돈으로 X 자원을 제공하면 즉시 Z 단위까지 구매하십시오.
    • 재고가 Y 단위를 초과하지만 단위당 Z 금액 이상인 경우 모든 자원 X를 자동 판매합니다.

커뮤니티를 모니터링하십시오. 그들이 다른 것을 자동화한다는 것을 알게되면 아이디어를 훔치고 핵심 게임에 자동화하는 옵션을 추가하십시오.


5
이것은 게임을 더 좋게 만들고 게임의 위험을 줄임으로써 플레이어가 자신을 봇처럼 만들 수있는 좋은 제안입니다. ;-) 봇이되어서 게임의 훌륭한 플레이어가된다면, 게임에는 더 인간적인 사고가 필요할 것입니다. 나는 그것이 유일한 효과적인 방어라는 것에 동의하지는 않지만, 그것이 전반적으로 가장 좋다는 것에 동의합니다. +1
Dronz

7
나는 이것의 정신에 동의하지만 불행히도 게임을 지루하지 않게 할 수 있다는 전제는 잘못입니다. 10,000 명의 플레이어가 정비공 X를 좋아하지만 10 명이 지루한 것을 발견하고 봇을 작성하여 10,000 명의 재미를 망치면 어떨까요? 이것은 FPS의 조준 로봇에서 일어나는 일입니다. 비슷한 해결책은 조준 문제를 줄이는 것이지만 많은 선수들이 조준 기술을 완성하는 것을 좋아합니다. 조준해야 할 필요성을 느끼는 사람은 몇 명에 불과합니다.
Superbest

1
나는 당신의 제안을 정말 좋아합니다. 더 많은 게임 woukd가 당신을 효율적으로하기 위해 24/7 주위에있을 것을 요구하는 대신 이와 같은 일을하기를 바랍니다
meneldal

@Superbest 사실, 나는 당신이 더 중요하게 목표를 설계 할 수 있지만 여전히 봇팅이 효과적이기 어려운 해결책을 볼 수 있습니다. botter 그는 그를 공격하는 모든 선수에 대한 충분한 총알을 발사 할 수 없기 때문에
마태 복음 Pigram에게

2
이것이 바로 요점입니다! X 봇에서 게임을 할 수있는 효과적인 클릭-온-버튼이 있다면 직접 작성하여 모든 사람에게 제공하십시오! -플레이어가 미리 결정하면 시간이 준비되면 무엇을 만들어야하는지 ... 게임에서 재미는 결정에 관한 것입니다!
Falco

23

johnny-on-the-spot 노력에 게임을 너무 취약하게 만들지 마십시오

첫째, 하루에 20 분 또는 한 시간 동안 한 번만 게임을하는 플레이어가 직장에서 게임을 열어두고 하루 16 시간 동안 플레이하는 플레이어에게 큰 불리한 점이 없는지 확인하십시오.

이를 위해서는 게임 메커니즘을 변경해야 할 수 있습니다. 예를 들어, 플레이하지 않을 때 채워지는 이동 할당은 플레이어가 지속적으로 돌봐야하는 메커니즘이 아니라 플레이 할 수있을 때 많은 빠른 이동을 수행 할 수 있도록합니다.

이것은 봇 제작자들이 게임을 따라갈 수 있기 때문에 무관심 할 것이며, 그들에게 행동을 수행하는 자동 장치를 만들 필요가 없습니다.

각 작업마다 서버 정보가 필요하며 서버 응답 속도가 느려집니다.

플레이어가 게임을 할 때, 상호 작용하는 UI를 보여주는 페이지를 요청합니다. 보이지 않는 양식 요소와 같이 실제로 페이지를 먼저 요청했는지 확인하는 요소를 삽입 할 수 있습니다. 서버가 사용자 ID와 마지막으로 요청한 페이지와 함께 저장하는 난수입니다. 조치가 들어 오면 서버는이 사용자가 동일한 난수를 리턴했으며 마지막으로 본 페이지에서 조치를 수행하고 있는지 확인합니다. 이는 봇이 모든 작업에 대해 두 번의 API 호출을 수행해야 할뿐만 아니라 일반 사용자가 여러 페이지를 열고 순차적 빠른 작업을 수행 할 수 없다는 것을 의미합니다 (디자인에 문제가있는 경우).

두 개의 API 호출을 통해 나중에 봇 속도를 늦출 수 있습니다. 결국 의심스러운 패턴이 나타나고 그 패턴을 포착 할 수 있습니다. 서버가 의심스러운 패턴을 감지하면 첫 번째 호출에서 API 응답을 두 번째 지연시켜 사용자를 성가 시게하지만 실제로 봇 속도를 늦출 수 있습니다. 또한 두 번째 요청이 "너무 빠르다"(게임에 어떤 의미가 있든) 다시 돌아 오면 요청을 거부하거나 게임 내 오류나 다시 제출 요청 사유로 페이지를 다시로드 할 수 있습니다. "빠르게 만들 수 없습니다. 시간을 내십시오." 예를 들어.

사용자의 말에 귀를 기울이면 그들이 좋아하는 것과 귀찮은 것을 찾을 수 있습니다.

움직임과 행동이 생각을 필요로한다

게임이 단순한 버튼 클릭 기라면 봇에 대해 많은 것을 할 수 없습니다. 게임 자체가 보안 문자와 유사한 테스트를 수행하도록 게임을 다시 디자인 해보십시오.

게임에 대해 아는 바가 많지 않습니다. 건물을 배치 할 위치를 선택해야하는 경우 작동하지 않는 명백한 배치가 있더라도 사용자가 어디서나 선택할 수 있도록 인터페이스를 설계하십시오. 또는 배치가 성공하려면 사용자가 방향을 올바르게 일치시켜야합니다. 조치 선택과 관련이있는 경우 더 긴 조치 목록을 포함 시키십시오. 일부는 주어진 상황에서 의미가 없습니다.

무작위로 간단한 봇 검사 포함

가끔 대화창을 추가 하시겠습니까, "정말입니까?" 예를 들어. 질문과 문구를 자주 변경하고 봇에 대한 현장 점검으로 사용하십시오.

API 변경

API를 자주 변경하여 올바른 변수와 웹 서버로 반환되는 방법에 대한 웹 페이지를 실제로 구문 분석하도록하십시오. 템플릿을 사용하여 인터페이스를 개발하는 경우 각 변수 이름에 대해 솔트 해시 또는 임의 변수 생성기를 사용하는 코드로 템플릿을 대체하십시오. 그런 다음 javascript를 사용하여 응답을 인코딩하고 해당 인코딩을 자주 변경하십시오. 당신은 아마 당신을 위해이 모든 것을하는 소프트웨어를 작성할 수 있고, 모든 것을 항상 무작위로 만들거나, 때때로 변경하는 정적 템플릿을 만들 수 있습니다.


브라우저 게임, API 변경 및 모든 것이 중요하지 않은 경우. 클라이언트의 모든 텍스트를 매번 변경하려는 경우가 아니라면 (플레이어에게는 끔찍할 것입니다. UI는 항상 변경됩니다. ugh ..) 텍스트가 변경되지 않으면 텍스트를 찾는 것이 매우 간단합니다. jQuery만으로도 가능합니다. Travian을 플레이했을 때 방금 공격하려고했을 때 방대한 양의 탭을 열고 모든 정보를 준비했으며 시간이 다되면 제출을 클릭하는 모든 것을 스크롤했습니다. 봇은 빠르지 않고 빠르지 만 API 지연으로 인해 어려움을 겪었을 것입니다.
Katu

1
@Katu 게임에 따라 많은 UI 요소가 이미 이미지 일 수 있습니다. 이미지 이름을 변경하거나 이미지 파일 해시를 약간 변경하는 등의 작업은 더 어려워집니다. 최소한 처리해야 할 것을 파악하기 위해 모든 요소를 ​​다운로드하도록 강요하고 있습니다. 자바 스크립트를 사용하여 화면의 지정된 위치에서 맨 위에있는 요소를 찾은 다음 활성화하려고 할 수 있지만, 자바 스크립트 클라이언트가 요소 클릭이 아닌 마우스 클릭 위치를 다시보고하도록하면 더 어려워 질 수 있습니다.
Adam Davis

@Katu 당신은 궁극적으로 맞습니다, 그것은 다룰 수 있습니다, 그러나 당신이 노력을 충분히 크게한다면, 노력에 가고자하는 사람들의 수를 줄일 것입니다.
Adam Davis

2
'할당 할당 이동'의 문제점은 모든 플레이어 에게 하루에 30 분 동안 만 게임을 할 수 있다고 말하고 있지만이를 사용하는 데 시간이 오래 걸리므로 귀찮게하고 광고 수익을 제한하며 엄청난 유혹을 유발한다는 것입니다 소액 결제를 통해 더 많이 구매할 수 있습니다.
Random832

건물 배치 및 방향에 동의합니다! 동시에 합법적 인 사용자에게는 플러스이고 봇에게는 부정적인 것입니다.
miva2

13

당신은 그들을 막을 수 없습니다. 그러나 봇을 작성하고 업데이트하는 데 많은 시간을 소비해야하므로 삶을 비참하게 만들 수 있습니다. 사용자가 유효한지 확인하기 위해 무엇이든 사용해야합니다.

  • 요청 헤더를 확인하고 유효하지 않은 값을 가진 요청을 거부하십시오. 사용자 정의 헤더를 설정하거나 사용자 에이전트와 같은 기존 항목을 확인하십시오. 물론 극복하기는 쉽지만 확인하기는 더 쉽습니다. botwriter가 경험이 없으면 그것에 대해 생각하는 데 시간이 걸릴 수 있습니다! 당신의 임무는 그들 중 많은 사람들이 포기하도록 강요하는 것입니까?
  • 아마도 일종의 해시 서명이나 요청에 무언가가있을 수 있습니다. 이는 클라이언트 측에서 일부 기능으로 생성됩니다. 그럼 계속 바꾸세요! 캐시 할 수없는 별도의 스크립트로 만들고 임의 간격으로 변경하십시오. 해시 프로세스에 임의의 소금을 추가하여 그중 몇 가지를 만들거나 즉시 편집하십시오. 다시 극복하기는 쉽지만 기능을 계속 지켜봐야합니다. 또한 사용자를 지속적으로 업데이트하려면 일정한 배포 파이프 라인이 필요할 수 있습니다. 그렇지 않으면 그들의 봇이 잘못 해시 된 요청을 보내기 시작할 것입니다. 너무 자주하는 사용자를 금지시킬 수도 있습니다. 어쨌든 유효한 사용자는 클라이언트를 돌아 다니므로 해시 기능을 다시 가져옵니다. 서버 측도 업데이트해야합니다 (스크립트 기반 백엔드가 실제로 도움이 됨).
  • 자원 사용 효율성을 추적하십시오. 그들이 즉시 소비하거나, 무언가가 저렴한 후에, 또는 새로운 공격대가 항상 마지막 1 년 24 시간에서 1-2 초 이내에 보내지면, 당신은 일부 하드 코어 플레이어 나 봇을 상대하고 있습니다. 그런 사람에게 보안 문자를 요청하고 강제로 로그 아웃하십시오. 로그 아웃 한 후에도 요청을 계속하면 (잘못 작성된 봇!) 봇입니다. 성공하지 못한 채 여러 번 로그인을 시도하면 봇일 수 있습니다. 다시 로그인하는 데 몇 시간이 걸리면 봇일 수 있습니다 (이 시점에서 봇이 사람의 도움을 요청할 수 있으며 소유자가 잠자기 상태 일 수 있음).
  • IP. 이것은 봇 판매를 제거 할 수 있습니다. 누군가 $$$를 염두에두고 봇을 작성하는 경우 소스를 공유하고 싶지 않을 수 있습니다. 그들은 대신 봇 타임을 판매 할 것입니다. 욕심이 많으면 단일 / 몇 개의 IP가있는 단일 시스템을 사용할 수 있습니다. 이는 많은 사용자들이 IP 공유를 시작한다는 것을 의미합니다. 동일한 경우가 네트워크를 공유하는 사람들을위한 것이기 때문에 이것은 위험합니다. 특정 IP에서 이전 확인 중 어떤 것이 성공적인지 확인하고 합법적 인 사용자 그룹인지 아니면 봇 군대인지 수동으로 결정해야합니다.

5
이 아이디어는 영리하지만 패배하기는 쉽지만 게임에서 잘하는 것에 관심이 없어도 봇을 쓰러 뜨리는 것이 재미있어 보일뿐입니다.
Superbest

1
포인트의 대부분은 쓸모가 없습니다. 당신은 뒤로 생각하고 있습니다. 모든 해시, 헤더 등으로 무엇을 하든지 "내 선술집 용 업그레이드 구매 링크"가 작동해야합니까? 이제 2 시간마다 클릭하는 링크를 찾는 봇을 만듭니다. 나는 당신이 그 뒤에 어떤 마술을하는지 상관하지 않지만, 내 봇은 사용자처럼 그것을 클릭합니다. 리소스 사용은 좋지만 인적 작업이 필요한 많은 오 탐지를 일으킬 수 있습니다. IP .. 예를 들어 travian bots (non-free)는 IP에서 모든 것을 보내는 맞춤형 웹 브라우저입니다.
Katu

@Superbest 예,이 보안을 한 번 이기기 쉽습니다. 그러나 조금 변경되면 변경 사항을 추적하고 봇을 업데이트해야합니다. 그것은 봇을 쓰는 데 더 많은 시간을 소비한다는 것을 의미합니다. :). 무의미한.
Polan

@ 카투 당신이 맞아, 내 방법은 브라우저에 플러그인 인 봇을 멈추지 않으며 클라이언트를 클릭하는 것입니다. 그러나 외부에 문제가있을 수 있습니다. 해시에는 타임 스탬프가 필요하고 세미 비밀 키를 알고 있기 때문에 링크와 재생 공격만으로는 작동하지 않습니다. 해싱 함수는 지금마다 변경되므로 자바 스크립트 인터프리터가없는 경우 해당 변경 사항을 포함하도록 항상 봇을 다시 작성해야합니다. 이러한 방법으로 사람들이 봇을 작성하는 것을 막을 수는 없습니다. 지속적인 유지 관리가 필요하므로 봇을 사용하여 많은 시간을 절약 할 수는 없습니다 :).
Polan

2
@Polan 봇을 쓰는 것이 처음부터 플레이하는 것보다 재미 있다면 문제가되지 않습니다.
Superbest

8

일반적으로 봇과 인간을 완전히 자동으로 구별하는 것은 어렵습니다. 어떤 형태의 인간 보조 의사 결정 프로세스가 가장 효과적입니다.

내가 할 일 : 사용자가 봇 일 수 있음을 암시하는 휴리스틱을 정의하십시오. 많은 작업을 수행하고 24/7 일을하는 등 ...이 휴리스틱이 특정 임계 값을 초과하면 침입 검사를 수행하십시오.

플레이어 활동을 수동으로 스캔하여 문제가 없는지 확인할 수 있습니다. 또는 다음에 사용자가 온라인 상태 일 때 보안 문자를 사용합니다. 또는 (더 강한) 그냥 채팅 메시지를 보내서 그가 봇이라고 의심하고 그가 봇이 아니라는 것을 증명하기 위해 인간과 같은 무언가로 응답하기를 원한다는 것을 설명하십시오. ...-당신은 그것들을 많이 가질 수 있습니다). 그가 전혀 응답하지 않으면 아마도 봇일 것입니다. 그가 응답하면 수동으로 사람과 유사한 것에 대한 답변을 확인하고 로봇을 금지합니다. 휴리스틱이 합리적이라면 소수의 사용자 만 질문하고 스캔에 대한 응답 량은 적습니다. 그리고 일련의 질문을 비공개로 유지하고 변경하는 경우 누군가가 SkyNet을 발명하지 않으면 로봇을 준비 할 수있는 방법이 없습니다.


8
스카이 넷이 처음으로 자각을했을 때, 모든 사람들은 그것이 세계의 군대를 점령하려한다고 가정했습니다. 그들의 유일한 목표는 자신이 좋아하는 MMO의 경제를 지배하는 것임을 거의 알지 못했습니다. 따라서 공격적인 야심을 제한적인 피해를 입을 수있는 장소로 안내함으로써 위대한 인간 -AI 전쟁이 예방되었습니다.
Dan Bryant

1
메시지의 문제점은 매일 게임을하기 위해 보터가 쉽게 로그인 할 수 있고 같은 계정에서 봇을 실행하여 바쁜 작업을 처리 할 수 ​​있다는 것입니다. 봇은 메시지를 무시하고, 다음 날 아침 인간이 답장을 보내며, 한밤중에 보낸 메시지에 몇 시간 늦게 응답 한 플레이어를 처벌하기는 어렵습니다.
Superbest

@Superbest 인간이 잠자는 동안 봇이 계속 플레이하려고하면 봇이라는 꽤 좋은 표시가 있습니다. 질문을하는 문제는 플레이어가 영어를하지 못하면 어떻게됩니까?
Loren Pechtel

@LorenPechtel 글쎄, 그들이 언제 자고 있는지 어떻게 알 수 있습니까? 매우 특이한 수면 시간을 가진 사람들이 많이 있습니다. 그들이 대답하지 않았다고해서 그것이 봇 이었음을 의미하는 것은 아니며, 아마도 그들은 그때 대답하고 싶지 않다가 나중에 결정하기로 결정했을 것입니다. 언어와 관련하여 플레이어는 게임에 사용 된 언어를 사용하는 것 같습니다. 그렇지 않으면 규칙 또는 ToS에 어떻게 동의합니까? 대화에서 봇을 외국인과 구별하는 것은 어렵지 않습니다.
Superbest

@Superbest 저의 인상은 그 질문이 해결되지 않은 채 게임이 계속되지 않을 것이라는 것이 었습니다. 그들이 쓸데없는 명령을 계속 보내면 봇이하는 일이 분명합니다.
Loren Pechtel

8

보터를 포용하십시오. 코더가 게임 자동화를 실험하기에 완벽한 편안한 API를 만들었습니다. 자동화로 인해 봇이 인간 플레이어보다 유리하지 않도록 게임 플레이를 설계하십시오-머신의 실행 속도 등의 이점을 제거하십시오. 봇이 가능한 경우 인간 플레이어와 동일한 수익을 제공하거나 더 많은 인간 플레이어를 유치 할 수있는 더 풍부한 환경을 제공하도록 게임을 설계하십시오.

문제는 사람들이 왜 당신의 게임을 위해 봇을 만들고 있으며, 그들은 특권을 위해 돈을 지불 할 것인가입니다.


4

나는 neccessarily 소프트 과학 답변에 동의하지 않지만 있는 기술 당신이 할 수있는 일 botters을 감지하고 단지 그들을 위해 열심히 삶을 몇 가지.

  • 그들이 봇을 사용하고 있다고 생각하는 정도에 따라 등급을 매 깁니다. 이것은 여러 가지 다른 기술에 영향을 미치며 합법적 인 사용자를 진노로부터 보호합니다.

  • 세션 쿠키 키 회전 이를 통해 봇은 쿠키를 유지하지만 브라우저와 봇간에 쿠키를 공유하기가 더 어려워집니다 (개발 및 테스트 중에 매우 편리함).

  • 특정 행동을 제한하십시오. 실제로 수 있는 가장 빠른 작업을 수행하고이 봇이 얼마나 빨리 수행하는지 모니터링하십시오. 또한 실행 로그를 유지하고 표준 편차를 해결하는 것이 좋습니다. 누군가가 10 초마다 무언가를하고 있더라도 정확히 10 초마다 하고 있다면 아마도 봇일 것입니다. 등급을 수정하고 로그 아웃하십시오.

  • 봇일 가능성이있는 계정에서는 로그인을 더 어렵게 만듭니다. 보안 문자 및 질문 및 기타 불가피한 사항으로 인해 자동으로 스크립트를 작성하기가 더 어려워집니다.

  • 마우스 / 페이지 이동을 모니터링합니다. 요즘 자바 스크립트에서는 상당히 간단하지만 봇은 유기적으로 마우스 움직임이 없습니다. "클릭"이 발생하지 않으면 모바일이거나 봇일 수 있습니다. 조사하다. 그래도 많은 데이터가 기록됩니다 ... 따라서 이전 단계를 이미 실행 한 계정에 대해 예약 할 수 있습니다.

  • 행동, IP, 액션 시퀀스, 액션 케이던스로 계정을 연결하는 도구를 구축하십시오. 사람들을 금지하려는 경우, 자신의 잘못을 수동으로 확인하는 도구가 있는지 확인하십시오.

  • URL 스키마, CSRF 변수 등을 회전시키고 자주 수행하십시오. 그것은 큰 걸음이며 아마도 가치가있을 것보다 더 많은 선행 작업이 필요할 것입니다. 그러나 최소한 작동을 멈추는 계정 (또는 오래된 URL을 계속 망치고 오래된 변수 이름을 보내십시오-기록하십시오!) 봇 인덱스 레벨을 높여야합니다.


3

봇을 게임의 필수 부분으로 만드는 것을 고려 했습니까? 봇이 다른 사람들이 게임을 만들도록 장려하면 게임을 망치는 것은 어렵습니다. 스크립팅에 대한 지원을 추가하고 수동으로 자원 관리 전략에서 봇 디자인 전략으로 게임의 역학을 갑자기 변화시킵니다.


3

별도의 봇 전용 서버를 만듭니다. 리더 보드를 만들고 우승자를 축하하십시오. 이 데이터를 생성하십시오. 행동 프로파일이 봇의 행동 프로파일처럼 보이는 일반 서버로부터 사용자를 금지하십시오.


2

당신이 무엇을하든 실제 플레이어에게 더 성가 시게하지 마십시오! 내가 본 많은 답변 (페이지가 느리거나 여러 페이지를 열어서 더 빠른 입력을 허용하지 않는 등)도 합법적 인 플레이어가 빠르게 작업을 수행하지 못하게하여 불필요하게 좌절하게 만듭니다.

가장 쉬운 방법은 문제에 사회 공학을 적용하는 것입니다. 1) TOS에 명시 적 NO-BOT 절을 추가하고 봇 활동을 감지하면 최고 점수 목록에서 플레이어가 제거됩니다. "첨부되어 있으므로 사람들은 그들과 좌절하지 않습니다. 만약 당신이 그 길을 가면 사람들이 사기꾼 기록을 숨길 수 있습니다).

2) 봇과 유사한 동작 (예 : 서버에 정기적으로 핑 시간을 지정하거나 여러 시간 연속으로 거의 완벽한 타이밍)을 확인한 다음 계정을 "봇 모드"로 설정-가끔 보안 문자를 표시합니다. . 이러한 사항을 무시했지만 플레이어가 계속 게임을 계속하는 경우 플레이어를 "봇"으로 표시하고 순위에서 제외하십시오. 문제가 해결되면 그를 "파워 플레이어"로 표시하고 봇 목록에서 빼십시오.

이런 식으로 대다수의 플레이어는 영향을받지 않으며, 하드 코어 게이머는 짧은 시간 동안 영향을 받고, 봇은 다른 사람을 위해 "게임을 망치지"않습니다.


파워 플레이어가 봇을 선택하면 어떻게 되나요? 나는 플레이어가 무언가를 의미있는 것으로 '마킹'한다고 생각하지 않으며, 그것은 매우 악용 될 수 있습니다. 며칠 동안 많이 플레이 한 다음 깃발을 받으면 봇을 발사하면 절대 잡히지 않습니다.
Dan Pantry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.