JS获取本机IP地址的2种方法

2024-05-28 1335阅读

目录

    • 1.获取本机IP地址方法1:
    • 2.获取本机IP地址方法2
    • 解决方案:

      1.获取本机IP地址方法1:

      if(typeof window != 'undefined'){
          var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
          if (RTCPeerConnection) (()=>{
              var rtc = new RTCPeerConnection()
              rtc.createDataChannel(''); //创建一个可以发送任意数据的数据通道
              rtc.createOffer( offerDesc => { //创建并存储一个sdp数据
              rtc.setLocalDescription(offerDesc)
          }, e => { console.log(e)})
          rtc.onicecandidate =(evt) => { //监听candidate事件
              if (evt.candidate) {
                  console.log('evt:',evt.candidate)
                  let ip_rule = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
                  var ip_addr = ip_rule.exec(evt.candidate.candidate)[1]
                  console.log('ip_addr:',ip_addr)   //打印获取的IP地址
              }}
          })()
          else{console.log("没有找到")}
      }
      

      2.获取本机IP地址方法2

         //获取用户本地ip的方法
      const getUserIP= (onNewIP)=> {
        let MyPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
        let pc = new MyPeerConnection({
          iceServers: []
        });
        let noop = () => {
        };
        let localIPs = {};
        let ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g;
        let iterateIP = (ip) => {
          if (!localIPs[ip]) onNewIP(ip);
          localIPs[ip] = true;
        };
        pc.createDataChannel('');
        pc.createOffer().then((sdp) => {
          sdp.sdp.split('\n').forEach(function (line) {
            if (line.indexOf('candidate')  {
        });
        pc.onicecandidate = (ice) => {
          if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
          ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
        };
      }
       
        getUserIP((ip) => {
         state.ip=ip
            console.log(ip)
            console.log(state.ip)
        });
      

      如果电脑没获取到,基本上是因为浏览器限制了,解除方法如下:

      JS获取本机IP地址的2种方法
      (图片来源网络,侵删)

      解决方案:

      火狐(FireFox) 删除隐藏IP
      

      浏览器输入 about:config

      搜索配置 media.peerconnection.enabled 改为false ( 刷新程序,IP正常显示 )

      谷歌(Chrome) 删除隐藏IP
      

      浏览器输入:chrome://flags/#enable-webrtc-hide-local-ips-with-mdns

      把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )

      eage浏览器删除隐藏ip
      

      浏览器输入: edge://flags/#enable-webrtc-hide-local-ips-with-mdns

      把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]