js获取设备内网ip
可以直接使用,不需要导入其他配置
看代码
1 <script> 2 //获取内网ip 3 var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection; 4 if (RTCPeerConnection) ( 5 function () { 6 var rtc = new RTCPeerConnection({iceServers:[]}); 7 if (1 || window.mozRTCPeerConnection) { 8 rtc.createDataChannel('', {reliable:false}); 9 }; 10 11 rtc.onicecandidate = function (evt) { 12 if (evt.candidate) grepSDP("a="+evt.candidate.candidate); 13 }; 14 rtc.createOffer(function (offerDesc) { 15 grepSDP(offerDesc.sdp); 16 rtc.setLocalDescription(offerDesc); 17 }, function (e) { console.warn("offer failed", e); }); 18 var addrs = Object.create(null); 19 addrs["0.0.0.0"] = false; 20 function updateDisplay(newAddr) { 21 if (newAddr in addrs) return; 22 else addrs[newAddr] = true; 23 var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; }); 24 for(var i = 0; i < displayAddrs.length; i++){ 25 if(displayAddrs[i].length > 16){ 26 displayAddrs.splice(i, 1); 27 i--; 28 } 29 } 30 //打印出该设备连接的所有内网ip 31 console.log(displayAddrs); 32 //排第一个ip 33 console.log(displayAddrs[0]); 34 } 35 function grepSDP(sdp) { 36 var hosts = []; 37 sdp.split('\r\n').forEach(function (line, index, arr) { 38 if (~line.indexOf("a=candidate")) { 39 var parts = line.split(' '), 40 addr = parts[4], 41 type = parts[7]; 42 if (type === 'host') updateDisplay(addr); 43 } else if (~line.indexOf("c=")) { 44 var parts = line.split(' '), 45 addr = parts[2]; 46 updateDisplay(addr); 47 } 48 }); 49 } 50 })(); 51 else{ 52 console.log("请使用主流浏览器:chrome,firefox,opera,safari"); 53 } 54 55 </script>
测试结果:
》》》》》》》》》》》注意
根据最新的隐私协议,浏览器默认开启了ip隐藏配置,需要手动关闭即可继续使用上面的js 这里以chrome 为例子, 网址打开配置 chrome://flags/#enable-webrtc-hide-local-ips-with-mdns 然后找到 Anonymize local IPs exposed by WebRTC ,将其设置为 disabled ,然后重启浏览器生效
再次测试截图
本文来自博客园,作者:岑惜,转载请注明原文链接:https://www.cnblogs.com/c2g5201314/p/12243106.html
响应开源精神相互学习,内容良币驱除劣币
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!