手机版 收藏 导航

如何在浏览器中查看服务器内网IP地址

原创   www.link114.cn   2025-02-19 20:17:53

如何在浏览器中查看服务器内网IP地址

最简单的方法是使用JavaScript在浏览器中获取内网IP地址。下面是一个示例代码:


<!DOCTYPE html>
<html>
<head>
  <title>获取内网IP地址</title>
</head>
<body>
  <h1>您的内网IP地址是:</h1>
  <p id="ip-address"></p>

  <script>
    // 使用RTCPeerConnection获取内网IP地址
    function getInternalIpAddress() {
      return new Promise((resolve, reject) => {
        const pc = new RTCPeerConnection({ iceServers: [] });
        pc.createDataChannel("");

        pc.createOffer(pc.setLocalDescription.bind(pc), reject);

        pc.addEventListener('icecandidatde', event => {
          if (event.candidate) {
            const ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
            const address = event.candidate.candidate.match(ip_regex)[1];
            if (address.startsWith('10.') || address.startsWith('192.168.')) {
              resolve(address);
            }
          }
        });
      });
    }

    getInternalIpAddress().then(ip => {
      document.getElementById('ip-address').textContent = ip;
    });
  </script>
</body>
</html>

这个代码使用RTCPeerConnection API来获取内网IP地址。当浏览器打开这个页面时,会自动显示服务器的内网IP地址。需要注意的是,这种方法只能在浏览器中运行,并且可能会受到浏览器的同源策略的限制。

你的服务器上运行PHP,那么可以使用PHP代码来获取内网IP地址。下面是一个示例代码:


<!DOCTYPE html>
<html>
<head>
  <title>获取内网IP地址</title>
</head>
<body>
  <h1>您的内网IP地址是:</h1>
  <p>
    <?php
      // 获取内网IP地址
      function get_internal_ip() {
        $ipaddress = '';
        if (isset($_SERVER['HTTP_CLIENT_IP']))
          $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
        else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
          $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_X_FORWARDED']))
          $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
        else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
          $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_FORWARDED']))
          $ipaddress = $_SERVER['HTTP_FORWARDED'];
        else if(isset($_SERVER['REMOTE_ADDR']))
          $ipaddress = $_SERVER['REMOTE_ADDR'];
        else
          $ipaddress = 'UNKNOWN';

        if (preg_match('/^(10\.|192\.168\.)/', $ipaddress)) {
          return $ipaddress;
        } else {
          return 'External IP Address';
        }
      }

      echo get_internal_ip();
    ?>
  </p>
</body>
</html>

这个代码使用PHP的超级全局变量$_SERVER来获取内网IP地址。它首先尝试从多个HTTP头中获取IP地址,检查是否为内网IP地址。是内网IP地址,就返回该地址;否则返回"External IP Address"。这种方法需要服务器上安装PHP,并且浏览器可以访问该PHP脚本。

你的服务器上运行Node.js,那么可以使用Node.js中的os模块来获取内网IP地址。下面是一个示例代码:


<!DOCTYPE html>
<html>
<head>
  <title>获取内网IP地址</title>
</head>
<body>
  <h1>您的内网IP地址是:</h1>
  <p id="ip-address"></p>

  <script>
    // 使用Node.js获取内网IP地址
    fetch('/get-internal-ip')
      .then(response => response.text())
      .then(ip => {
        document.getElementById('ip-address').textContent = ip;
      });
  </script>

  <?php
    // Node.js服务器代码
    const http = require('http');
    const os = require('os');

    http.createServer((req, res) => {
      if (req.url === '/get-internal-ip') {
        const interfaces = os.networkInterfaces();
        let internalIp = 'Unknown';
        for (const name in interfaces) {
          for (const interface of interfaces[name]) {
            if (interface.family === 'IPv4' && !interface.internal) {
              continue;
            }
            if (interface.family === 'IPv4' && interface.internal) {
              internalIp = interface.address;
              break;
            }
          }
        }
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end(internalIp);
      } else {
        res.writeHead(404, { 'Content-Type': 'text/plain' });
        res.end('Not found');
      }
    }).listen(3000);

    console.log('Server running at http://localhost:3000/');
  ?>
</body>
</html>

这个代码使用Node.js的os模块来获取内网IP地址。服务器端的Node.js代码创建一个HTTP服务器,当浏览器请求"/get-internal-ip"时,服务器会返回内网IP地址。前端的JavaScript代码使用fetch API向服务器请求内网IP地址,并将其显示在页面上。这种方法需要服务器上安装Node.js,并且浏览器可以访问该Node.js服务器。

除上述方法,还可以使用WebRTC API来获取内网IP地址。WebRTC是一种基于浏览器的实时通信技术,它提供一种获取本地网络信息的方法。下面是一个示例代码:


<!DOCTYPE html>
<html>
<head>
  <title>获取内网IP地址</title>
</head>
<body>
  <h1>您的内网IP地址是:</h1>
  <p id="ip-address"></p>

  <script>
    // 使用WebRTC API获取内网IP地址
    function getInternalIpAddress() {
      return new Promise((resolve, reject) => {
        const pc = new RTCPeerConnection({ iceServers: [] });
        pc.createDataChannel("");

        pc.createOffer(pc.setLocalDescription.bind(pc), reject);

        pc.addEventListener('icecandidate', event => {
          if (event.candidate) {
            const ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/;
            const address = event.candidate.candidate.match(ip_regex)[1];
            if (address.startsWith('10.') || address.startsWith('192.168.')) {
              resolve(address);
            }
          }
        });
      });
    }

    getInternalIpAddress().then(ip => {
      document.getElementById('ip-address').textContent = ip;
    });
  </script>
</body>
</html>


这个代码与前面的JavaScript示例非常相似,也是使用RTCPeerConnection API来获取内网IP地址。不过,这种方法更加通用,可以在任何支持WebRTC的浏览器中运行。需要注意的是,这种方法可能会受到浏览器的同源策略的限制,并且需要用户授予相应的权限。

本文介绍4种在浏览器中查看服务器内网IP地址的方法。每种方法都有自己的优缺点,开发人员可以根据实际情况选择合适的方法。无论采用哪种方法,掌握服务器内网IP地址的能力都可以大大提高日常工作的效率和生产力。希望本文对你有所帮助。