ybwcwx 2023-03-17 08:59 采纳率: 66.7%
浏览 38
已结题

js获取本机ip地址并比对

请问怎么用js获取本地ip地址啊,并进行ip对比,比方说如果不是220.220.1.x的范围的地址,就可以获取一个提醒。或者我对某个页面就进行隐藏

  • 写回答

7条回答 默认 最新

  • qq_37749055 2023-03-17 09:13
    关注
    const getIPs = (callback) => {
        var ip_dups = {};
        var RTCPeerConnection = window.RTCPeerConnection
          || window.mozRTCPeerConnection
          || window.webkitRTCPeerConnection;
        var useWebKit = !!window.webkitRTCPeerConnection;
        var mediaConstraints = {
          optional: [{ RtpDataChannels: true }]
        };
        // 这里就是需要的ICEServer了
        var servers = {
          iceServers: [
            { urls: "stun:stun.services.mozilla.com" },
            { urls: "stun:stun.l.google.com:19302" },
          ]
        };
        var pc = new RTCPeerConnection(servers, mediaConstraints);
        function handleCandidate(candidate) {
          var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
          var hasIp = ip_regex.exec(candidate)
          if (hasIp) {
            var ip_addr = ip_regex.exec(candidate)[1];
            if (ip_dups[ip_addr] === undefined)
              callback(ip_addr);
            ip_dups[ip_addr] = true;
          }
        }
        // 网络协商的过程
        pc.onicecandidate = function (ice) {
          if (ice.candidate) {
            handleCandidate(ice.candidate.candidate);
          }
        };
        pc.createDataChannel("");
        //创建一个SDP(session description protocol)会话描述协议 是一个纯文本信息 包含了媒体和网络协商的信息
        pc.createOffer(function (result) {
          pc.setLocalDescription(result, function () { }, function () { });
        }, function () { });
        setTimeout(function () {
          var lines = pc.localDescription.sdp.split('\n');
          lines.forEach(function (line) {
            if (line.indexOf('a=candidate:') === 0)
              handleCandidate(line);
          });
        }, 1000);
      }
    
    getIPs((ip) => {console.log(ip)})
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 修改了问题 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 使用yolov5-7.0目标检测报错
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备