Fre*_*III 15 poker data-mining
我很想知道这个过程是如何运作的.这些网站(http://www.sharkscope.com和http://www.pokertableratings.com)的数据每天都来自安全的扑克网络,如PokerStars和Full Tilt.
他们是否有一个服务器场运行应用程序,打开数百个表(窗口),然后以某种方式蜘蛛/数据正在播放的手?
这是如何工作的,编程明智?
Bre*_*row 24
有几个选择.我一直在研究它,因为我想在我正在研究的网络应用程序中实现一些这样的功能.我将以PokerStars为例,因为到目前为止,他们拥有所有在线扑克网站的最佳安全性.
首先,要意识到开发人员无法从PokerStars扑克之星应用程序中获取实时信息.您无法访问API.但是,您可以执行以下操作:
屏幕刮擦/ OCR
PokerStars尽最大努力破坏他们的应用程序的屏幕/文本抓取(通过做像素级颜色波动等简单的事情),但有足够的动力,你可以轻松解决这个问题.Google AutoHotkey与ImageSearch结合使用.
API访问和XML源
PokerStars不提供其API的公共访问权限.但它确实为预先批准的开发人员提供了XML源.此XML Feed提供:
PokerStars扑克之星网站摘要 - 显示玩家,桌面和锦标赛计数
PokerStars扑克之星当前锦标赛数据 - 包含有关即将举行的和现役锦标赛的信息的文件.数据以两个文件提供:
PokerStars扑克之星锦标赛结果 - 提供有关已完成锦标赛的信息.数据以两个文件提供:
PokerStars锦标赛领导者委员会 - 提供有关使用PokerStars锦标赛排名系统排名的顶级PokerStars职业玩家的信息
PokerStars锦标赛领袖董事会BOP - 提供有关使用PokerStars扑克行星排行榜系统排名的顶级PokerStars职业玩家的信息
PokerStars扑克之星团队 - 提供有关PokerStars扑克之星队员及其在线活动的信息
这些网站极不可能访问XML提要(或者是一个提供所需功能的改进网站),因为PokerStars与大多数网站并没有完全一致.
这留下了两个选择.刮掉所说数据的网络连接,我认为这是不可能的(我没有这方面的经验,所以我不确定;我听说它是高度加密的,不容易修补,但我不确定并且,如上所述,屏幕刮擦/ OCR.
选项#2很容易实现,并且通过一些工作可以避免检测.从我能够收集的内容来看,这是他们对PokerStars进行如此大规模数据挖掘的唯一方式(我没有看过其他网站,但除了PokerStars/Full Tilt以外,我听说过安全性非常可怕).
[编辑]重读你的问题,并意识到我并没有毫不含糊地回答它.
是的,他们可能有大量的服务器正在运行,观看所有当前正在运行的桌子,锦标赛等.意识到他们正在做的事情中有相当数量的资金.
例如,这可能是他们如何做到的(推测):
所述僵尸程序应用程序观察表格和数据,挖掘所有"发布"到聊天记录的信息.他们通过已经有一个图像表对应于例如字母表中的所有字母来实现这一点(因为PokerStars不会将他们的文本发布为...文本.他们软件中的所有文本实际上都是图像).因此,僵尸程序然后撕掉聊天记录的图像,将其与商店匹配,将数据转换为可以使用的格式,并将其丢弃到数据库中.完成.
[编辑]不,扑克网站本身不会将数据卖给他们.如果它出局,这将是一场公关噩梦.并且它不会考虑这些网站的功能,这似乎是即时的.OPR,Sharkscope等毫无疑问,运行的应用程序正在使用我列出的方法实时从扑克软件中提取数据.
小智 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 为钻石王牌
您只能在牌桌上看到对手的牌时才能看到它们。
以下是日志文件中的几行示例。
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]
Run Code Online (Sandbox Code Playgroud)
干杯,希望这有助于戴夫