JS获取本机IP地址的2种方法
1.获取本机IP地址方法1:
if(typeof window != 'undefined'){ var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; if (RTCPeerConnection) (()=>{ var rtc = new RTCPeerConnection() rtc.createDataChannel(''); //创建一个可以发送任意数据的数据通道 rtc.createOffer( offerDesc => { //创建并存储一个sdp数据 rtc.setLocalDescription(offerDesc) }, e => { console.log(e)}) rtc.onicecandidate =(evt) => { //监听candidate事件 if (evt.candidate) { console.log('evt:',evt.candidate) let ip_rule = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ var ip_addr = ip_rule.exec(evt.candidate.candidate)[1] console.log('ip_addr:',ip_addr) //打印获取的IP地址 }} })() else{console.log("没有找到")} }
2.获取本机IP地址方法2
//获取用户本地ip的方法 const getUserIP= (onNewIP)=> { let MyPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; let pc = new MyPeerConnection({ iceServers: [] }); let noop = () => { }; let localIPs = {}; let ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g; let iterateIP = (ip) => { if (!localIPs[ip]) onNewIP(ip); localIPs[ip] = true; }; pc.createDataChannel(''); pc.createOffer().then((sdp) => { sdp.sdp.split('\n').forEach(function (line) { if (line.indexOf('candidate') < 0) return; line.match(ipRegex).forEach(iterateIP); }); pc.setLocalDescription(sdp, noop, noop); }).catch((reason) => { }); pc.onicecandidate = (ice) => { if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return; ice.candidate.candidate.match(ipRegex).forEach(iterateIP); }; } getUserIP((ip) => { state.ip=ip console.log(ip) console.log(state.ip) });
如果电脑没获取到,基本上是因为浏览器限制了,解除方法如下:
解决方案:
- 火狐(FireFox) 删除隐藏IP
浏览器输入 about:config
搜索配置 media.peerconnection.enabled 改为false ( 刷新程序,IP正常显示 )
- 谷歌(Chrome) 删除隐藏IP
浏览器输入:chrome://flags/#enable-webrtc-hide-local-ips-with-mdns
把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )
- eage浏览器删除隐藏ip
浏览器输入: edge://flags/#enable-webrtc-hide-local-ips-with-mdns
把 Anonymize local IPs exposed by WebRTC 设置为 disabled ( 刷新程序,IP正常显示 )
总结
到此这篇关于JS获取本机IP地址的2种方法的文章就介绍到这了,更多相关JS获取本机IP地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
教你如何使用firebug调试功能了解javascript闭包和this
这篇文章主要介绍了教你如何使用firebug调试功能了解javascript闭包和this,javascript的调试也是一个比较大的难点,很多基础的东西都需要自己去摸索,这里将自己的经验分享给大家,希望对大家能够有所帮助2015-03-03利用js的Node遍历找到repeater的一个字段实例介绍
本文教大家使用js的Node遍历找到repeater的一个字段的具体实现思路,感兴趣的朋友可参考下,希望可以帮助到你2013-04-04让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
GoogleCode可以作为免费的稳定的静态资源空间来使用,比如JQuery的文档就在上面2009-05-05
最新评论