文档章节

JavaScript获取网卡地址

碳素云信息技术
 碳素云信息技术
发布于 2016/10/25 15:04
字数 227
阅读 66
收藏 1
/*
 * 获取本机内网、外网IP地址  type==1:内网;type==2:外网
 * add by yzChen
 * time: 2015-10-29 21:04:56
 */
function getIPs(callback){
    var ip_dups = {};

    //compatibility for firefox and chrome
    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;

    //bypass naive webrtc blocking
    if (!RTCPeerConnection) {
        var iframe = document.createElement('iframe');
        //invalidate content script
        iframe.sandbox = 'allow-same-origin';
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
        var win = iframe.contentWindow;
        window.RTCPeerConnection = win.RTCPeerConnection;
        window.mozRTCPeerConnection = win.mozRTCPeerConnection;
        window.webkitRTCPeerConnection = win.webkitRTCPeerConnection;
        RTCPeerConnection = window.RTCPeerConnection
            || window.mozRTCPeerConnection
            || window.webkitRTCPeerConnection;
    }

    //minimal requirements for data connection
    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };

    //firefox already has a default stun server in about:config
    //    media.peerconnection.default_iceservers =
    //    [{"url": "stun:stun.services.mozilla.com"}]
    var servers = undefined;

    //add same stun server for chrome
    if(window.webkitRTCPeerConnection)
        servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

    //construct a new RTCPeerConnection
    var pc = new RTCPeerConnection(servers, mediaConstraints);

    //listen for candidate events
    pc.onicecandidate = function(ice){

        //skip non-candidate events
        if(ice.candidate){

            //match just the IP address
            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];

            //remove duplicates
            if(ip_dups[ip_addr] === undefined) {
				_type = '';
				if(ip_addr.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/)) {
					_type = '1';
				} else {
					_type = '2';
				}
                callback(ip_addr, _type);
			}

            ip_dups[ip_addr] = true;
        }
    };

    //create a bogus data channel
    pc.createDataChannel("");

    //create an offer sdp
    pc.createOffer(function(result){

        //trigger the stun server request
        pc.setLocalDescription(result, function(){}, function(){});

    }, function(){});
}

本文转载自:http://blog.chenyuanzhen.com/tools/

碳素云信息技术

碳素云信息技术

粉丝 14
博文 31
码字总数 11484
作品 0
绵阳
后端工程师
私信 提问
网络新时代,一台群晖+N台AP体验无线漫游:群晖VMM完美运行LEDE

网络新时代,一台群晖+N台AP体验无线漫游:群晖VMM完美运行LEDE 前面要讲的话: 跟着Hao4K后面学习到了很多知识,也充实了自己的生活。可是楼主是懒癌症患者一枚,这么多年还没有发过一篇原创...

晚上的太阳
2018/08/20
0
0
(爬虫)请问 如何抓取JS生成的网页?——返回结果是对象诶。。。。

js 获取到数据 然后write或者innerHTML的方式 生成的页面,源码中是看不到这些内容的 一般来说,我们会直接 找到js请求的地址,然后 获取该网站的 接口数据 比如: 国有资产、信息牌项目信息...

Inszt
2016/03/24
1K
4
WebView动态注入JavaScript脚本

Demo地址:https://gitee.com/chenyangqi/YouMeDai 背景介绍 在Android与JavaScript交互一文中学习了原生和JS交互,但是如果我们想和别人开发好的web页面交互呢,很明显这个web端并没有为我们...

木头同学
2018/08/07
0
0
在浏览器输入 URL 回车之后发生了什么(超详细版)

前言 这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。 这篇笔记是我这两天看了数十篇文章...

4Ark
08/22
0
0
JavaScript 是如何工作的:JavaScript 的共享传递和按值传递

摘要: 原始数据类型和引用数据类型的副本作为参数传递给函数。 原文:JavaScript 是如何工作的:JavaScript 的共享传递和按值传递 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 ...

Fundebug
04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

for循环

九九乘法表 示例:for(int i = 1; i <= 9; i++){ for (int j = 1; j <= i; j++) { // 每次开始i循环,j都会重新定义为j=1,然后开始循环计算 System.out.print(j +......

Shutting
25分钟前
9
0
小王子1

一定要帅! 韩国设计师品牌 insgram全世界得网红 韩国潮男穿搭 HM 找到穿衣服最好看的人,跟他比,比他好看。 在兴趣前,不要表现目的性,压力 关系是不热就冷的! 不喜欢压力,不喜欢负责任...

阿锋zxf
44分钟前
10
0
时间戳

1 loadTimeString(ts) { var d = new Date(); if (String(ts).length == 10) { d = new Date(ts * 1000); ......

东方巨人
45分钟前
7
0
Redis Cluster

Redis Cluster 集群 redis集群有以下几种方式 普通一主多从 普通一主多从+哨兵 cluster分片模式 一主多从 搭建方式网上很多,就不多描述了。 这种集群方式,一般master用作写,slave用做读,...

lazy~
46分钟前
13
0
 介绍一款优秀的通用管理权限快速开发框架

这是一套以权限管理为主的轻量化快速开发框架,配置有流程、专业表单、权限、app、企业微信等基础功能模块,在开发通用软件的效率上很有优势。 软件平台常用研发需求分析 《那些年我们一起做...

我想造火箭
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部