美文网首页
通过webRTC 获取内网IP

通过webRTC 获取内网IP

作者: 一梦三四年lyp | 来源:发表于2021-06-29 22:32 被阅读0次

    一,首先一个获取当前客户端的IP地址的网址:http://net.ipcalf.com/ 显示的是一段机器码

    Your network IP is:
    fff83651-0b2a-4213-9d4a-18a9e88572c4.local
    Make the locals proud.
    

    二,Chrome和Firefox浏览器会默认隐藏内网的IP地址,所以需要设置一些额外的东西才可以将IP地址显示出来
    Chrome:在Chrome浏览器地址栏中输入:chrome://flags/
    搜索#enable-webrtc-hide-local-ips-with-mdns 该配置 并将属性改为 disabled
    之后按照chrome的指示重启一下IP地址就正常了。
    但是chrome更新到86版本之后就找不到#enable-webrtc-hide-local-ips-with-mdns 这个配置项了,

    三,替代的解决方案是安装一个WebRTC Network Limiter插件,然后选择第二项,这样的话本地ip地址就又能正常的显示出来了

    image.png

    刷新页面


    image.png

    js脚本

    
    
    <html>
    
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    
    <title>JavaScript获取客户端IP[利用新浪接口]</title>
    
    </head>
    
    <body>
    <script>
        
    
    //创建RTCPeerConnection接口
    let conn = new RTCPeerConnection({
            iceServers: []
        }) 
    let noop = function(){}
    conn.onicecandidate = function(ice){
        if (ice.candidate){
            //使用正则获取ip
            let ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
            let ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
            console.log(ip_addr);
            conn.onicecandidate = noop
        }
    }
    //随便创建一个叫狗的通道(channel)
    conn.createDataChannel('dog')
    //创建一个SDP协议请求
    conn.createOffer(conn.setLocalDescription.bind(conn),noop)
    
    
    </script>
    
    
    
    
    </body>
    
    </html>
    
    
    

    相关文章

      网友评论

          本文标题:通过webRTC 获取内网IP

          本文链接:https://www.haomeiwen.com/subject/ubnkultx.html