javascript - JavaScript如何获取IP,人们在哪里使用代理?

标签 javascript proxy ip

您能说一下网站如何可以通过JavaScript获取用户的真实IP,而人们使用代理吗?

谢谢

最佳答案

客户端 Javascript 本身无法获取您的 IP 地址。而且,即使这样做,它也可能看到的是内部网络 IP 地址,而不是公共(public) IP 地址。

因此,从纯 JavaScript 获取 IP 地址的唯一方法是要求服务器告诉您的 IP 地址是什么。您向服务器发出 Ajax 请求,该请求告诉服务器您希望它返回您的 IP 地址。然后,服务器可以返回它看到您的连接来自的 IP 地址。该地址将是您的向外的公共(public) IP 地址。由于现在大多数客户端计算机都位于某种路由器/防火墙后面,因此服务器可能看到的是从您的实际客户端计算机进行 NAT 的单个公共(public) IP 地址。

如果我的客户端计算机和服务器之间的路由中有代理服务器,那么服务器将看到代理服务器的 IP 地址,而不是客户端计算机的 IP 地址。而且,你无法改变这一点。代理和路由器经过专门设计,用于将一组私有(private) IP 寻址映射到公共(public) IP 地址,同时保持私有(private)网络的网络拓扑对外界完全隐藏。

例如,我本地计算机现在的实际 IP 地址是 192.168.1.17,这是我家庭网络上的本地 IP 地址。但是,当我在互联网上询问服务器我的 IP 地址正在使用类似 http://whatismyipaddress.com/ 的服务时,然后它会报告 Comcast 分配给我的路由器的实际公共(public) IP 地址,即 67.180.86.xxx。当我从本地计算机连接到互联网时,该连接首先到达路由器,路由器使用 NAT(网络地址转换)来映射家庭网络上的私有(private) IP 地址与特定的传出 TCP 连接之间的连接。我的公共(public) IP 地址。当数据包在该连接上流回时,路由器会将这些数据包转发到我在家庭网络上的私有(private) IP 地址。

关于javascript - JavaScript如何获取IP,人们在哪里使用代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33746409/

相关文章:

embedded - 路由器使用什么协议(protocol)来确定主机名?

javascript - 在javascript中进行循环时,我必须在哪里声明变量?

haskell - 有人可以用*非常*简单的术语解释反射包 API 吗?

google-chrome - Charles 代理不适用于 Chrome

python - 如何在 Python 中通过代理打开带有 urllib 的网站?

php - 如何知道主机名是计算机 "Server"还是个人 "Desktop"

javascript - 为什么 Javascript 运算符 "&&"这么奇怪?

javascript - 使用 jquery 中的 selected 获取下拉列表的上一个和当前选定值

javascript - UDP多广播nodejs

.htaccess - 修复 IP 规范化错误