【问题标题】:Find out private ip when using node / socket.io?使用node / socket.io时找出私有IP?
【发布时间】:2016-08-05 05:27:12
【问题描述】:

目前我的 socket.io 聊天应用每个 ip 只允许 1 个用户,这意味着如果在同一个房子或网络中的两个人想要使用聊天,只有一个人可以。

除了我已经知道的公共 ip 之外,有没有办法找出用户拥有的私有 ip?

【问题讨论】:

  • 大概他们都将通过一个网关。如果没有在客户端运行代码,我认为您将很难弄清楚它们所在机器的 IP。也就是说...您的用户在虚拟机环境中?在那种情况下,您是否要求 HOST ip?我没有对您投反对票 - 但您可以更明确地说明您的需求并发布您拥有的代码..

标签: node.js socket.io


【解决方案1】:

假设您的聊天应用程序是在浏览器中运行的 Javascript,然后“否”,您的服务器无法知道最终用户的私有 IP 地址是什么。如果您的聊天应用程序是本地应用程序,那么您的本地聊天应用程序可以获取本地私有 IP 地址并将其发送到服务器。但是,如果没有本机代码插件,浏览器就无法做到这一点。

浏览器不提供 Javascript 获取私有 IP 地址的方法,因此您的聊天应用无法将其发送到您的服务器。而且,服务器肯定无法自己知道私有 IP 地址。

您可以使用 cookie 来检测同一浏览器中同时打开的多个聊天窗口(cookie 第一个连接,然后查找具有相同 cookie 的任何其他传入连接)。但是,您不能阻止多个浏览器使用该方案。

处理此问题的常用方法是要求一个帐户并登录该帐户,并强制每个帐户一次仅登录一次,并要求每个帐户具有唯一的电子邮件地址甚至是经过验证的信用卡号,以阻止人们进行大量帐户。当然,也有解决这个问题的方法(多个邮箱或多个信用卡),但这足以阻止许多人并防止大规模滥用。一般来说,你应该设计你的服务,所以如果有人这样做,坦率地说这不是问题。

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 2018-12-30
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2015-02-11
    • 2014-06-06
    • 2022-07-30
    相关资源
    最近更新 更多