JavaScript获取本地IP的几种方法

一、从JavaScript获取本地IP地址

JavaScript可以通过WebRTC的API获取本地IP地址。WebRTC(Web Real-Time Communication)是一种浏览器间点对点的实时通信技术,是基于NAT(Network Address Translation)技术的。

下面是从JavaScript获取本地IP地址的示例:

<script>
  window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;

  var pc = new RTCPeerConnection({iceServers:[]}), s = () => ['192.168.2.1'];
  pc.createDataChannel('');
  pc.createOffer(pc.setLocalDescription.bind(pc), s);
  pc.onicecandidate = function(ice) {
    if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(/typ host/g)) return;
    document.getElementById('local-ip').innerHTML = (ice.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/g))[0];
    pc.onicecandidate = () => {};
  };
</script>

<div id="local-ip"></div>

上面代码通过RTCPeerConnection创建一个对等连接,并通过setLocalDescription()设置一个本地描述和一些空的ICE服务器对象,然后创建了一个数据信道。使用createOffer()创建了一个offer,并将本地描述设置为offer;然后onicecandidate事件会将获取到的IP地址赋值给div元素中。

二、从JavaScript获取本地IP地址和主机名称

通过网络接口信息获取本地IP地址和主机名称。这种方法需要通过Node.js,在浏览器端无法使用。

示例代码如下:

const os = require('os');

const interfaces = os.networkInterfaces();

for (const interfaceName in interfaces) {
  const interface = interfaces[interfaceName];

  for (let i = 0; i < interface.length; i++) {
    const alias = interface[i];

    if (alias.family !== 'IPv4' || alias.internal !== false) {
      continue;
    }

    console.log(`Interface: ${interfaceName}, Address: ${alias.address}, Hostname: ${os.hostname()}`);
  }
}

上面的代码通过os模块获取本地网络接口信息,并遍历获取IPv4地址和主机名。

三、从JavaScript获取本地IP地址知乎

在知乎上有用户分享了一个获取本地IP地址的JavaScript代码。示例代码如下:

function find(ip, mask) {
  var ips = ip.split('.');
  var masks = mask.split('.');
  var result = [];
  for(var i=0; i<ips.length; i++) {
    var ip = parseInt(ips[i]);
    var mask = parseInt(masks[i]);
    result.push(ip & mask);
  }
  return result.join('.');
}

function getIPs(callback) {
  var ips = [];
  var xhr = new XMLHttpRequest();
  xhr.open('GET', 'https://www.zhihu.com/cdn-cgi/trace', true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
      var text = xhr.responseText;
      var lines = text.split('\n');
      for(var i=0; i<lines.length; i++) {
        var line = lines[i].trim();
        if(line.startsWith('ip=')) {
          var ip = line.substring(3);
          var mask = '255.255.255.0';
          ips.push(find(ip, mask));
        }
      }
      callback(ips);
    }
  };
  xhr.send();
}

getIPs(function(ips) {
  console.log(ips.join(', '));
});

该代码通过XMLHttpRequest从知乎的CDN获取本地IP地址,在获取到IP地址后进行处理并输出。

四、从JavaScript获取本地文件

可以使用File API从浏览器本地文件系统访问本地文件。使用FileReader API,可以读取文件内容并以文本或URL等形式输出。下面是一个简单的示例:




  function readFile(input) {
    var reader = new FileReader();
    reader.onload = function() {
      console.log(reader.result);
    };
    reader.readAsText(input.files[0]);
  }

上面代码中,使用了一个input元素,当用户选择文件后,调用readFile()函数。该函数使用FileReader API读取文件内容,并输出到控制台。

五、从JavaScript获取本地图片

如果需要从浏览器本地文件系统中获取图片文件,可以使用Canvas API。下面是一个简单的示例:




  function loadImage(input) {
    var canvas = document.createElement('canvas');
    var context = canvas.getContext('2d');
    var image = new Image();
    image.onload = function() {
      canvas.width = image.width;
      canvas.height = image.height;
      context.drawImage(image, 0, 0);
      var dataUrl = canvas.toDataURL('image/png');
      console.log(dataUrl);
    };
    image.src = URL.createObjectURL(input.files[0]);
  }

上面代码中,使用了一个input元素,当用户选择图片后,调用loadImage()函数。该函数使用Canvas API绘制图片到画布上,并将处理后的图片输出为data URL格式的字符串。

六、通过Vue获取本地IP

Vue.js是一个MVVM(Model-View-ViewModel)框架,用于构建动态Web界面。Vue.js提供了一种MVVM的渐进式框架,并支持组件化开发。下面是一个使用Vue.js获取本地IP的示例:

<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
  Your IP address is: {{ ip }}
</div>
<script>
  new Vue({
    el: '#app',
    data: {
      ip: null
    },
    mounted() {
      this.getIP();
    },
    methods: {
      getIP() {
        axios.get('https://api.ipify.org?format=json').then(response => {
          this.ip = response.data.ip;
        });
      }
    }
  });
</script>

上面代码中,使用了Vue.js通过axios调用API获取本地IP,并将IP地址输出为数据绑定绑定到div元素。

七、前端获取本地IP地址

可以使用XMLHttpRequest调用REST API获取本地IP地址。下面是一个使用XMLHttpRequest获取本地IP地址的示例:

<div id="ip"></div>

<script>
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4) {
      var result = JSON.parse(xhr.responseText);
      document.getElementById('ip').innerHTML = result.ip;
    }
  };
  xhr.open('GET', 'https://api.ipify.org?format=json', true);
  xhr.send();
</script>

上面代码中,使用XMLHttpRequest调用REST API获取本地IP地址,并将结果输出到div元素。

八、通过JavaScript获取当前IP地址

可以通过location对象获取当前访问页面的IP地址。下面是一个获取当前IP地址的示例:

Your IP address is: <span id="ip"></span>

<script>
  var ipAddress = location.hostname;
  document.getElementById('ip').innerHTML = ipAddress;
</script>

上面代码中,使用location对象获取当前访问页面的IP地址,并将IP地址输出到span元素。

九、从JavaScript获取用户的IP地址

可以使用JavaScript在浏览器端获取用户的IP地址。下面是一个获取用户IP地址的示例:

<script>
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.async = true;
  script.src = 'https://ipv4.myexternalip.com/jsonp/';
  var ref = document.getElementsByTagName('script')[0];
  ref.parentNode.insertBefore(script, ref);
  function callback(json) {
    var ipAddress = json.ip;
    console.log(ipAddress);
  }
</script>

上面代码中,使用了一个外部脚本获取JSON格式的用户IP地址,并将IP地址输出到控制台。

原创文章,作者:FRTI,如若转载,请注明出处:https://www.506064.com/n/142611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FRTIFRTI
上一篇 2024-10-12 09:44
下一篇 2024-10-12 09:44

相关推荐

  • Centos7配置静态ip

    本文将详细阐述如何在Centos7系统中配置静态ip。 一、查看网络接口 在配置静态ip之前,我们首先需要查看系统中的网络接口,以确定我们需要配置的网卡是哪一个。 ifconfig…

    编程 2025-04-29
  • Python检测IP连通

    Python是一门强大的编程语言,常用于网络开发、数据分析等领域。IP地址是网络通信的基础,在网络通信中,有时需要检测IP地址是否连通。下面将从多个方面介绍Python检测IP连通…

    编程 2025-04-28
  • 使用JavaScript日期函数掌握时间

    在本文中,我们将深入探讨JavaScript日期函数,并且从多个视角介绍其应用方法和重要性。 一、日期的基本表示与获取 在JavaScript中,使用Date对象来表示日期和时间,…

    编程 2025-04-28
  • Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901解析

    本文将对Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901进行详细解析,并提供相关代码示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    编程 2025-04-27
  • JavaScript中使用new Date转换为YYYYMMDD格式

    在JavaScript中,我们通常会使用Date对象来表示日期和时间。当我们需要在网站上显示日期时,很多情况下需要将Date对象转换成YYYYMMDD格式的字符串。下面我们来详细了…

    编程 2025-04-27
  • JavaScript中修改style属性的方法和技巧

    一、基本概念和方法 style属性是JavaScript中一个非常重要的属性,它可以用来控制HTML元素的样式,包括颜色、大小、字体等等。这里介绍一些常用的方法: 1、通过Java…

    编程 2025-04-25
  • JavaScript中的Object.getOwnPropertyDescriptors()

    一、简介 Object.getOwnPropertyDescriptors()是JavaScript中一个非常有用的工具。简单来说,这个方法可以获取一个对象上所有自有属性的属性描述…

    编程 2025-04-25
  • CloneDeep函数在Javascript开发中的应用

    一、CloneDeep的概念 CloneDeep函数在Javascript中是一种深层克隆对象的方法,可以在拷贝对象时避免出现引用关系。使用者可以在函数中设置可选参数使其满足多种拷…

    编程 2025-04-25
  • JavaScript保留整数的完整指南

    JavaScript是一种通用脚本语言,非常适合Web应用程序开发。在处理数字时,JavaScript可以处理整数和浮点数。在本文中,我们将重点关注JavaScript如何保留整数…

    编程 2025-04-25
  • JavaScript点击事件全方位指南

    一、click事件基础 click事件是最常用的鼠标事件之一,当元素被单击时触发。click事件适用于大多数HTML元素(<a>、<button>)和SVG…

    编程 2025-04-25

发表回复

登录后才能评论