Sharkscope或PTR是如何挖掘所有这些手牌数据的?

19

我非常好奇这个过程是如何运作的。这些网站 (http://www.sharkscope.comhttp://www.pokertableratings.com) 每天从安全扑克网络(例如 PokerStars 和 Full Tilt)数据挖掘数千手。

他们是否拥有一批运行应用程序的服务器,可以打开数百个桌子 (窗口),然后以某种方式爬虫/数据挖掘正在进行的牌局?

从编程角度来看,这是如何运作的呢?


1
我猜数据是给/卖给他们的。 - drudge
@jnpcl 这并不是真的,恐怕我必须这么说。其中一些网站有协议,但据我所知,它们最初都未经过相关网站的同意/知情就获取了数据。 - Tom Gullen
5个回答

28

有几种选项。我一直在研究这个问题,因为我想在正在开发的一个Web应用程序中实现其中一些功能。以PokerStars为例,因为它是目前最安全的在线扑克网站。

首先,请注意开发人员无法从PokerStars应用程序本身提取实时信息。您无法访问API。不过,您可以执行以下操作:

屏幕截图/OCR

PokerStars尽其所能破坏对其应用程序的屏幕/文本截取(例如通过像素级颜色波动等简单操作),但只要您有足够的动机,就可以轻松绕过此限制。使用Google AutoHotkey结合ImageSearch即可实现。

API访问和XML源

PokerStars不提供其API的公共访问权限。但是,它确实向经过预批准的开发人员提供XML源。该XML源包括以下内容:

  • PokerStars站点概要-显示玩家、桌子和锦标赛计数

  • PokerStars当前锦标赛数据-包含有关即将到来和进行中的锦标赛的信息文件。数据提供在两个文件中:

    • PokerStars静态锦标赛数据-提供不频繁更改的比赛信息,以及
    • PokerStars动态锦标赛数据-提供经常更改的比赛信息。
  • PokerStars锦标赛结果-提供有关已完成比赛的信息。数据在两个文件中提供:

    • PokerStars锦标赛结果-提供已完成比赛的基本信息
    • PokerStars扩展锦标赛结果-提供已完成比赛的详细信息
  • PokerStars锦标赛领袖榜-提供使用PokerStars锦标赛排名系统对顶级PokerStars玩家进行排名的信息

  • PokerStars锦标赛领袖榜BOP-提供使用PokerStars Battle Of Planets排名系统对顶级PokerStars玩家进行排名的信息

  • Team PokerStars-提供有关Team PokerStars玩家及其在线活动的信息

很不可能这些网站有机会获取XML Feed(或者更好的Feed,能够提供他们所需的所有功能),因为PokerStars和这些网站中的大多数并没有恳好关系。
这留下了两个选项。一是抓取网络连接传输的数据,但我认为这几乎是不可能的(我没有经验,所以不确定;我听说它高度加密且难以捣鼓,但我不确定)。二是屏幕截图/OCR,如上所述。
第二种选择足够容易实现,并且在一些工作后可以避免被检测到。从我所了解的情况来看,这是他们可能进行PokerStars大规模数据挖掘的唯一途径(我没有研究其他网站,但我听说除了PokerStars/Full Tilt外,任何其他网站的安全性都非常糟糕)。
再次阅读您的问题发现没有明确回答。
是的,他们可能有大量服务器运行来观察当前运行的牌桌、锦标赛等。要知道,他们所做的事情涉及到相当数量的资金。
例如,他们可能是这样做的(推测):
此类机器人应用程序监视牌桌,数据挖掘所有“发布”到聊天记录的信息。他们通过已经有的图片表,对应所有字母(因为PokerStars没有将文本作为文本发布。他们软件中的所有文本实际上都是图像)。因此,机器人然后抓取聊天记录的图像,匹配存储库,将数据转换成他们可以处理的格式,并将其放入数据库。完成了。
不,这些数据不是由扑克网站自己出售给他们的。如果这个消息被曝光,将会是公关灾难。而且这也无法解释这些网站的功能,这似乎是瞬间完成的。OPR、Sharkscope等。毫无疑问,有一些应用程序正在运行,并从扑克软件中实时抓取数据,可能使用我列出的方法。

1
现在,这才是一个好答案!看起来你真的知道你在说什么。非常感谢! - kissgyorgy
问题不是我的,答案已经被接受了。你得到了赏金,这更有价值 :) - kissgyorgy
好久没来看这个问题了,但是感谢你的详细回答 :) 我很确定他们也在使用聊天记录爬取OCR技术--一定是他们拥有的基础设施。 - Fred Fickleberry III
你有关于XML数据源的任何信息吗?需要成为会员吗?(https://www.pokerstarspartners.com/public/marketing/online/xmlFeeds.html) - Martín Coll
这是准确的。我一直在屏幕抓取PokerStars以制作一种“顾问”应用程序。我遇到的问题是颜色波动,在某些情况下,卡牌位置会“偏移”一点,这可能会破坏OCR,而且对于某些卡牌,OCR可能很困难。XML不可用,网络抓取被锁定,因此您很幸运能够获取数据,唯一剩下的就是屏幕抓取。屏幕抓取是可行的,只是在定位元素和硬编码它们的位置时相当困难。虽然可行,祝你好运。 - Michael Clark
我认为他们不会关注正在进行的比赛,机器人可以连接到已完成的游戏并抓取摘要信息。 - Tristan

10
也许我能帮忙。 我打扑克,运行HUD,查看统计信息并是一个软件开发人员。
我在这方面看到了一些帖子,建议使用OCR软件抓取屏幕。嗯,那真的很困难且耗费处理器资源,因此除非没有其他选择,否则程序员不会选择这样做。此外,由于您可以打开多个窗口,扑克窗口可能会被屏幕上的其他东西隐藏或部分遮挡,因此您无法保证能够捕捉屏幕。
简而言之,他们阅读由扑克软件输出的日志文件。
当你安装Sharkscope或Jivaro等HUD时,它们会在你的PC上运行客户端软件。它读取日志文件并更新自己的服务器以记录每手牌局。
大多数扑克软件都是类似的,但我们先从Pokerstars开始,因为那是我玩的地方。扑克软件为您/它执行的每个操作都输出到本地日志文件中。它显示您的牌,您所看到的任何对手的牌以及您的动作。例如,您按下哪个按钮,您/他们下注了多少等。它会实时发布这些更新,并为日志文件添加时间戳。
您可以查看自己的文件以查看此操作。在PC上执行以下操作(不确定Mac上该如何操作,但类似): 1.加载文件资源管理器 2.从菜单中选择“视图” 3.选择“显示隐藏的项目”以查看隐藏的数据文件 4.转到C:\ Users \ Dave \ AppData \ Local \ PokerStars.UK(您可能不叫DAVE...) 5.在记事本中打开PokerStars.log.0文件 6.在记事本中搜索updateMyCard 7.它将以数字形式显示您的牌 3c代表梅花3 14d代表方块A
您只能在您在桌子上看到他们时才能看到对手的牌。
以下是日志文件中的几个示例行。
OnTableData() round -2
:::TableViewImpl::updateMyCard() 8s (0) [2A0498]
:::TableViewImpl::updateMyCard() 13h (1) [2A0498]
:::TableViewImpl::updatePlayerCard() 7s (0) [2A0498]
:::TableViewImpl::updatePlayerCard() 14s (1) [2A0498]
[2015/12/13 12:19:34]

祝福您,希望这有所帮助 Dave


用户是否有任何唯一标识或类似的东西,我如何获取他们的操作,因为我只能看到自己的操作。 - Arqu
2
这是正确的答案。在手牌已经打完之后,PokerStars会将手牌写入日志文件。关键在于他们只会在手牌打完之后才这样做,这意味着你无法实时分析它。如果要实时分析,你就必须进行屏幕抓取。 - Michael Clark

1

我考虑了一下,有两个理论:

“嗅探器”网站打开了每个表格,并且:

  1. 能够从网络流中提取手牌数据。(或者:)
  2. 正在通过GUI(屏幕抓取,通过GUI API提取内容)获取手牌数据。

或者,他们可能已经开发/修改了客户端来记录所有内容,但我认为上述解决方案之一更简单。


1

嗯,他们有两个选择:

  • 未经同意就爬取/抓取数据。然后他们冒着随时被关闭的风险。扑克网站可以轻松检测到这种规模的监控并阻止它。甚至可能因违反服务条款面临诉讼,这些条款可能不允许使用机器人。
  • 他们直接付费获取数据。这可以节省大量带宽(例如不必加载完整页面、提取、更新HTML更改等),使他们的业务在法律和技术上都更加安全。

猜猜他们更可能选择哪一个;至少如果该网站已经运营了一段时间而没有被关闭。


3
我怀疑你甚至不知道PTR或Sharkscope是什么...那为什么要回答呢?我需要事实,而不是猜测。 - kissgyorgy

-1
我不确定它是如何工作的,但我有一个应用程序ID和密钥-这是金或银订阅者才能获得的-注册一个月并发送电子邮件,您将获得访问权限和API文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接