JS 获取电脑本地IP 和 电脑网络IP(外网IP|公网IP)
1、JS 获取电脑本地的IP地址(内网)
function getIP(callback) { let recode = {}; let RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; if (!RTCPeerConnection) { let win = iframe.contentWindow; RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection; } //创建实例,生成连接 let pc = new RTCPeerConnection(); // 匹配字符串中符合ip地址的字段 function handleCandidate(candidate) { let ip_regexp = /([0-9]{1,3}(\.[0-9]{1,3}){3}|([a-f0-9]{1,4}((:[a-f0-9]{1,4}){7}|:+[a-f0-9]{1,4}){6}))/; let ip_isMatch = candidate.match(ip_regexp)[1]; if (!recode[ip_isMatch]) { callback(ip_isMatch); recode[ip_isMatch] = true; } } //监听icecandidate事件 pc.onicecandidate = (ice) => { if (ice.candidate) { handleCandidate(ice.candidate.candidate); } }; //建立一个伪数据的通道 pc.createDataChannel(''); pc.createOffer((res) => { pc.setLocalDescription(res); }, () => {}); //延迟,让一切都能完成 setTimeout(() => { let lines = pc.localDescription.sdp.split('\n'); lines.forEach(item => { if (item.indexOf('a=candidate:') === 0) { handleCandidate(item); } }) }, 1000); } getIP(function(ip){ console.log("得到的本地IP :" + ip); // 192.168.1.80 });
2、通过第三方接口获取电脑在网络上的IP地址(外网)
浏览器不能直接获取本机ip地址,需要调用第三方接口。或者自己提供一个接口来获取。这里提供一个简单的第三方接口来获取ip地址。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>GET IP</title> </head> <body> <div id="dom"></div> </body> </html> <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/javascript"> console.log(returnCitySN) // 下面这行和上面的script一起使用 获取真实IP地址 document.write(returnCitySN["cip"]+','+returnCitySN["cname"] + "真实IP地址") </script>
获取本机ip失败,webrtc candidate xxx.local mDNS ip地址问题
谷歌解决办法
搜索chrome://flags/#enable-webrtc-hide-local-ips-with-mdns
将Anonymize local IPs exposed by WebRTC
置为disabled
据说Google webrtc 的ip地址之前是暴露的,然后有了mDNS功能,把ip地址隐藏了,要获取ip的话,要把mDNS关闭,但是这个插件开关,只在85版本及以前可以找到,86开始就找不到了,更别提关闭,太难了
火狐解决办法
搜索about:config
将media.peerconnection.ice.obfuscate_host_addresses
置为false
火狐浏览器84版本还是可以找到插件开关的
感谢大佬的分享
https://blog.csdn.net/weixin_43915401/article/details/111830699