zoukankan      html  css  js  c++  java
  • JS获取客户端ClientIP

    <!doctype html>
    <html>
    
        <head>
            <meta charset="utf-8">
            <title>IP Address</title>
        </head>
    
        <body>
    
            IP is:<h1 id=list></h1>
            <button id="getIp" onclick="getIp();">获取Ip</button>
            <script>
                function getIp() {
                    var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
    
                    if(RTCPeerConnection)(function() {
                            var rtc = new RTCPeerConnection({
                                iceServers: []
                            });
                            if(1 || window.mozRTCPeerConnection) {
                                rtc.createDataChannel('', {
                                    reliable: false
                                });
                            };
    
                            rtc.onicecandidate = function(evt) {
                                if(evt.candidate) grepSDP("a=" + evt.candidate.candidate);
                            };
                            rtc.createOffer(function(offerDesc) {
                                grepSDP(offerDesc.sdp);
                                rtc.setLocalDescription(offerDesc);
                            }, function(e) {
                                console.warn("offer failed", e);
                            });
    
                            var addrs = Object.create(null);
                            addrs["0.0.0.0"] = false;
    
                            function updateDisplay(newAddr) {
                                if(newAddr in addrs) return;
                                else addrs[newAddr] = true;
                                var displayAddrs = Object.keys(addrs).filter(function(k) {
                                    return addrs[k];
                                });
                                alert(displayAddrs);
                                document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
                            }
    
                            function grepSDP(sdp) {
                                var hosts = [];
                                sdp.split('
    ').forEach(function(line) {
                                    if(~line.indexOf("a=candidate")) {
                                        var parts = line.split(' '),
                                            addr = parts[4],
                                            type = parts[7];
                                        if(type === 'host') updateDisplay(addr);
                                    } else if(~line.indexOf("c=")) {
                                        var parts = line.split(' '),
                                            addr = parts[2];
                                        updateDisplay(addr);
                                    }
                                });
                            }
                        })
                        ();
                    else {
                        document.getElementById('list').innerHTML = "<code>ifconfig | grep inet | grep -v inet6 | cut -d" " -f2 | tail -n1</code>";
                        document.getElementById('list').nextSibling.textContent = "In Chrome and Firefox your IP should display automatically, by the power of WebRTCskull.";
                    }
                }
            </script>
    
        </body>
    
    </html>
  • 相关阅读:
    使用CSS3美化复选框checkbox
    MYSQL select时锁定记录问题
    SQL Server中的锁
    T-SQL查询进阶—理解SQL Server中的锁
    SQL:查找被锁的表,以及锁表的SQL语句(重点推荐)
    Mac 常用的手势
    Mac 常用的快捷键
    Mac上的学习神器:Marginnote
    Mac 常用命令介绍
    Mac 上的传奇效率神器 Alfred 3
  • 原文地址:https://www.cnblogs.com/jdy1022/p/14744214.html
Copyright © 2011-2022 走看看