有一个名为PokerPirate的新开源扑克机器人。我对 Web 应用程序可以检测/阻止/击败扑克机器人的任何创造性方式感兴趣。(这是一个纯粹的学术讨论,与 PokerPirate 的写作精神相同。)
12 回答
从服务器端的角度击败机器人
许多在线扑克网站使用 由可疑活动触发的弹出式验证码输入。
一些扑克网站监控游戏时间和模式(即,最坏的情况是玩家连续玩 24x7 和 16 桌,这是一个真正的人的可能性很小。(但是有些玩家确实有能力玩非常大的手对没有经验的人来说似乎是机器人的卷)
扔它毛刺。如果您怀疑某个玩家是机器人,请将他们所有的扑克牌位置从屏幕上的几个像素处更改,为 1/100 手牌制作不同的颜色/设计/图案,看看是否会抛出它们。如果它不能进行屏幕抓取,它的所有决定都会超时,这是非常确凿的机器人证据。
时间告诉我们,如果计算机玩家一次以毫秒为单位对选项做出响应,而没有停下来思考重大决策,这可能是可疑的
自我监控。扑克网站 pokertableratings.com数据挖掘了很多大型网站。它受到了褒贬不一的欢迎,有些人喜欢透明,有些人讨厌它。然而,好处是,在某些情况下,可疑的玩家统计数据(VPIP 百分比、PFR 百分比是可以记录的大量可量化统计数据中的一小部分)导致了作弊的结论
人工智能 分类网络可以监控可量化的统计数据,以对流氓作弊或机器人玩家进行分类。
回到当在线扑克是一个相当新的实体时,有谣言和谈论有限的证据表明,一些扑克客户端软件会截取可疑玩家桌面的屏幕截图,以查看他们是否正在运行可以帮助他们的程序。但是(即使这是真的)运行两台计算机来独立执行这两个任务可以解决这个问题。
有些机器人在设计上可能非常简单,如果你能发现他们的游戏风格并观察它们在相同情况下的行为(注意这只有在不成熟的机器人玩非常基本的策略时才有可能)你可以相当快地发现它们。
程序功能的不一致使用将倾向于玩家是真实的。例如,游戏中的许多扑克网站都有“轮到我时弃牌”按钮。如果你拿到一手坏牌,正在等待其他玩家决定怎么做,很多玩家会选择这个按钮。机器人可能会使用这些按钮。不同之处在于,机器人将处于使用频率的极限,他们可能会一直使用它们,或者根本不使用它们。玩家通常可能会按下“自动弃牌”,但有时即使在最有利的条件下,他们也会点击弃牌。例如,真正的玩家通常会按下自动弃牌,但这次他们没有。在没有其他球员表演的情况下,他们已经放弃了,现在他们已经获得了最有利的条件。现在,如果他们按下折叠键,他们会从一开始就非常倾向于按下自动折叠键。这是不一致/未优化/随机的行为,与人类一致。计时说明何时单击这些功能是其他指标。重要的是要认识到这些都是指标,而不是决定性的证据。所有这些行为指标都可以轻松模拟。
从玩家的角度击败机器人
尝试使用PokerTracker等软件记录和收集尽可能多的数据
尝试识别其演奏风格中的模式
尝试找出与底池/# 玩家成正比的下注大小与牌力之间的关系
尝试计算其手牌范围。一个低赌注下注的机器人可能不会频繁地诈唬而不会引起任何重大的战略问题,因此为其构建高度准确的手牌范围应该不会太棘手。
尝试通过数据分析和反复试验发现其游戏中的漏洞一旦发现漏洞/模式,尝试重复利用它们并避免任何其他情况。
在人类能够适应的地方,机器人可能不太适应,而在人类受到倾斜、以结果为导向的思维和挫折的影响的地方,机器人则不然。你可以利用它来发挥你的优势。
因此,从本质上讲,如果机器人足够聪明,可以在决策过程中模拟真实的时间延迟,并创建合理且逼真的游戏模式,那么您就无法阻止它。加上一些随机条件和简单的回聊(扑克玩家的词汇通常相当有限),你就拥有了一个很难被发现的 AI 玩家。
机器人可能会做什么来避免检测
避免被发现的关键是从尽可能多的角度考虑问题。你正试图在一个非常狭小的世界中模拟智能人类行为。您可以运行的大多数行为模拟都相当明显,但是您的机器人越不一致和不可预测,它被发现的可能性就越小。
制定现实的演奏时间表(即每周 3-5 次,每次 4 小时,一年中偶尔会有一周的时间)。
运行程序以在单独的计算机上做出决策,控制僵尸计算机以防任何站点屏幕截图。
随机化行动时间(不要立即行动,每次行动等待 0.5-2 秒)
把时间花在重大决定上。如果一个决定是临界的,计算决定然后等待一段时间来模拟思考。
随意使用客户端软件功能。通过单击所有桌子上的“让我出局”按钮来模拟厕所休息时间,不时休息 5 分钟。
模拟聊天,扑克聊天往往是很简单的一句台词,通常从不讨论或辩论。在适当的可察觉的时刻说诸如“不幸”或“stfu”之类的话。甚至让编码人员监控他的机器人并在执行期间参与聊天。
确保鼠标移动是真实的。如果桌子是 平铺的,不要在左上方的桌子上做出决定,然后立即在右下方的桌子上做出决定。大多数网站软件现在都提供键盘快捷键,这些可能比鼠标移动更适合使用。
做一些简单的人工智能分类器不会期待的事情。例如,每年一次给他们打电话,用一个简单的非复杂查询(“帮助我今天无法登录!”或“互联网已关闭!”)不太可能有很大的不同,但如果为该公司工作的人扑克公司足够聪明,他们可能已经将其视为一个可靠的指标。
零星的失败会话。倾斜可以被模拟,机器人可能会玩得很糟糕并且时不时地赔钱。 每个人都会在某个时候倾斜。
令人担忧的是,扑克网站并不特别关心机器人是否在他们的网络上运行,每个玩家都值得大量的抽成,理论上从纯粹愤世嫉俗的商业角度来看,唯一的缺点是如果被发现的话,只会造成负面新闻.
即使发现了公然的漏洞,(在谷歌上搜索Cereus 网络丑闻或绝对扑克丑闻,这非常令人震惊)该业务似乎仍然存在并保持健康,只是失去了受过良好教育和获胜的玩家(其中并不多)。这增加了网络中技术水平较低的玩家的比例,这反过来又吸引了优秀的玩家回来。这是一个很好的老式catch 22。适当的市场监管的一个很好的论据。
需要注意的是,对于每场博弈,都存在一个纳什均衡。在线扑克有一个时间表,就像它现在的运行方式一样,它必须进入更具社交性的东西(网络摄像头/voip),以便将来任何人都信任它(如果人们信任它),因为机器人最终会在数学上接管优越,并且在心理上免疫。扑克人工智能社区非常活跃,受到学术界和/或资本利益的推动。
更简单的扑克版本(例如限注扑克)在小的搜索空间中几乎已得到解决。更复杂的游戏版本(无限注变化/底池限注奥马哈等)成为人工玩家可以击败的只是时间问题。
结论
在行业转向更具社交性的在线游戏设置之前,无法检测到复杂的机器人。这不会解决问题,但肯定会使机器人更难在较低级别获胜。我们已经看到随着PKR、3D 的发布和其他网站的互动性更强、每小时手数更少的版本的发布,玩家很难完成多桌游戏。
该问题还受到行业性质的影响,这是坚持使用更大、更有信誉的网站的另一个原因,这些网站的声誉越来越多地融入其商业模式。缺乏透明度和假装透明无助于这一事业。
目前机器人开发者面临的真正挑战是编写一个获胜的算法,这并不像看起来那么简单。每个玩扑克的人都认为自己很好,赢了或收支平衡,这根本不是真的。这就是为什么人们继续玩,即使他们输了钱,因为他们认为他们只是运气不好,或者他们的游戏风格被误解了。人类心理的这种傲慢和弱点让输掉的玩家损失了很多钱,这也是扑克仍然可以盈利的根本原因。
扑克是一种极其复杂的游戏,需要数年时间才能精通(古老的格言仍然正确,“学习十分钟,掌握一生”)。从长远来看,运气元素是极其有限的。
像任何其他职业一样,要取得好成绩,您需要学习数百小时,玩数千小时。你会理解经验不足的玩家不会理解的东西,发现经验不足的玩家不会发现的东西。学习持续了很长时间,也许比我们能活的时间更长。这是一个复杂的游戏。
你有多少次在电视上看到一场高额现金游戏并听到有人对它大喊“这是一个简单的电话!” 从而证明业余爱好者真的不了解或认识到比赛的复杂性,并真正相信该级别的比赛最终仍然很简单。它不是。那些高风险玩家(很多时候)出现在电视上,因为他们真的真的 真的好的。可能还有一个复杂的元游戏正在玩,我们的 amauer 无法识别它的存在。业余爱好者不会站在国际象棋大师面前大喊大叫来移动他们的马,但由于扑克的动态性是不完美的信息,他们的心理使他们真正相信他们所说的话。就像在国际象棋中一样,决策可能是复杂的、敏感的并且对整个游戏极其重要。随着游戏复杂性的增加,琐碎的决定不再那么琐碎,因为你的对手期待它们。
一旦你将你的机器人或游戏提升到更高的级别,你不可避免地会遇到更多更熟练的玩家。然后,你的策略的复杂性将不得不上升到一个新的水平,考虑到桌面图像、范围平衡、复杂和智能的诈唬(IE 不仅仅是在弱点诈唬、在范围诈唬和在图像上诈唬等),有更详细的手牌范围分析。当您向上移动时,这确实是一种不同的游戏。
一旦编写了获胜的机器人,毫无疑问,编码员将拥有足够的技能、知识和常识,以无法察觉的方式应用该机器人。这对他们来说是微不足道的。
所以你真的无能为力。如果您想在线玩,请了解风险。永远不要冒险超出您的承受能力,并尝试保持准确的支出记录,这样您就不会对自己的能力有错误的、不切实际的和最终破坏性的估计。设置止损,如果你没有优势,或者你不确定自己是否有优势,就离桌!当然,如果每个人都这样做,没有人会赢,这就是游戏的掠夺性和剥削性,这就是竞争的来源,这就是它的乐趣所在。
需要考虑三个不同的领域。机器人必须弄清楚表的状态,做出决定,然后将决定发送回主机。
如果表格以某种可识别的形式通过网络发送或作为标准文本显示给用户,则确定表格的状态会容易得多。首先,让图像识别成为唯一的选择,然后让它变得尽可能困难。以 3D 形式显示卡片并慢慢改变卡片的方向和位置。为卡片前的小闪烁或烟花设置动画,因此任何给定的屏幕截图都可能难以辨认,但即使确定这一点也需要一段时间。
做出决定没有什么可做的。试图决定一个决定是否是由人做出的,就像一个几乎没有信息的图灵测试。
再次使用 3D 可能会使返回决策变得困难。使直接发送数据包或通过鼠标单击按钮以外的任何其他方式提交决定变得困难。每次操作时稍微移动按钮,或者在等待决定时让它们在游戏区域周围缓慢浮动。禁用任何允许查找或操作按钮的辅助功能类型功能。
PokerPirate 与几乎所有编写过的扑克机器人一样,通过屏幕抓取和模拟 Windows 扑克应用程序中的鼠标点击来工作。因此,系统的关键是它能够识别游戏中的对象并在窗口中做出动作。尽管它在扑克中可能很聪明,但在这些基本操作上可能仍然存在问题。
因此,阻止该机器人的明显方法包括:
- 在游戏之前或当其他因素表明玩家可能是机器人时实施验证码。
- 使表格图形更复杂,或在整个游戏中更改主题。
- 检测异常快速和/或机器人鼠标移动和点击(人类永远不会在数学上完美的直线上移动鼠标)。
理想情况下,唯一有效的解决方案是创建一个蜜罐逻辑,通过提供有利于机器人最理想行为响应的更有利逻辑条件的诱惑来吸引参与的机器人。一旦机器人进入蜜罐,您必须不断地向机器人提供它喜欢的条件,假设机器人没有设置超时。然后可以测量、记录和研究机器人。除了机器人之外,如果机器人没有通过 TOR 连接,您还可以隔离网络和会话数据以供研究。
在这种情况下,适合将机器人与人类区分开来的确定性考虑不那么严格,但是,识别机器人行为时的确定性考虑变得更加严格。不幸的是,如果该机器人的所有者知道蜜罐条件或其逻辑考虑,则该机器人的所有者可以对机器人进行更改以防止这种识别。
击败扑克机器人可以采取两种形式:您可以尝试识别它们并将它们从系统中禁止,或者您可以在扑克中击败它们。在扑克中击败他们是更有趣的学术问题。:-)
有关击败扑克机器人的一些论文,请参见此处:http ://www.cs.cmu.edu/~sganzfri/
关于弄乱屏幕以使其难以扫描的另一个想法:
用一整套不同的颜色制作卡片——在人眼看来很接近,但不一样。这将使挑选要阅读的内容变得更加困难。另一方面,在卡片上写上人眼不会从背景中分离出来的颜色。
机器人的问题是它们比体面的人类玩家玩得更好,还是它们可以 24/7 左右等待坏玩家出现然后试图挤奶?
此外,如果某人在玩扑克时坐在他旁边并咨询另一台计算机以获取建议,这是否是“合法的”或“作弊”?
我不确定当玩家的最佳策略将受到对对手的了解的影响时,如何声称有限扑克的解决方案空间已“解决”。任何分析球员的尝试怎么会声称自己如此完美以至于无法改进?
如果您可以访问大量匹配项,则可以采用数据挖掘方法。AI 的比赛实力应该是相当一致的,而人类可能有一些简单的模式——在前几轮热身赛中较弱,并且在长时间比赛后实力下降。此外,当面临更多风险时,人类的决策时间可能会增加。
如果您可以访问鼠标移动(或者至少单击位置,即使对于 Web 应用程序也是如此),那么识别机器人应该相当简单,除了最复杂的机器人。人类不会以精确的直线移动鼠标,它们具有加速和减速周期、统计上可描述的点击位置分布等。
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 的实例。这是攻击者可能落入的一种蜜罐或陷阱。攻击者可以通过降低他们的机器人成功率来防御这个蜜罐。于是,这就造就了“猫捉老鼠”,进攻方总能偷钱,防守方总能省钱。
有很多更简单的方法。是的。很多建议是正确的,也是需要的。但大约 90% 的欺诈行为都以过于简单的方式被发现。
如果有人让一个机器人为他工作,一段时间后,他会希望第二个机器人为他工作。(另一台机器或任何其他机器)但是:他将使用相同的密码,因为很难记住 2(<--- 讽刺)
剩下的: 检查具有相同游戏行为和相同密码哈希的帐户。