zoukankan      html  css  js  c++  java
  • 修改浏览器指纹之webrtc指纹修改

         因需求需要获取客户端的本机IP,目前比较好的办法是Html5+webrtc获取本机ip

    浏览器指纹完整查看:http://www.sdfymj.com/ua.php 另外,个人出一套完整浏览器硬件指纹修改源码

    附上代码:

      

    function findIP(onNewIP) { //  onNewIp - your listener function for new IPs[/font]  var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
      var pc = new myPeerConnection({iceServers: []}), // 空的ICE服务器(STUN或者TURN)
        noop = function() {},
        localIPs = {}, //记录有没有被调用到onNewIP这个listener上
        ipRegex = /([0-9]{1,3}(.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
        key;
      
      function ipIterate(ip) {
        if (!localIPs[ip]) onNewIP(ip);
        localIPs[ip] = true;
      }
      pc.createDataChannel(""); //create a bogus data channel
      pc.createOffer().then(function(sdp) {
        sdp.sdp.split('
    ').forEach(function(line) {
          if (line.indexOf('candidate') < 0) return;
          line.match(ipRegex).forEach(ipIterate);
        });
        pc.setLocalDescription(sdp, noop, noop);
      }); // create offer and set local description
      pc.onicecandidate = function(ice) { //listen for candidate events
        if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
        ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
      };
    }
      
      
      
    var ul = document.createElement('ul');
    ul.textContent = 'Your IPs are: '
    document.body.appendChild(ul);
      
    function addIP(ip) {
      console.log('got ip: ', ip);
      var li = document.createElement('li');
      li.textContent = ip;
      ul.appendChild(li);
    }
      
    findIP(addIP);
    

      

  • 相关阅读:
    第九周学习进度
    用户场景描述
    第九天
    第10天
    求两个有序数组的中值
    计算字符串中最长子字符串的长度
    计算两个数之和
    将string 转int
    判断一个int 型整数 是否为回文数
    php 对象的一些特性
  • 原文地址:https://www.cnblogs.com/68xi/p/13344520.html
Copyright © 2011-2022 走看看