如何找出浏览器连接的服务器IP地址(使用JavaScript)?

时间:2009-09-02 23:45:58

标签: javascript

有什么方法可以找到浏览器所连接的服务器的IP吗?对于例如如果浏览器正在访问http://www.google.com,我们能否以任何方式告诉它连接到哪个IP?这在实现Round-robin DNS的情况下非常有用。因此,对a.com的第一次请求会导致1.1.1.1&后续请求结果在1.1.1.2&等等。

我找不到任何方法来使用JavaScript。它甚至可能吗?如果没有找到这个信息的通用方法吗?

10 个答案:

答案 0 :(得分:40)

尝试将此作为快捷方式,而非作为最终解决方案(请参阅注释):

<script type="text/javascript">
    var ip = location.host;
    alert(ip);
</script>

此解决方案在某些情况下不起作用,但它可以帮助快速测试。 此致

答案 1 :(得分:12)

相当肯定无法做到这一点。但是,您可以使用首选的服务器端语言将服务器的IP打印到客户端,然后根据需要使用它。例如,在PHP中:

<script type="text/javascript">
    var ip = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
    alert(ip);
</script>

这取决于您的服务器的安全设置 - 有些可能会阻止此。

答案 2 :(得分:10)

不确定如何具体获取IP地址,但位置对象提供了部分答案。

e.g。这些变量可能会有所帮助:

  • self.location.host - 设置或检索位置的主机名和端口号
  • self.location.hostname - 设置或检索主机名部分 位置或网址。

答案 3 :(得分:5)

你不能得到这个。从Javascript,您只能获取HTTP标头,该标头可能有也可能没有IP地址(通常只有主机名)。浏览器程序的一部分是抽象TCP / IP地址,只允许您处理主机名。

答案 4 :(得分:3)

我认为您可以使用来自JSONP请求的回调,或者可能只使用外部服务的纯JSON数据,但是基于javascript location.host的输出:

$.getJSON( "//freegeoip.net/json/" + window.location.host + "?callback=?", function(data) {
    console.warn('Fetching JSON data...');
    // Log output to console
    console.info(JSON.stringify(data, null, 2));
});

我会根据个人需要使用此代码,因为我出于同样的原因首先访问此网站。

您可以使用其他外部服务代替我用于我需要的服务。存在一个非常好的列表,包含在此处完成的测试https://stackoverflow.com/a/35123097/5778582

答案 5 :(得分:1)

实际上除非您使用某些外部源,否则无法通过JavaScript执行此操作。即便如此,它可能不是100%正确。

答案 6 :(得分:1)

可以通过Java applet或Flash等插件执行此操作,然后让Javascript调用applet中的函数,反之亦然(或者让JS调用Flash或其他插件中的函数)并返回IP。这可能不是浏览器用于获取页面内容的IP。如果有图像,css,js - &gt;浏览器本可以建立多个连接。我认为大多数浏览器只使用他们从DNS调用中获得的第一个IP(连接成功,不确定如果一个节点在获得少量资源后出现故障并且仍然可以获得其他节点会发生什么 - 定时器/ ajax添加引用其他的html资源)。

如果必须对java applet进行签名,则建立与window.location的连接(从javascript获取,以防applet是通用的,可以在任何服务器上的任何页面上使用),否则只需返回到主服务器并使用java .net.Address获取IP。

答案 7 :(得分:0)

我相信约翰的答案是正确的。例如,我通过会议中心运行的wifi服务使用我的笔记本电脑 - 我很确定在我的浏览器中无法运行javascript来发现服务使用的IP地址供应商。另一方面,可以从javascript寻址合适的外部资源。您可以通过对服务器进行ajax调用来编写自己的服务器,该服务器可以从HTTP头中获取IP地址并将其返回,或者尝试使用Google搜索&#34;找到我的IP&#34;。最干净的解决方案可能是在提供页面之前捕获信息并将其插入返回给用户的html中。 有关如何使用python为页面提供服务的信息,请参阅How to get a viewer's IP address with python?

答案 8 :(得分:-1)

<script type="application/javascript">
  function getIP(json) {
    document.write("My public IP address is: ", json.ip);
  }
</script>
<script type="application/javascript" src="http://ipinfo.io/?format=jsonp&callback=getIP"></script>

答案 9 :(得分:-2)

我确信以下代码可以帮助您获取IP地址。

<script type="application/javascript">
    function getip(json){
      alert(json.ip); // alerts the ip address
    }
</script>

<script type="application/javascript" src="http://www.telize.com/jsonip?callback=getip"></script>