PokerPirate 라는 새로운 오픈 소스 포커 봇이 있습니다 . 웹 애플리케이션이 포커 봇을 감지 / 차단 / 패배시킬 수있는 창의적인 방법에 관심이 있습니다. (이것은 PokerPirate가 작성된 것과 같은 정신으로 순수한 학문적 토론입니다.)
PokerPirate 라는 새로운 오픈 소스 포커 봇이 있습니다 . 웹 애플리케이션이 포커 봇을 감지 / 차단 / 패배시킬 수있는 창의적인 방법에 관심이 있습니다. (이것은 PokerPirate가 작성된 것과 같은 정신으로 순수한 학문적 토론입니다.)
답변:
서버 측 관점에서 봇 물리 치기
많은 온라인 포커 사이트에서는 의심스러운 활동으로 인해 발생 하는 팝업 보안 문자 입력을 사용 합니다.
일부 포커 사이트는 플레이 시간과 패턴을 모니터링합니다 (즉, 최악의 시나리오는 24x7 및 16 테이블을 연속으로 플레이하는 플레이어입니다. 실제 인간 일 가능성은 아주 적습니다. 그러나 일부 플레이어 는 매우 큰 핸드를 플레이 할 수 있습니다. 경험이없는 눈에는 봇처럼 보이는 볼륨 )
결함을 던져라. 플레이어가 봇이라고 의심되는 경우 화면의 몇 픽셀에서 모든 카드 위치를 변경하고 1/100 핸드에 대해 다른 색상 / 디자인 / 패턴을 만들고 던지는 지 확인합니다. 화면을 잡을 수 없으면 모든 결정에 대해 시간 초과가 발생하며 이는 매우 결정적인 봇 증거입니다.
타이밍은 컴퓨터 플레이어가 큰 결정에 대한 생각을 멈춤없이 한 번에 밀리 초 단위로 옵션에 응답하면 의심 스러울 수 있음을 알려줍니다.
자가 모니터링. 포커 웹 사이트 pokertableratings.com 데이터는 많은 대규모 사이트를 채굴합니다. 그것은 혼합 된 리셉션으로 만났고, 어떤 사람들 은 투명성을 좋아하고, 다른 사람들은 그것을 싫어합니다 . 그러나 이점은 의심스러운 플레이어 통계 (VPIP 비율, PFR 비율은 기록 될 수있는 많은 수량화 가능한 통계 중 일부)가 부정 행위의 결론으로 이어지는 경우가 있다는 것입니다.
인위적으로 지능적인 분류 네트워크 는 정량화 가능한 통계를 모니터링하여 부정 행위 또는 로봇 플레이어를 분류 할 수 있습니다.
온라인 포커가 상당히 새로운 존재 였을 때, 의심스러운 플레이어 데스크탑의 일부 포커 클라이언트 소프트웨어 스크린 샷이 그들을 지원하는 프로그램을 실행하고 있는지 확인하기위한 제한된 증거와 함께 소문 과 이야기 가있었습니다. 그러나 (이것이 사실이더라도) 두 대의 컴퓨터를 실행하여 두 작업을 독립적으로 수행하면이 문제를 해결할 수 있습니다.
여러 사이트간에 반복되는 범죄자들 사이에 정보를 공유하는 것은 그들이 명예 롭고 유능한 책임있는 사람들에 의해 운영 된다면 업계에 유익 할 것입니다.
일부 봇은 설계 상 매우 단순 할 것입니다. 자신의 플레이 스타일을 발견하고 동일한 상황에서 어떻게 작동하는지 확인할 수 있다면 (매우 기본적인 전략을 수행하는 정교하지 않은 봇에서만 가능합니다) 합리적으로 빠르게 발견 할 수 있습니다.
프로그램 기능을 일관되지 않게 사용하면 플레이어가 정품임을 알 수 있습니다. 예를 들어 게임의 많은 포커 사이트에는 '내 차례가되면 접기'버튼이 있습니다. 당신이 나쁜 패를 받고 다른 플레이어가 무엇을할지 결정하기를 기다리고 있다면, 많은 플레이어들이이 버튼을 체크 할 것입니다. 봇은 이러한 버튼을 사용할 수 있습니다. 차이점은 봇은 사용 빈도의 극한에 있고, 항상 사용하거나 전혀 사용하지 않을 수 있다는 것입니다. 플레이어는 일반적으로 '자동 접기'를 누르지 만 때로는 가장 유리한 조건에서도 어쨌든 접기를 클릭합니다. 예를 들어, 진짜 플레이어는 보통 자동 접기를 누르지 만 이번에는 그렇지 않습니다. 다른 플레이어의 연기없이 그들에게 둥글게 접혀 있었고, 이제 그들은 가능한 가장 유리한 상태로 제시되었습니다. 이제 폴드를 누르면 처음부터 자동 폴드를 누르는 경향이 컸을 것입니다. 이것은 불일치 / 최적화되지 않은 / 무작위적인 행동이며 인간이되는 것과 일치합니다. 타이밍은 이러한 기능이 클릭되는시기를 다른 지표로 알려줍니다. 이것들은 모두 지표이며 결정적인 증거가 아님을 인식하는 것이 중요합니다. 이러한 모든 행동 지표는 쉽게 시뮬레이션 할 수 있습니다.
플레이어 관점에서 봇 물리 치기
PokerTracker 와 같은 소프트웨어를 사용하여 가능한 한 많은 데이터를 기록하고 수집하십시오.
연주 스타일에서 패턴 식별 시도
팟 / 플레이어 수와 핸드 강도에 비례하는 베팅 크기 사이의 관계를 찾으려고합니다.
손의 범위 를 계산해보십시오 . 낮은 지분 봇은 중요한 전략적 문제가 될만큼 빈번하게 허세를 부리지는 않을 것이므로 매우 정확한 핸드 범위를 구성하는 것이 너무 까다로워서는 안됩니다.
데이터 분석 및 시행 착오를 통해 게임에서 누출 을 찾으려고 시도 누출 / 패턴이 발견되면 반복적으로 악용하고 다른 상황을 피하십시오.
인간이 적응할 수있는 경우 봇은 그다지 적지 않을 것이며 인간이 기울임 의 사슬 , 결과 지향적 사고 및 좌절에 의해 가중치를받는 경우 봇은 그렇지 않습니다. 이것을 유리하게 사용할 수 있습니다.
따라서 본질적으로 로봇이 결정하는 동안 실제 타이밍 지연을 시뮬레이션하고 합리적이고 현실적인 플레이 패턴을 생성 할 수있을만큼 영리하다면이를 멈출 수있는 방법이 없습니다. 임의의 조건과 간단한 백 채팅 (포커 플레이어 어휘는 일반적으로 상당히 제한적 임)을 던지면 감지하기 매우 어려운 AI 플레이어가 있습니다.
탐지를 피하기 위해 봇이 할 수있는 작업
탐지를 피하는 열쇠는 가능한 한 많은 각도에서 문제에 대해 생각하는 것입니다. 당신은 매우 작고 제한적인 세상에서 지능적인 인간 행동을 시뮬레이션하려고합니다. 실행할 수있는 대부분의 행동 시뮬레이션은 상당히 분명하지만 일관성이없고 예측할 수없는 봇 일수록 발견 될 가능성이 낮아집니다.
사실적인 경기 일정을 만드십시오 (예 : 일주일에 3-5 회, 세션 당 4 시간, 1 년 동안 여기 저기없는 홀수 주).
프로그램을 실행하여 별도의 컴퓨터에서 의사 결정을 내리고 사이트 화면 캡처시 좀비 컴퓨터를 제어합니다.
행동 타이밍 무작위 화 (즉시 행동하지 말고 행동당 0.5 ~ 2 초 기다림)
중요한 결정을 내리는 시간. 결정이 경계선이라면 결정을 계산 한 다음 생각을 시뮬레이션하기 위해 잠시 기다리십시오.
클라이언트 소프트웨어 기능의 무작위 사용. 모든 테이블에있는 "나를 찾아 줘"버튼을 클릭하여 화장실 휴식 시간을 시뮬레이션하고 가끔씩 5 분 휴식을 취하십시오.
시뮬레이션 된 채팅, 포커 채팅은 종종 매우 간단한 한 줄로 이루어지며 일반적으로 토론이나 토론이 아닙니다. 감지 가능한 적절한 순간에 "불운하다"또는 "stfu"와 같은 말을합니다. 또는 코더가 자신의 봇을 모니터링하고 실행 중에 채팅에 참여하도록 할 수도 있습니다.
마우스 움직임이 사실적인지 확인합니다. 테이블이 바둑판 식으로 배열되어 있으면 왼쪽 상단 테이블에서 결정을 내리지 말고 즉시 오른쪽 하단 테이블에서 결정하십시오. 대부분의 사이트 소프트웨어는 이제 키보드 단축키를 제공하며, 이는 마우스 이동으로 사용하는 것이 더 나을 수 있습니다.
아주 단순한 AI 분류자가 기대하지 않는 일을하십시오. 예를 들어, 1 년에 한 번 간단하고 복잡하지 않은 질문으로 전화를 겁니다 ( "오늘 로그인 할 수 없습니다!"또는 "인터넷이 다운되었습니다!") 큰 차이는 없을 것 같지만 포커 회사는 그들이 그것을 실현 가능한 지표로 인식했을만큼 똑똑합니다.
산발적 인 손실 세션. 기울기를 시뮬레이션 할 수 있으며 봇은 플레이가 나쁘고 때때로 돈을 잃을 수 있습니다. 모두 가 어느 시점에서 기울어집니다.
문제는 또한 포커 웹 사이트가 봇이 네트워크에서 실행되고 있는지 여부를 특별히 신경 쓰지 않는다는 것입니다. 각 플레이어는 상당한 가치가 있으며 이론적으로는 순전히 냉소적 인 비즈니스 관점에서 볼 때 유일한 단점이 발견되면 나쁜 언론이 될 것입니다. .
노골적인 익스플로잇이 발견 된 경우에도 (Google에서 Cereus 네트워크 스캔들 또는 Absolute Poker Scandal 검색 , 매우 충격적입니다) 비즈니스는 생존하고 건강하게 유지되는 것으로 보이며, 교육을 잘 받고 우승 한 플레이어 만 잃습니다 (그중에는 많지 않음). 이것은 네트워크에 대한 숙련되지 않은 플레이어의 비율을 증가시켜 좋은 플레이어를 다시 끌어들입니다. 그것은 좋은 구식 캐치입니다 22. 적절한 시장 규제에 대한 훌륭한 주장.
모든 게임에 대해 내쉬 균형이 존재 한다는 점에 유의하는 것이 중요 합니다 . 온라인 포커는 현재 실행되는 방식에 대한 타임 라인을 가지고 있습니다. 봇이 궁극적으로 수학적으로 인계 할 것이기 때문에 미래에 누군가가 그것을 신뢰할 수 있도록 (사람들이 그것을 믿는다면) 더 많은 소셜 (웹캠 / VOIP)으로 옮겨야 할 것입니다. 우월하고 심리적으로 면역이 있습니다. 포커 AI 커뮤니티는 학계 및 / 또는 자본 이익에 힘 입어 매우 활동적 입니다.
리미트 포커와 같은 단순한 버전의 포커 는 작은 검색 공간에서 거의 해결 되었습니다. 더 복잡한 버전의 게임 (No Limit 변형 / Pot Limit Omaha 등)이 인공 플레이어가 이길 수있게되는 것은 시간 문제 일뿐 입니다.
결론
정교한 봇은 업계가보다 소셜 온라인 게임 환경으로 전환 할 때까지 탐지 할 수 없습니다. 이렇게해도 문제가 해결되지는 않지만 봇이 낮은 수준에서 승리하기가 더 어려워 질 것입니다. 우리는 PKR , 3D 및 플레이어가 멀티 태 블링을 수행하기가 매우 까다로운 다른 사이트 의보다 인터랙티브 하고 시간당 손이 적은 버전의 출시로 약간의 변화를 이미 보았습니다 .
이 문제는 또한 업계의 특성으로 인해 고통을 받고 있지만 평판이 점점 더 비즈니스 모델에 통합되는 더 큰 평판이 좋은 웹 사이트를 고수해야하는 또 다른 이유입니다. 투명성이 부족하고 초월성을 가장 하는 것은 원인에 도움이되지 않습니다.
현재 봇 개발자의 진정한 도전은 승리하는 알고리즘을 작성하는 것입니다. 이것은보기만큼 사소한 일이 아닙니다. 포커를하는 사람은 누구나 자신을 좋은 사람,이기거나 손익분기 점 플레이어라고 생각하는데, 이는 사실이 아닙니다. 그렇기 때문에 사람들은 단순히 운이 좋지 않거나 플레이 스타일이 오해를 받아 돈을 잃어도 계속 플레이합니다. 인간 심리학의 이러한 오만함과 약점은 플레이어에게 많은 돈을 잃고 포커가 여전히 수익을 올릴 수있는 근본적인 이유입니다.
포커는 능숙 해지려면 수년이 걸리는 매우 복잡한 게임입니다 ( "배우는 데 10 분, 마스터하는 데 평생 동안"이라는 오래된 속담은 여전히 유효합니다). 행운의 요소는 장기적으로 매우 제한적입니다.
다른 직업과 마찬가지로, 좋은 직업을 얻으려면 수백 시간을 공부하고 수천 시간을 플레이해야합니다. 경험이 부족한 플레이어가 이해하지 못하는 것을 이해하고 경험이 적은 플레이어가 발견하지 못하는 것을 발견합니다. 그 배움은 우리가 살 수있는 것보다 더 오래 지속될 것입니다. 복잡한 게임입니다.
얼마나 자주 당신은 텔레비전에서 큰 돈을 벌어들이는 현금 게임을 보았고 누군가가 "쉬운 전화입니다!"라고 소리 치는 것을 들으셨습니까? 따라서 아마추어가 플레이의 정교함을 이해하거나 인식하지 못하며 그 수준에서 게임을 진정으로 믿지 않는다는 사실을 입증하는 것은 여전히 궁극적으로 간단합니다. 그렇지 않습니다. 그들은 정말 때문에 그 높은 말뚝 플레이어 (많은 시간이) 텔레비전에가 정말 정말좋은. 아마 우리의 아마 우어가 존재를 인식 할 수없는 복잡한 메타 게임도 플레이되고있을 것입니다. 아마츄어는 체스 마스터를 넘어서서 기사를 움직이라고 외치지 않았지만 포커의 역 동성이 불완전한 정보이기 때문에 그들의 심리학은 그들이 말하는 것을 진정으로 믿게 만듭니다. 체스에서와 마찬가지로 결정은 복잡하고 민감하며 전체 게임에서 매우 중요 할 수 있습니다. 게임이 복잡 해짐에 따라 상대방이 기대하기 때문에 사소한 결정은 더 이상 사소한 결정이 아닙니다.
봇이나 게임을 레벨 위로 올리면 필연적으로 더 많은 수의 숙련 된 플레이어를 만날 수 있습니다. 그런 다음 테이블 이미지 , 레인지 밸런싱 , 정교하고 지능적인 블러핑 을 고려하여 전략의 복잡성을 다음 단계로 끌어 올려야합니다. 더 자세한 손 범위 분석으로. 당신이 올라갈 때 정말 다른 게임입니다.
성공한 봇이 작성되면 의심 할 여지없이 코더는 감지 할 수없는 방식으로 봇을 적용 할 수있는 충분한 기술, 지식 및 상식을 갖게됩니다. 이것은 그들에게 사소한 일입니다.
그래서 당신이 할 수있는 일은 정말 없습니다. 온라인으로 플레이하고 싶다면 위험을 이해하십시오. 감당할 수있는 것보다 더 많은 돈을 위험에 빠뜨리지 말고 정확한 지출 기록을 유지하여 자신의 능력을 잘못 평가하고 비현실적이며 궁극적으로 손해를 입지 않도록하십시오. 손절매가 있고 우위가 없거나 우위가 있는지 확실하지 않으면 테이블을 떠나십시오! 물론, 모두가 아무도 이기지 못하도록했다면, 그것이 게임의 약탈적이고 착취적인 성격이며, 그것이 경쟁이 시작되는 곳이고 그것이 그것을 재미있게 만드는 것입니다.
고려해야 할 세 가지 영역이 있습니다. 봇은 테이블의 상태를 파악하고 결정을 내리고 결정을 다시 호스트로 보내야합니다.
테이블의 상태를 파악하는 것은 인식 가능한 형식으로 유선을 통해 전송되거나 사용자에게 표준 텍스트로 표시되는 경우 훨씬 더 쉽습니다. 먼저 이미지 인식을 유일한 옵션으로 설정 한 다음 가능한 한 어렵게 만드십시오. 카드를 3D로 표시하고 카드의 방향과 위치를 천천히 변경합니다. 카드 앞의 작은 깜박임이나 불꽃 놀이를 애니메이션하여 주어진 스크린 샷을 읽을 수는 없지만이를 확인하는 데는 시간이 걸립니다.
결정을 내리는 데는 할 일이 없습니다. 인간이 결정을 내 렸는지 여부를 결정하려는 시도는 정보가 거의없는 튜링 테스트와 같습니다.
3D를 다시 사용하면 결정을 다시 보내기가 어려울 수 있습니다. 패킷을 직접 전송하거나 마우스로 버튼을 클릭하는 것 이외의 다른 방법으로 결정을 제출하기 어렵게 만듭니다. 모든 동작을 할 때마다 버튼을 약간 움직이거나 결정을 기다리는 동안 플레이 영역 주위에 천천히 떠있게하십시오. 버튼을 찾거나 조작 할 수있는 접근성 유형 기능을 비활성화합니다.
PokerPirate는 지금까지 작성된 거의 모든 포커 봇과 마찬가지로 Windows 포커 애플리케이션에서 화면 스크래핑과 마우스 클릭 시뮬레이션을 통해 작동합니다. 따라서 시스템의 핵심은 게임의 개체를 인식하고 창에서 작업을 수행하는 능력입니다. 포커에서 똑똑 할 수 있지만 이러한 기본 작업에는 여전히 문제가 있습니다.
따라서이 봇을 차단하는 확실한 방법은 다음과 같습니다.
이상적으로 유일하게 유효한 솔루션은 봇의 가장 이상적인 행동 응답을 선호하는보다 유리한 논리 조건의 유혹을 제공하여 참여 봇을 유혹하는 허니팟 논리를 만드는 것입니다. 봇이 허니팟에 참여하면 봇에 설정된 시간 제한이 없다고 가정하고 선호하는 봇 조건을 지속적으로 공급해야합니다. 그런 다음 봇을 측정, 기록 및 연구 할 수 있습니다. 봇 외에도 봇이 TOR를 통해 연결되지 않는 경우 연구를 위해 네트워크 및 세션 데이터가 격리됩니다.
이 상황에서 인간과 봇을 구별하는 데 적합한 결정 론적 고려 사항은 덜 심각하지만 봇의 행동을 식별 할 때 결정 론적 고려 사항은 더욱 심각해집니다. 안타깝게도 봇의 소유자는 허니팟 상태 또는 논리적 고려 사항을 알고있는 경우 이러한 식별을 방지하기 위해 봇을 변경할 수 있습니다.
포커 봇을 물리 치는 것은 두 가지 형태를 취할 수 있습니다 : 그들을 식별하고 시스템에서 그들을 금지 시키거나 포커에서 그들을 이길 수 있습니다. 포커에서 그들을이기는 것이 더 흥미로운 학문적 질문입니다. :-)
포커 봇을 물리 치는 것에 대한 몇 가지 논문은 여기를 참조하십시오 : http://www.cs.cmu.edu/~sganzfri/
스캔을 어렵게 만들기 위해 화면을 엉망으로 만드는 또 다른 생각 :
인간의 눈에 가깝지만 동일하지는 않은 다양한 색상으로 카드를 만드십시오. 이렇게하면 읽을 내용을 고르기가 더 어려워집니다. 반대로, 인간의 눈이 배경에서 분리되지 않는 색상으로 카드에 가짜 글씨를 넣으십시오.
봇의 문제는 그들이 괜찮은 인간 플레이어보다 더 잘 플레이한다는 사실입니까, 아니면 나쁜 플레이어가 나타날 때까지 연중 무휴 24 시간 기다린 다음 착유를 시도 할 수 있다는 사실입니까?
또한 누군가가 포커를하는 동안 컴퓨터를 옆에두고 다른 컴퓨터에 조언을 구하는 것이 "합법적"이거나 "속임수"일까요?
플레이어를위한 최적의 전략이 상대방에 대해 알려진 것에 의해 영향을받을 때 리밋 포커의 솔루션 공간을 어떻게 주장 할 수 있는지 잘 모르겠습니다. 플레이어를 분석하려는 시도가 어떻게 개선 될 수 없을 정도로 완벽하다고 주장 할 수 있습니까?
많은 일치 항목에 액세스 할 수있는 경우 데이터 마이닝 접근 방식을 취할 수 있습니다. AI의 플레이 강도는 상당히 일관되어야하지만 인간에게는 단순한 패턴이있을 수 있습니다. 처음 몇 번의 워밍업 라운드에서는 약하고 오랫동안 플레이하면 강도가 저하됩니다. 또한 더 많은 돈이 위태로워지면 인간의 결정 시간이 길어질 수 있습니다.
마우스 이동에 액세스 할 수있는 경우 (또는 웹 앱에서도 해당되는 클릭 위치 이상), 가장 정교한 봇을 제외하고는 봇을 인식하는 것이 매우 간단해야합니다. 인간은 마우스를 정확한 직선으로 움직이지 않으며 속도 향상 및 감속 기간, 통계적으로 설명 할 수있는 클릭 위치 분포 등이 있습니다.
Ajax Control Toolkit NoBot을 살펴보십시오 .
NoBot은 몇 가지 다른 안티 봇 기술을 사용합니다.
* Forcing the client's browser to perform a configurable JavaScript calculation and verifying the result as part of the postback. (Ex: the calculation may be a simple numeric one, or may also involve the DOM for added assurance that a browser is involved)
* Enforcing a configurable delay between when a form is requested and when it can be posted back. (Ex: a human is unlikely to complete a form in less than two seconds)
* Enforcing a configurable limit to the number of acceptable requests per IP address per unit of time. (Ex: a human is unlikely to submit the same form more than five times in one minute)
100 % 해결책은 불가능합니다. 제가 추구하는 것은 AI를 자기 자신에 대항하여 사용함으로써 비용을 절약 할 수있는 해결책입니다. PokerPirate의 AI 인스턴스를 서버 측에서 실행하고 모든 게임에서 보이지 않는 플레이어로 플레이하십시오. 플레이어가 너무 많은 동일한 동작을 수행하면 아마도 PokerPirate의 인스턴스를 실행하고있을 것입니다. 이것은 공격자가 빠질 수 있는 일종의 허니팟 또는 함정입니다. 공격자는 봇을 덜 성공적으로 만들어이 허니팟을 방어 할 수 있습니다. 따라서 이것은 공격자가 항상 훔칠 수있는 "고양이와 마우스"의 함께 만드는 약간의 돈을과 수비수는 항상 저장할 수 있습니다 약간의 돈.
"We've been working on categorizing and understanding styles of play, [...] it gets more difficult in games against top players because they mix up their play deliberately to confuse you." Being unpredictable is a good strategy, he adds. "If our computer is going to beat the world champion, it's got to do something similar."
훨씬 더 쉬운 방법이 있습니다. 예. 많은 제안이 옳고 필요합니다. 그러나 약 90 %의 사기가 너무 단순한 방식으로 감지됩니다.
누군가 봇이 그를 위해 일하게한다면, 그는 얼마 후 두 번째 봇이 그를 위해 일하기를 원할 것입니다. (다른 기계 또는 기타) 그러나 : 그는 기억하기 어렵 기 때문에 동일한 암호를 사용합니다 2 (<--- 비꼬는)
남은 것 : 동일한 게임 동작과 동일한 암호 해시를 가진 계정을 확인하십시오.