如何获取客户端系统 IP 地址?
Posted
技术标签:
【中文标题】如何获取客户端系统 IP 地址?【英文标题】:How to grab Client System IP Address? 【发布时间】:2014-06-05 16:28:08 【问题描述】:我想获取/跟踪客户端机器(请求机器或用户计算机)而不是服务器机器的 IP 地址。
我已经输入以下代码来获取/跟踪它正在工作的客户端机器的 IP 地址。
Request.ServerVariables.Get("REMOTE_HOST");
但它在那些互联网调制解调器直接与电脑连接的系统上工作
而且我还需要在那些互联网调制解调器不直接与电脑连接(通过路由器连接)的系统上工作。
【问题讨论】:
您是否尝试过查看X-Forwarded-For
HTTP 请求标头,以便获取请求链中防火墙和路由器的 IP 地址?正如其他答案所述,您将无法访问原始客户端的内部 IP 地址,但您应该能够获得发出请求的第一个面向公众的路由器的 IP 地址。
【参考方案1】:
您无法获取客户端的内部地址。这就是Network Address Translation 和firewalls 的用途。我知道这是一个令人失望的答案,但在大多数情况下,您所问的根本不可能。
唯一的例外是如果您同时控制客户端计算机和服务器。例如,企业环境。然后,您可以编写一些工具,将这些信息提供给服务器。显然,让随机访问您网站的人在他们的机器上安装您的工具并不是一个真正可行的选择。
如果您提供有关您的环境的更多详细信息以及您想要这样做的原因,这可能会对您的问题有所帮助。
【讨论】:
【参考方案2】:你真的不能那样做。此外,知道内部网络 IP 地址不会帮助您以任何方式访问它。
【讨论】:
【参考方案3】:尝试使用“HTTP_X_CLUSTER_CLIENT_IP”或“HTTP_X_FORWARDED_FOR”,这将返回逗号分隔的 IP 列表
i.e. Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
谢谢 苏雷什
【讨论】:
以上是关于如何获取客户端系统 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章