`
arpenker
  • 浏览: 357695 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

获取本机局域网的IP

阅读更多
准备工作:chrome 浏览器,修改配置.
地址栏:
chrome://flags/;
然后:

Anonymize local IPs exposed by WebRTC.
设置为disable

点击relaunch;


接下来.

把下面的代码存为html运行一下WEB页就可以了.



<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        <h4>
            Demo for:
            <a href="https://github.com/diafygi/webrtc-ips">
                https://github.com/diafygi/webrtc-ips
            </a>
        </h4>
        <p>
            This demo secretly makes requests to STUN servers that can log your
            request. These requests do not show up in developer consoles and
            cannot be blocked by browser plugins (AdBlock, Ghostery, etc.).
        </p>
        <h4>Your local IP addresses:</h4>
        <ul></ul>
        <h4>Your public IP addresses:</h4>
        <ul></ul>
        <script>
            //get the IP addresses associated with an account
            function getIPs(callback){
                var ip_dups = {};
                //compatibility for firefox and chrome
                var RTCPeerConnection = window.RTCPeerConnection
                    || window.mozRTCPeerConnection
                    || window.webkitRTCPeerConnection;
                var useWebKit = !!window.webkitRTCPeerConnection;
                //bypass naive webrtc blocking
                if(!RTCPeerConnection){
                    //create an iframe node
                    var iframe = document.createElement('iframe');
                    iframe.style.display = 'none';
                    //invalidate content script
                    iframe.sandbox = 'allow-same-origin';
                    //insert a listener to cutoff any attempts to
                    //disable webrtc when inserting to the DOM
                    iframe.addEventListener("DOMNodeInserted", function(e){
                        e.stopPropagation();
                    }, false);
                    iframe.addEventListener("DOMNodeInsertedIntoDocument", function(e){
                        e.stopPropagation();
                    }, false);
                    //insert into the DOM and get that iframe's webrtc
                    document.body.appendChild(iframe);
                    var win = iframe.contentWindow;
                    RTCPeerConnection = win.RTCPeerConnection
                        || win.mozRTCPeerConnection
                        || win.webkitRTCPeerConnection;
                    useWebKit = !!win.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(useWebKit)
                    servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
                //construct a new RTCPeerConnection
                var pc = new RTCPeerConnection(servers, mediaConstraints);
                function handleCandidate(candidate){
                    //match just the IP address
                    var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
                    var ip_addr = ip_regex.exec(candidate)[1];
                    //remove duplicates
                    if(ip_dups[ip_addr] === undefined)
                        callback(ip_addr);
                    ip_dups[ip_addr] = true;
                }
                //listen for candidate events
                pc.onicecandidate = function(ice){
                    //skip non-candidate events
                    if(ice.candidate)
                        handleCandidate(ice.candidate.candidate);
                };
                //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(){});
                //wait for a while to let everything done
                setTimeout(function(){
                    //read candidate info from local description
                    var lines = pc.localDescription.sdp.split('\n');
                    lines.forEach(function(line){
                        if(line.indexOf('a=candidate:') === 0)
                            handleCandidate(line);
                    });
                }, 1000);
            }
            //insert IP addresses into the page
            getIPs(function(ip){
                var li = document.createElement("li");
                li.textContent = ip;
                //local IPs
                if (ip.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/))
                    document.getElementsByTagName("ul")[0].appendChild(li);
                //assume the rest are public IPs
                else
                    document.getElementsByTagName("ul")[1].appendChild(li);
            });
        </script>
    </body>
</html>
分享到:
评论

相关推荐

    C#获取本地ip 获取局域网ip

    2. **获取局域网IP**: - 局域网IP通常指的是路由器分配的私有IP,可以通过上面的代码过滤出以`192.168.`或`10.`开头的IP。 ```csharp var lanIps = localIps.Where(ip =&gt; ip.StartsWith("192.168.") || ip....

    一键获取本机在局域网中的IP地址

    本工具可一键获取到本机在局域网中所分配的IP地址。十分高效便捷。

    获取内网ip地址3种方法

    - 鉴于网络安全考虑,某些系统可能限制了获取本机IP地址的权限,需要确保程序有足够的权限运行。 综上所述,获取内网IP地址的方法多样,开发者应根据项目需求和环境选择适当的技术实现。同时,理解网络通信的基本...

    C#(WPF)获取本地IP地址 C#编程

    在C#编程中,Windows Presentation Foundation (WPF)是一个用于构建桌面应用的框架,而获取本地IP地址是网络编程中的常见需求。这篇文章将详细介绍如何在C# WPF应用中实现这个功能,适合初学者学习。 首先,我们...

    C++获取所有局域网可用IP(ping)

    - **局域网IP**:局域网(LAN)内的设备通常使用私有IP地址,如192.168.x.x或10.x.x.x,这些地址不直接暴露在互联网上。 - **ping命令**:ping是一个基于ICMP协议的命令,用于测试网络连接和延迟。 2. **C++与...

    获取手机IP各种地址

    获取手机IP各种地址,网上都是获取局域网的ip,写了一个能真正获取手机的各种iP各种地址。

    java获取局域网ip列表

    使用java获取所在局域网的所有在用ip,可以检测目前有哪些ip在使用

    C++获取所有局域网可用IP ping源码

    在压缩包中的"C++ping"文件可能是实现上述功能的源代码,你可以根据这个文件进一步学习和理解C++获取局域网IP及ping操作的具体实现。在实践中,应当遵循良好的编程习惯,包括代码注释、错误处理和代码结构化,以便于...

    获取局域网IP

    用来获取局域网内本机的IP。 用来获取局域网内本机的IP。 用来获取局域网内本机的IP。 用来获取局域网内本机的IP。 用来获取局域网内本机的IP。

    C#获取局域网内所有计算机的IP地址和MAC地址

    程序启动时首先获取本机的IP和MAC地址; 然后获取局域网内所有计算机的IP地址; 输入IP地址回车,获取该IP的MAC地址; 输入“STARTSCAN”回车,重新获取局域网内所有计算机的IP地址; 输入“ALLSCAN”回车,获取...

    C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

    1、获取本机的IP地址集合: /// /// 获取本机所有ip地址 /// /// &lt;param name=netType&gt;InterNetwork:ipv4地址,InterNetworkV6:ipv6地址 /// &lt;returns&gt;ip地址集合 public static List&lt;string&gt; GetLocalIp...

    局域网IP地址查询

    总结来说,"局域网IP地址查询"工具是一个实用的网络管理助手,通过它,用户可以轻松获取局域网内的设备IP信息,从而提高工作效率,简化网络管理任务。配合详细的使用说明和必要的技术支持,使得即使是不太熟悉网络...

    获取局域网IP.cs

    使用Unity3D获取局域网内所有的IP地址,代码需要更改成使用者自己的网段,然后将脚本挂载到游戏物体中,运行程序就可以获取到网段下所有连入到局域网的IP.

    一键获取局域网IP

    一键获取本机局域网的IP地址,十分快捷。

    VB获取局域网IP地址源码

    接下来,我们讨论如何在VB中实现获取局域网IP地址的功能: 1. **Winsock控件**:VB中可以使用Winsock控件来处理网络通信,包括获取IP地址。Winsock控件提供了低级别的TCP/IP协议访问,可以通过广播数据包来发现网络...

    易语言源码取局域网内的所有计算机名、IP、网卡地址.zip

    首先,我们来看易语言如何获取局域网内计算机名。在Windows系统中,可以通过WMI(Windows Management Instrumentation)服务来获取网络上的计算机信息。WMI提供了一种标准的方式来访问操作系统和其他软件组件的管理...

    C# 获取局域网所有设备IP和MAC

    本教程将深入讲解如何使用C#来获取局域网内所有设备的IP和MAC地址。 首先,我们要理解IP和MAC地址的概念。IP(Internet Protocol)地址是互联网上的设备唯一标识,用于数据传输。而MAC(Media Access Control)地址...

    获取手机ip

    这通常返回的是设备连接到网络的局域网IP地址,而非全局唯一的公共IP。 3. **处理IPv4和IPv6**: `getLocalHost()`返回的是一个`InetAddress`对象,可能包含IPv4或IPv6地址。你可以通过`getHostAddress()`方法获取...

    C#动态获取局域网中所有在线的IP地址

    我们可以使用Dns类的GetHostEntry方法,传入"localhost"或者"127.0.0.1",获取本机的IPHostEntry对象,从而得到本机的IP地址。 2. **NetworkInterface类**:这个类提供了关于网络接口的信息,包括物理地址(MAC地址...

    获取局域网的ip地址和主机名

    在获取局域网IP地址时,我们可以使用`async`和`await`关键字,配合`GetHostEntryAsync()`方法实现异步获取。这样,当调用此方法时,程序并不会等待其完成,而是立即返回并继续执行后续代码,直到需要结果时才会暂停...

Global site tag (gtag.js) - Google Analytics