击败扑克机器人


107

有一个名为PokerPirate的新的开源扑克机器人。我对Web应用程序可以检测/阻止/击败扑克机器人的任何创新方式感兴趣。(这纯粹是学术性的讨论,本着与《 PokerPirate》写作的精神。)


8
我想您的意思是“任何其他方式”,因为最重要/最重要的答案是您自己的:-)
David Johnstone 2010年

9
与每个玩家交谈。
拉瑟五世

2
@Lasse:嗯,如果玩家是通过图灵测试的机器人,这还不够
lornova 10'July

5
无论它是否可以通过图灵测试,它都不会阻止机器人创建者坐在桌子旁并花费大量时间聊天。
Tom Gullen

6
最好的方法是做维加斯做的事情:制定游戏规则,因此唯一的获胜策略是成为房屋,然后成为房屋。到那时,机器人所能做的就是更快地赚钱,而您可以退出关怀。
BCS

Answers:


209

从服务器端的角度击败机器人

  1. 许多在线扑克网站使用弹出 验证码是由可疑活动触发输入。

  2. 一些扑克网站监视着比赛的时间和方式(例如,最坏的情况是一个连续24x7和16桌的玩家,这是一个真正的人的机会很小(但是有些玩家确实有很大的玩法能力)卷这对缺乏经验的眼睛似乎是一个机器人)

  3. 引发故障。如果您怀疑玩家是机器人,请将其所有纸牌位置更改为屏幕上的几个像素,为1/100手为其设置不同的颜色/设计/图案,然后查看是否将其抛出。如果无法抓屏,它将暂停所有决策,这是确凿的机器人证据。

  4. 计时表明,如果计算机玩家一次以毫秒为单位对选项做出响应,而又不停地思考大型决策,则这可能是可疑的

  5. 自我监控。扑克网站 pokertableratings.com数据挖掘了许多大型站点。人们对它的热情喜忧参半,有人喜欢这种透明感,有人讨厌这种透明感。这样做的好处是,在某些情况下,可疑的球员统计信息(VPIP百分比,PFR百分比是可以记录的大量可量化统计数据中的少数)可以得出作弊结论。

  6. 人工智能 分类网络可以监控可量化的统计数据,以对流氓作弊或机器人玩家进行分类。

  7. 早在在线扑克是一个相对较新的实体时,就有谣言和谈话以有限的证据表明,一些扑克客户端软件对可疑玩家的桌面进行了截屏,以查看他们是否正在运行帮助他们的程序。但是(即使这是真的)运行两台计算机来独立执行两项任务也可以解决此问题。

  8. 在多个站点之间的重复犯罪者之间共享信息,如果他们是受人尊敬的并且由有责任心的负责人来管理,将对行业有利。

  9. 如果您能够发现它们的玩法并查看它们在相同情况下的行为,某些机器人在设计上可能会非常简单(请注意,这仅适用于精通基本策略的不成熟的机器人),您可以相当快地发现它们。

  10. 程序功能的不一致使用将使玩家成为真实玩家。例如,游戏中的许多扑克网站都有“轮到我时折”按钮。如果您的牌不好,并且正在等待其他玩家决定该怎么做,那么很多玩家都会选择此按钮。机器人可以使用这些按钮。区别在于,机器人将处于使用频率的最高点,他们可能会一直使用它们,或者根本不使用它们。玩家通常可能会按“自动折叠”,但有时即使在最有利的条件下,他们仍然会单击“折叠”。例如,一个真正的玩家通常会按下自动折叠,但是这次却没有。在没有其他玩家参与的情况下,这对他们是折合的,现在,他们已经呈现出了最有利的状态。现在,如果他们按折叠,他们从一开始就很倾向于按自动折叠。这是不一致的/未优化的/随机的行为,与作为人类一致。计时指示何时单击这些功能是其他指示器。重要的是要认识到这些都是指标,而不是结论性的证明。所有这些行为指标都可以轻松模拟。

从玩家角度击败机器人

  1. 尝试使用诸如PokerTracker之类的软件记录并收集尽可能多的数据

  2. 尝试识别游戏风格的模式

  3. 尝试找到与底池/#玩家成比例的下注大小与手牌强度之间的关系

  4. 尝试计算其手的范围。一个低赌注的机器人可能不会经常虚张声势,不会引起任何重大的战略关注,因此为其构建高度准确的手部范围应该不会太棘手。

  5. 尝试通过数据分析和反复试验来发现游戏中的漏洞。一旦发现漏洞/模式,就尝试重复利用漏洞并避免其他情况。

在人有适应能力的地方,机器人可能就不那么适应了,而人在倾斜结果导向的思维挫败感的影响下承受着重担,而机器人则没有。您可以利用此优势。

因此,从本质上讲,如果机器人足够聪明,可以在决策过程中模拟实际的计时延迟,并创建合理且逼真的游戏模式,则您无能为力。在一些随机条件下和简单的后聊中投掷(扑克玩家词典通常相当有限),您将拥有一个很难被发现的AI玩家。

机器人可能会采取什么措施来避免被检测到

避免检测的关键是从尽可能多的角度考虑问题。您正在尝试在一个非常狭小的世界中模拟人类的聪明行为。您可以运行的大多数行为模拟都是相当明显的,但是您的机器人越不一致和不可预测,发现它的可能性就越小。

  1. 制定切合实际的比赛时间表(即每周3–5次,每节课4个小时,一年中的这一周都是零星的)。

  2. 运行程序在另一台计算机上进行决策,以控制僵尸计算机,以防任何站点截屏。

  3. 随机设置动作时间(不要立即动作,每次动作要等待0.5–2秒)

  4. 花时间做出重大决定。如果决定是临界点,请计算该决定,然后等待一段时间以模拟思想。

  5. 随机使用客户端软件功能。通过单击所有表格上的“交易我出去”按钮来模拟厕所休息时间,并时不时休息5分钟。

  6. 模拟聊天,扑克聊天通常是非常简单的一种方式,从不进行讨论或辩论。在适当的可检测时刻说出“不幸”或“ stfu”之类的东西。甚至让编码器监视他的机器人并在执行过程中进行聊天。

  7. 确保鼠标移动真实。如果桌子是 平铺的,则不要在左上方的桌子上做出决定,然后立即在右下方的桌子上做出决定。现在,大多数站点软件都提供键盘快捷键,这些键可能比鼠标移动更适合使用。

  8. 做一些简单的AI分类器不会期望的事情。例如,每年一次用简单而不复杂的查询(“帮助我今天无法登录!”或“互联网已关闭!”)给他们打电话。扑克公司足够聪明,他们可能已经意识到它是可以实现的指标。

  9. 零星的输球。可以模拟倾斜,并且机器人可能会表现不佳,并且时不时地损失一些钱。 每个人都有点倾斜。

令人担忧的是,扑克网站并不特别在意机器人是否在其网络上运行,每个玩家的佣金都很高,从理论上讲,从纯粹的愤世嫉俗的商业角度来看,唯一的弊端就是发现了不良新闻。

即使发现了公然的漏洞利用(在Google上搜索Cereus网络丑闻或Absolute Poker丑闻,这也非常令人震惊),该业务似乎可以生存并保持健康,只失去受过良好教育并能赢得竞争的玩家(人数不多)。这增加了网络中技术水平较低的玩家的比例,从而吸引了优秀的玩家。这是个不错的选择。22.适当的市场监管的一个极好的理由。

值得注意的是,每场比赛都存在纳什均衡。在线扑克有一个时间表,即现在的运行方式,它必须进入一种更具社交性的网络摄像头(网络摄像头/语音),以便任何人将来信任它(如果人们信任它),因为机器人最终将在数学上接手优越,并且在心理上免疫。在学术界和/或资本收益的推动下,扑克AI社区非常活跃

在较小的搜索空间中,诸如极限扑克之类的较简单版本的扑克已经几乎被解决。较复杂的游戏版本(无极限变化/底池极限奥马哈等)对于人造玩家来说可谓战胜只是时间问题。

结论

直到行业转向更具社交性的在线游戏环境之后,才能检测到复杂的机器人。这不会解决问题,但是肯定会使僵尸程序在较低级别上获胜变得更加困难。随着PKR3D的发布以及其他站点的互动性更高,时针更少的版本的出现,我们已经看到了一些微小的变化,在这些站点中,多桌游戏对于玩家而言非常棘手。

该问题还受制于该行业的性质,这也是坚持使用信誉更好的大型网站的另一个原因,在该网站中,声誉已越来越融入其业务模型中。缺乏透明度和伪装的横行无助无济于事

目前,对于机器人开发人员来说,真正的挑战是编写一个成功的算法,这看起来并不简单。每个玩扑克的人都认为自己是好人,获胜或收支平衡的玩家,这根本不是事实。这就是为什么人们继续玩游戏的原因,即使他们在幻想的情况下赔钱,他们只是倒霉,或者他们的游戏风格被误解了。人类心理上的这种傲慢和虚弱使玩家损失了很多钱,这也是扑克仍然可以盈利的根本原因。

扑克是一个非常复杂的游戏,要花好几年才能熟练掌握(古老的格言是正确的,“十分钟的学习时间,一生的掌握时间”)。从长远来看,运气要素极为有限。

像其他任何职业一样,要获得良好的职业,就需要学习数百小时,数百小时,并且玩数千小时。您将了解经验不足的玩家不会理解的事物,发现经验不足的玩家不会发现的事物。学习持续了很长时间,也许比我们可以生存的时间更长。这是一个复杂的游戏。

您有多少次在电视上看到高额现金游戏,并听到有人大喊“这很简单!” 因此证明业余爱好者真的不了解或识别游戏中的复杂性,并且真正相信该级别的游戏最终仍然很简单。不是。那些高赌注的玩家(很多时候)都在电视上,因为他们真的 真的好。也可能正在玩一个复杂的元游戏,而我们的auauer无法识别它的存在。业余者不会站在国际象棋大师的面前,朝他们大喊大叫,以移动他们的骑士,但是由于扑克信息不完善的动态,他们的心理使他们真正相信了自己的话。像在国际象棋中一样,决策可能是复杂的,敏感的,并且对整个游戏极为重要。随着游戏复杂性的提高,琐碎的决定不再那么琐碎,因为您的对手期望它们。

一旦将您的机器人或游戏上移,您将不可避免地遇到大量技术娴熟的玩家。然后,您的策略的复杂性将不得不上升到一个新的水平,其中要考虑到表格图像范围平衡,复杂而智能的虚张声势(IE不仅虚张声势虚张声势,虚张声势虚张声势和对图像虚张声势等等),进行更详细的手部范围分析。当您向上移动时,确实是另一种游戏。

一旦编写了成功的机器人,毫无疑问,编码人员将具有足够的技能,知识和常识,以无法检测的方式应用该机器人。这对他们来说是微不足道的。

因此,您实际上无能为力。如果要在线玩,请了解风险。永远不要冒险承受超出您承受能力的金钱,并尝试保持准确的支出记录,这样就不会因误导,不切实际而最终损害自己的能力估计。止损,如果您没有优势,或者不确定自己是否具有优势,请离开桌子!当然,如果每个人都做到了没有人能赢,那就是游戏的掠夺性和剥削性,这就是比赛的来历,这就是让比赛变得有趣的原因。


3
至少在模拟显示器时代,有可能在与玩游戏的计算机完全分开的计算机上运行抓屏器。当然,在游戏的软件中检测这种事情是完全不可能的。即使HDCP不允许人们用现代计算机的视频输出来做这种事情,也总是可以使用精确瞄准的摄像机。如果人们容易阅读卡,机器将不会有麻烦。
超级猫

如今,您甚至可以在VM及其外部的bot上运行游戏,捕获图像并发送键盘/鼠标事件。
安德烈·帕拉梅斯(AndréParamés)2011年

看一下OpenHoldem。这个东西甚至还具有一些DLL扩展,可以模拟鼠标抖动和类似于人的鼠标加速的单击按钮。如果您的代码为Call或Check / Fold / Raise生成了三倍的概率,那么如果没有成千上万的牌就很难定位模式。
rndapology 2011年

9

有三个单独的区域要考虑。机器人必须找出表的状态,做出决定,然后将决定发送回主机。

如果以某种可识别的形式通过电线发送表格或将其作为标准文本显示给用户,那么弄清表格的状态就容易得多。首先,使图像识别成为唯一选择,然后使其尽可能难。以3D模式显示卡片,然后缓慢更改卡片的方向和位置。对卡片前的小闪烁或烟火进行动画处理,因此任何给定的屏幕截图都可能难以辨认,但确定它甚至需要一段时间。

做出决定无事可做。试图决定是否由人做出决定就像是几乎没有任何信息的图灵测试。

再次使用3D会使发送回决定变得困难。除了用鼠标单击按钮以外,很难直接发送数据包或以其他方式提交决策。每次进行操作时,请稍稍移动按钮,或者让它们在等待决定的过程中缓慢地围绕游戏区域浮动。禁用所有允许找到或操作按钮的辅助功能类型的功能。


3
通过困难实现安全。假设您可以流式播放游戏的渲染视频,则目标是使其成为移动的验证码。
2010年

3
@The Rook:您在问题中引用的PokerPirate与HTTP绝对无关。实际上,我怀疑是否有使用HTTP的赌博扑克网站。您的问题,答案和评论表明您对该主题知之甚少。在向人们提供建议之前,您应该先了解自己在说什么。:)
RarrRarrRarr

2
@drawnonward:如果完全不考虑可用性,则可以通过断开所有数据连接来获得安全性,这可以说是一种阻止作弊的创新方法。除了可用性,我看不到如何评估安全措施。
David Thornley,2010年

1
@drawnonward:当然可以,但是(a)没有密码我不能去银行网站,(b)大多数人比在线扑克更需要银行业务,并且(c)这并不是一种持续的烦恼将持续很长时间。该解决方案可能比原始问题更糟。
David Thornley,2010年

2
最初的问题是确保只有人才能在网页上玩扑克。在银行网站上,一旦输入密码,便会得到主机的信任。在这种情况下,您无法采取任何措施来获得主机的持续信任,因此安全挑战必须是连续的。
2010年

8

就像几乎所有以前编写的扑克机器人一样,PokerPirate的工作原理是通过屏幕抓取并模拟Windows扑克应用程序中的鼠标点击。因此,系统的关键要素是它能够识别游戏中的对象并在窗口中进行操作。尽管在扑克上很聪明,但这些基本操作仍然可能遇到麻烦。

因此,阻止该机器人的明显方法包括:

  1. 在比赛前或在其他因素提示玩家可能是机器人的情况下实施验证码。
  2. 使桌面图形更加复杂,或在整个游戏中更改主题。
  3. 检测异常快和/或机械手的鼠标移动和点击(人类永远不会在数学上完美的直线上移动鼠标)。

2
其中大部分是安全性,尽管默默无闻。所有这些都可以被破解,包括验证码。尽管我承认这是最难打破的部分。(+1没有100%的解决方案,其中大部分描述都可以与其他技术结合使用。)
rook 2010年

2
无论如何,验证码机器人现在有多好?我会告诉你:人类从Google Apps获得的图像中有一半是不可能阅读的。
WCWedin 2010年

所有计算机的安全性都是默默无闻的。某人无法阅读加密电子邮件的原因是因为他们无法轻松找到私钥。但是如果有足够的时间和计算资源,这也可能被“破坏”。大多数验证码都相当不错,将淘汰99.99%的机器人。
塞林2010年

5

理想情况下,唯一有效的解决方案是创建一个蜜罐逻辑,该逻辑通过提供更有利的逻辑条件(该逻辑条件有利于该机器人的最理想的行为响应)的诱惑来吸引一个参与其中的机器人。一旦僵尸程序进入蜜罐,您必须连续提供僵尸程序所希望的条件,前提是假定僵尸程序没有设置超时时间。然后可以对机器人进行测量,记录和研究。除了机器人以外,如果机器人未通过TOR进行连接,您还将隔离网络和会话数据以进行研究。

在这种情况下,适合将机器人与人类区分开来的确定性考虑就不那么严格了,但是,确定机器人的行为后,确定性考虑就变得更加严格。不幸的是,如果机器人的所有者知道蜜罐状况或其逻辑考虑,则它可以对机器人进行更改以防止这种识别。


3
引用孙子:“知道你的敌人”。避开他的长处,探索他的弱点。
jweyrich'5

这不是一个坏主意,我对该软件的外观很感兴趣。您是否愿意针对特定条件进行详细说明?
rook 2010年

1
Tor出口点相当有限。任何通过tor存在点连接的玩家都应该是可疑的。
基督教徒

创建蜜罐对于扑克网站而言可能会非常昂贵
Tom Gullen

您可以认为它正在赚钱。
杰夫·戴维斯

4

击败扑克机器人有两种形式:您可以尝试识别它们并将其禁止进入系统,或者可以在扑克中击败它们。在扑克上击败他们是一个更有趣的学术问题。:-)

请参阅此处,了解有关击败扑克机器人的一些论文:http : //www.cs.cmu.edu/~sganzfri/



2

关于弄乱屏幕以使其难以扫描的另一种想法:

用不同颜色的整张卡片制作卡片-以人眼看却不一样。这将使得挑选要阅读的东西变得更加困难。另一方面,将伪造的文字以人眼不会脱离背景的颜色放在卡片上。


2
不幸的是,对于任何有竞争力的程序员来说,这都是很容易克服的,因为他们会筛选刮擦颜色范围,而不是绕过此解决方案的确切值。
Tom Gullen

如果固定了色彩范围,那么色彩范围会起作用-但是,如果您不断更改,该怎么办?这意味着必须对刮板进行编程才能理解人类的视觉。并非不可能,但这会使事情变得更加艰难。
Loren Pechtel

有道理,但它将大大降低有效用户对该软件的体验,这可能是不好的生意。
汤姆·古伦

很容易打败。我之前写过一个扑克机器人,并且通过计算边界框中的图像相似度来进行纸牌识别。即使所有像素都不完全相同(因为卡的颜色或屏幕位置每次都略有变化),我仍然可以使用这些相似性度量来识别“最有可能”的卡。
benjismith

您为什么认为颜色必须保持相似?循环使用各种不同的颜色并循环显示背景-我正在描绘一种效果,就像波浪一样,不断扫过卡片并改变颜色。保持足够的对比度,并确保产生的颜色不难看。
罗伦·佩希特尔

2

机器人的问题是,他们的表现要好于体面的人类玩家,还是他们可以等待24/7左右才能让不良玩家出现,然后尝试挤奶?

另外,有人在玩扑克时在他旁边坐着一台计算机,咨询另一台计算机以寻求建议是“合法的”还是“欺骗”的?

当一个玩家的最佳策略会受到对手的了解时,我不确定如何才能说“解决了”极限扑克的解决空间。如何分析玩家声称自己如此完美以至于无法改进的任何尝试?


这是关于扑克是否可以解决的有趣讨论:forumserver.twoplustwo.com/29/news-views-gossip / ...那里的一些海报非常有名。问题在于,从理论上讲,机器人将以无与伦比的方式运行。此外,您描述为“帮助”您的软件是一个灰色区域,许多站点都允许使用数据分析软件,例如PokerTracker / PokerOffice,但在ICM计算器和其他数学决策工具上却能划清界线(例如,在Hyper涡轮增压锦标赛最终游戏策略)。
汤姆·古伦

1

如果您可以访问很多匹配项,则可以采用数据挖掘方法。AI的演奏强度应该是相当一致的,而对于人类来说可能是简单的模式-在前几个热身赛中较弱,并且长时间演奏后强度会下降。同样,当有更多的金钱处于危险中时,人类的决策时间可能会增加。

如果您有权访问鼠标移动(或至少单击位置,即使对于Web应用程序也是如此),除了最复杂的机器人以外,识别机器人应该非常简单。人类不会按照精确的直线移动鼠标,而是会加速和减速,并在统计上可描述点击位置分布等。


现在,许多扑克站点都实现了用于多桌游戏的键盘快捷键,因此您完全可以在漫游器中完全不需要鼠标。我也不认为决策通常会花大价钱,这主要与决策难度有关。
汤姆·古伦

1

看看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)

0

100%的解决方案是不可能的,我要提出的解决方案是使用AI对抗自身,从而节省资金。在服务器端运行一个PokerPirate的AI实例,并在每个游戏中以隐形玩家的身份进行游戏。如果任何玩家执行太多相同的动作,那么他们可能正在运行PokerPirate实例。这是攻击者可能陷入的蜜罐或陷阱。攻击者可以通过使机器人变得不太成功来防御此蜜罐。因此,这就是“猫和老鼠”的到来,攻击者总是可以窃取一些钱,而防御者总是可以节省一些钱。


5
可惜您删除了其他几乎相同的答案,因为它包含有趣的反馈。
Paul Dixon

这是假设只有一个扑克机器人在玩,而人类永远不会做与机器人一样的事情。
2010年

@drawnonward一种人是不是要像一个机器人的所有的时间,这里有一个模糊的因素。
菜鸟

3
@TheRook'咆哮的“ AI”应该纯粹是数学上的,总会有“正确答案”。只有在完全信息的游戏中,扑克才是唯一的事实。在给定相同状态的情况下始终执行相同动作的玩家变得可预测,因此容易被击败。最好的机器人会具有随机性。即使是最数学的玩家也会建议即使在相同情况下(通常具有一定百分比的概率)也要改变行为。
戴维

1
@The Rook我不是这是一个学术背景,但是我确实找到了一个参考资料(几乎您捡到的任何严肃的扑克书都会同意,在高水平的比赛中不可预测性至关重要)sciencenews.org/sn_arc98/ 7_18_98 / bob1.htm一些报价:"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."
Davy8

-2

有很多简单的方法。是。许多建议是正确的,并且是必要的。但是大约90%的欺诈行为都以太简单的方式被发现。

如果有人让机器人为他工作,一段时间后,他会希望第二个机器人为他工作。(另一台机器或其他机器),但:他将使用相同的密码,因为很难记住2(<---讽刺)

还剩什么: 用相同的游戏行为和相同的密码哈希检查帐户。


如何可靠?我猜很多人都在使用相同的密码。甚至不要让我开始使用像他们生日那样的密码,或者仅仅是“ azerty”或“ password”。
DuoSRX 2010年

6
给哈希加盐!> =(
WCWedin

1
@WCWedin很好,所有密码哈希都应使用唯一的盐。

@DuoSRX正确,不可靠,但很好。整个结果清单将交给欺诈团队,然后他们会对帐户进行背景调查。@WCWedin是的。nobrainer ;-)
cRichter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.