有一个名为PokerPirate的新的开源扑克机器人。我对Web应用程序可以检测/阻止/击败扑克机器人的任何创新方式感兴趣。(这纯粹是学术性的讨论,本着与《 PokerPirate》写作的精神。)
有一个名为PokerPirate的新的开源扑克机器人。我对Web应用程序可以检测/阻止/击败扑克机器人的任何创新方式感兴趣。(这纯粹是学术性的讨论,本着与《 PokerPirate》写作的精神。)
Answers:
从服务器端的角度击败机器人
许多在线扑克网站使用弹出 验证码是由可疑活动触发输入。
一些扑克网站监视着比赛的时间和方式(例如,最坏的情况是一个连续24x7和16桌的玩家,这是一个真正的人的机会很小(但是有些玩家确实有很大的玩法能力)卷这对缺乏经验的眼睛似乎是一个机器人)
引发故障。如果您怀疑玩家是机器人,请将其所有纸牌位置更改为屏幕上的几个像素,为1/100手为其设置不同的颜色/设计/图案,然后查看是否将其抛出。如果无法抓屏,它将暂停所有决策,这是确凿的机器人证据。
计时表明,如果计算机玩家一次以毫秒为单位对选项做出响应,而又不停地思考大型决策,则这可能是可疑的
自我监控。扑克网站 pokertableratings.com数据挖掘了许多大型站点。人们对它的热情喜忧参半,有人喜欢这种透明感,有人讨厌这种透明感。这样做的好处是,在某些情况下,可疑的球员统计信息(VPIP百分比,PFR百分比是可以记录的大量可量化统计数据中的少数)可以得出作弊结论。
人工智能 分类网络可以监控可量化的统计数据,以对流氓作弊或机器人玩家进行分类。
早在在线扑克是一个相对较新的实体时,就有谣言和谈话以有限的证据表明,一些扑克客户端软件对可疑玩家的桌面进行了截屏,以查看他们是否正在运行帮助他们的程序。但是(即使这是真的)运行两台计算机来独立执行两项任务也可以解决此问题。
在多个站点之间的重复犯罪者之间共享信息,如果他们是受人尊敬的并且由有责任心的负责人来管理,将对行业有利。
如果您能够发现它们的玩法并查看它们在相同情况下的行为,某些机器人在设计上可能会非常简单(请注意,这仅适用于精通基本策略的不成熟的机器人),您可以相当快地发现它们。
程序功能的不一致使用将使玩家成为真实玩家。例如,游戏中的许多扑克网站都有“轮到我时折”按钮。如果您的牌不好,并且正在等待其他玩家决定该怎么做,那么很多玩家都会选择此按钮。机器人可以使用这些按钮。区别在于,机器人将处于使用频率的最高点,他们可能会一直使用它们,或者根本不使用它们。玩家通常可能会按“自动折叠”,但有时即使在最有利的条件下,他们仍然会单击“折叠”。例如,一个真正的玩家通常会按下自动折叠,但是这次却没有。在没有其他玩家参与的情况下,这对他们是折合的,现在,他们已经呈现出了最有利的状态。现在,如果他们按折叠,他们从一开始就很倾向于按自动折叠。这是不一致的/未优化的/随机的行为,与作为人类一致。计时指示何时单击这些功能是其他指示器。重要的是要认识到这些都是指标,而不是结论性的证明。所有这些行为指标都可以轻松模拟。
从玩家角度击败机器人
尝试使用诸如PokerTracker之类的软件记录并收集尽可能多的数据
尝试识别游戏风格的模式
尝试找到与底池/#玩家成比例的下注大小与手牌强度之间的关系
尝试计算其手的范围。一个低赌注的机器人可能不会经常虚张声势,不会引起任何重大的战略关注,因此为其构建高度准确的手部范围应该不会太棘手。
尝试通过数据分析和反复试验来发现游戏中的漏洞。一旦发现漏洞/模式,就尝试重复利用漏洞并避免其他情况。
在人有适应能力的地方,机器人可能就不那么适应了,而人在倾斜,结果导向的思维和挫败感的影响下承受着重担,而机器人则没有。您可以利用此优势。
因此,从本质上讲,如果机器人足够聪明,可以在决策过程中模拟实际的计时延迟,并创建合理且逼真的游戏模式,则您无能为力。在一些随机条件下和简单的后聊中投掷(扑克玩家词典通常相当有限),您将拥有一个很难被发现的AI玩家。
机器人可能会采取什么措施来避免被检测到
避免检测的关键是从尽可能多的角度考虑问题。您正在尝试在一个非常狭小的世界中模拟人类的聪明行为。您可以运行的大多数行为模拟都是相当明显的,但是您的机器人越不一致和不可预测,发现它的可能性就越小。
制定切合实际的比赛时间表(即每周3–5次,每节课4个小时,一年中的这一周都是零星的)。
运行程序在另一台计算机上进行决策,以控制僵尸计算机,以防任何站点截屏。
随机设置动作时间(不要立即动作,每次动作要等待0.5–2秒)
花时间做出重大决定。如果决定是临界点,请计算该决定,然后等待一段时间以模拟思想。
随机使用客户端软件功能。通过单击所有表格上的“交易我出去”按钮来模拟厕所休息时间,并时不时休息5分钟。
模拟聊天,扑克聊天通常是非常简单的一种方式,从不进行讨论或辩论。在适当的可检测时刻说出“不幸”或“ stfu”之类的东西。甚至让编码器监视他的机器人并在执行过程中进行聊天。
确保鼠标移动真实。如果桌子是 平铺的,则不要在左上方的桌子上做出决定,然后立即在右下方的桌子上做出决定。现在,大多数站点软件都提供键盘快捷键,这些键可能比鼠标移动更适合使用。
做一些简单的AI分类器不会期望的事情。例如,每年一次用简单而不复杂的查询(“帮助我今天无法登录!”或“互联网已关闭!”)给他们打电话。扑克公司足够聪明,他们可能已经意识到它是可以实现的指标。
零星的输球。可以模拟倾斜,并且机器人可能会表现不佳,并且时不时地损失一些钱。 每个人都有点倾斜。
令人担忧的是,扑克网站并不特别在意机器人是否在其网络上运行,每个玩家的佣金都很高,从理论上讲,从纯粹的愤世嫉俗的商业角度来看,唯一的弊端就是发现了不良新闻。
即使发现了公然的漏洞利用(在Google上搜索Cereus网络丑闻或Absolute Poker丑闻,这也非常令人震惊),该业务似乎可以生存并保持健康,只失去受过良好教育并能赢得竞争的玩家(人数不多)。这增加了网络中技术水平较低的玩家的比例,从而吸引了优秀的玩家。这是个不错的选择。22.适当的市场监管的一个极好的理由。
值得注意的是,每场比赛都存在纳什均衡。在线扑克有一个时间表,即现在的运行方式,它必须进入一种更具社交性的网络摄像头(网络摄像头/语音),以便任何人将来信任它(如果人们信任它),因为机器人最终将在数学上接手优越,并且在心理上免疫。在学术界和/或资本收益的推动下,扑克AI社区非常活跃。
在较小的搜索空间中,诸如极限扑克之类的较简单版本的扑克已经几乎被解决。较复杂的游戏版本(无极限变化/底池极限奥马哈等)对于人造玩家来说可谓战胜只是时间问题。
结论
直到行业转向更具社交性的在线游戏环境之后,才能检测到复杂的机器人。这不会解决问题,但是肯定会使僵尸程序在较低级别上获胜变得更加困难。随着PKR,3D的发布以及其他站点的互动性更高,时针更少的版本的出现,我们已经看到了一些微小的变化,在这些站点中,多桌游戏对于玩家而言非常棘手。
该问题还受制于该行业的性质,这也是坚持使用信誉更好的大型网站的另一个原因,在该网站中,声誉已越来越融入其业务模型中。缺乏透明度和伪装的横行无助无济于事。
目前,对于机器人开发人员来说,真正的挑战是编写一个成功的算法,这看起来并不简单。每个玩扑克的人都认为自己是好人,获胜或收支平衡的玩家,这根本不是事实。这就是为什么人们继续玩游戏的原因,即使他们在幻想的情况下赔钱,他们只是倒霉,或者他们的游戏风格被误解了。人类心理上的这种傲慢和虚弱使玩家损失了很多钱,这也是扑克仍然可以盈利的根本原因。
扑克是一个非常复杂的游戏,要花好几年才能熟练掌握(古老的格言是正确的,“十分钟的学习时间,一生的掌握时间”)。从长远来看,运气要素极为有限。
像其他任何职业一样,要获得良好的职业,就需要学习数百小时,数百小时,并且玩数千小时。您将了解经验不足的玩家不会理解的事物,发现经验不足的玩家不会发现的事物。学习持续了很长时间,也许比我们可以生存的时间更长。这是一个复杂的游戏。
您有多少次在电视上看到高额现金游戏,并听到有人大喊“这很简单!” 因此证明业余爱好者真的不了解或识别游戏中的复杂性,并且真正相信该级别的游戏最终仍然很简单。不是。那些高赌注的玩家(很多时候)都在电视上,因为他们真的 真的好。也可能正在玩一个复杂的元游戏,而我们的auauer无法识别它的存在。业余者不会站在国际象棋大师的面前,朝他们大喊大叫,以移动他们的骑士,但是由于扑克信息不完善的动态,他们的心理使他们真正相信了自己的话。像在国际象棋中一样,决策可能是复杂的,敏感的,并且对整个游戏极为重要。随着游戏复杂性的提高,琐碎的决定不再那么琐碎,因为您的对手期望它们。
一旦将您的机器人或游戏上移,您将不可避免地遇到大量技术娴熟的玩家。然后,您的策略的复杂性将不得不上升到一个新的水平,其中要考虑到表格图像,范围平衡,复杂而智能的虚张声势(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实例。这是攻击者可能陷入的蜜罐或陷阱。攻击者可以通过使机器人变得不太成功来防御此蜜罐。因此,这就是“猫和老鼠”的到来,攻击者总是可以窃取一些钱,而防御者总是可以节省一些钱。
"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(<---讽刺)
还剩什么: 用相同的游戏行为和相同的密码哈希检查帐户。