【问题标题】:Tracking Computers in an Online Game在在线游戏中跟踪计算机
【发布时间】:2011-08-30 11:11:06
【问题描述】:

所以我遇到了一个问题,即人们创建多个帐户以使帐户更好,并在游戏中提供更多资源。

所以我的困境是,许多用户通过代理或 NATd 信息,所以如果我每个 ip 只有 1 个用户,一些合法用户将被禁止。

有没有办法(使用 Javascript 和 PHP)获取特定于计算机的 uniq 标识符(没有硬件更改,计算机硬件更改可能会更改标识符)。

任何想法或cmets都会很受欢迎


(以下内容是从保罗的回复中恢复出来的,但由于不合适而被另一个人删除。)

我无法对客户端进行太多更改,因为它是基于浏览器的游戏,因此获得 hwid 是可能的。但是如何使用 JS 或 PHP。

添加计时器和限制以防止传输已到位,但不会完全停止传输,还有一个选项可以通过电子邮件发送 IP 例外。但这是缓慢而乏味的。我想知道是否有一个明确的方法可以为特定计算机(不基于 ip)生成特定的 id 或标识符,这将使多个帐户无法从同一台计算机登录,但可以从同一个 ip 登录

【问题讨论】:

  • 总之没有;无法阻止用户设置多个帐户。
  • 欢迎来到 SO!请不要使用答案部分来添加说明。您可以编辑您的问题以添加更多详细信息(您似乎正在使用两个帐户,您可能希望合并它们并使用一个)。或者您可以添加 cmets 来回答您的问题(对此有代表要求)
  • 当他在 SO 上拥有多个帐户时询问如何检测使用多个帐户的玩家时多么讽刺:P

标签: php javascript anti-cheat


【解决方案1】:

您可以防止在同一帐户(用户名/密码)上多次登录。

如果问题是他们使用许多不同的电子邮件地址等创建了多个帐户...以及新的用户名和密码,那么您可能可以使用 Cookie 来做到这一点,例如使用唯一的硬件 ID,然后您只需检查一下基于此 hwid,任何时候都不会有超过一个帐户处于活动状态。如果硬件发生变化,则无关紧要,因为它是相对的。

澄清第一次登录的硬件 ID 是否为 1234,然后第二次登录生成相同的硬件 ID。如果您检查相同的 hwid 的 cookie 或数据库(无论您将其存储在哪里),那么您就知道它已经登录了。

如果硬件发生变化也没关系,因为它们仍然会生成相同的 hwid。

如果他们使用两台计算机,尽管硬件 id 会不同,这将起作用。

【讨论】:

  • 如何在 Web 环境中创建 hardwareId?同一台计算机,不同的 IP(代理)和不同的浏览器 = 据我所知无法区分
【解决方案2】:

我也经营一个在线游戏服务器。为了防止您的困境,要么修改游戏客户端以读取 MAC 地址,并且每台计算机只允许 1 个帐户。或者记录 ip,只允许将资源分配给该 ip 两次。 第三个选项:不允许从相同的 IP 地址传输材料 第四种选择:在资源转移时添加一个计时器,让他们等待 10 分钟的游戏时间,然后他们才能做任何事情,比如摆脱物品让其他人得到

【讨论】:

  • 是的,每台电脑都有一个mac地址,你可以随时修改你的客户端查看mac地址,只要你能修改你正在使用的客户端
  • 问题是关于浏览器内的游戏。 PHP 在这里帮不了你,这是服务器端,没有可用的 MAC 地址。您也不太可能使用 javascript 找到它。如果你愿意,我会认为它是一个错误而不是一个功能。所以不,在场景中,问题描述你没有你可以实际阅读的mac地址。基于 IP 将不起作用,请阅读问题的第 2 段。
【解决方案3】:

{可共享资源} = {总资源} - MAX(({起始资源} - {花费资源}), 0)

只使非起始资源可共享,或者可能使共享资源成为直到 x 级才能获得的能力。

【讨论】:

    【解决方案4】:

    防止欺骗/重复帐户(同时确保所有合法帐户正常工作)是一项非常艰巨的任务 - 出于其他人列出的原因。除了试图防范并发多个帐户外,还必须防范非并发多个帐户的使用。

    核心问题不在于确定从哪里连接的帐户,而是能够相信用户只有一个帐户 - 并且到此最后,唯一“真正”的解决方案是使用已经提供此类信息的系统,例如信用卡或贝宝帐户;-) 即,防止某人创建新帐户(虽然一个帐户可以有多个别名/配置文件,但这些可以很容易地跟踪)除非它们可以证明“唯一性”。

    (还要考虑两个人在同一台机器上可能有两个不同的帐户。)

    编码愉快。

    【讨论】:

    • 可能是这样,但这会让加入游戏变得有点困难:(
    • @Nanne 是的,这不是免费游戏的理想情况:-)
    • 但是,我同意,这是仅有的 100% 解决方案之一。
    【解决方案5】:

    由于我们谈论的是不同的帐户,可能在不同的 IP 和客户端上,您无法轻松找到克隆帐户。

    您可以选择另外两个启发式和游戏选项

    1. 如前所述(@dqhendricks),分配您的资源并实施您的共享等,这样您就不能轻易地帮助您的其他帐户使用每个新帐户。使一开始就很难/不可能找到其他帐户,使可共享资源成为更高级别的功能等。缺点是这会改变游戏玩法,但不一定是可取的。
    2. 您可以对行为执行启发式方法。可能存在不需要的特定行为:仅与其他 1 个帐户交互等。您可以调整一些变量等,但您很容易看到可疑行为。进行某种“平衡”计算。大多数游戏中的互动都有某种平衡。当然,更好的球员可能会因为他们知道的更多而得到一笔好交易,或者反过来:他们为了帮助较小的球员而做出了一笔糟糕的交易。但是,当一个玩家只给予而从不索取时,它是在“帮助”而不是真正扮演自己:这可能意味着它是一个克隆人

    就我而言,在这种情况下,所有带有 ip 地址或客户端信息 ($_SERVER) 等的东西都毫无价值..

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 2011-11-12
      • 2013-12-08
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多