• 一段通过WebRTC获取客户端内网IP的js (无需java/ActiveX支持)


    已在chrome firefox下测试

    our network IP is: <h1 id=list></h1> Make the locals proud.
    <script>
    
    // NOTE: window.RTCPeerConnection is "not a constructor" in FF22/23
    var RTCPeerConnection = /*window.RTCPeerConnection ||*/ window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
    
    if (RTCPeerConnection) (function () {
    var rtc = new RTCPeerConnection({iceServers:[]});
    if (window.mozRTCPeerConnection) {      // FF needs a channel/stream to proceed
    rtc.createDataChannel('', {reliable:false});
    };
    
    rtc.onicecandidate = function (evt) {
    if (evt.candidate) grepSDP(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]; });
    document.getElementById('list').textContent = displayAddrs.join(" or perhaps ") || "n/a";
    }
    
    function grepSDP(sdp) {
    var hosts = [];
    sdp.split('
    ').forEach(function (line) { // c.f. http://tools.ietf.org/html/rfc4566#page-39
    if (~line.indexOf("a=candidate")) {     // http://tools.ietf.org/html/rfc4566#section-5.13
    var parts = line.split(' '),        // http://tools.ietf.org/html/rfc5245#section-15.1
    addr = parts[4],
    type = parts[7];
    if (type === 'host') updateDisplay(addr);
    } else if (~line.indexOf("c=")) {       // http://tools.ietf.org/html/rfc4566#section-5.7
    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>
    
    via http://net.ipcalf.com/
  • 相关阅读:
    LeetCode with Python -> Linked List
    拼多多2018校招编程题汇总 Python实现
    Windows命令行中pip install jieba,但没有安装到anaconda3中
    sklearn快速入门
    人工神经网络在肺结核诊断中应用的研究进展
    Leetcode with Python -> Array
    标签语义空间生成
    leetcode with python -> tree
    读书笔记——中文信息处理发展报告(2016)
    移动开发学习记录
  • 原文地址:https://www.cnblogs.com/shcolo/p/3630362.html
Copyright © 2020-2023  润新知