JS获取本机IP地址的方法(附上解决浏览器无法获取IP的方法)

JavaScript021

JS获取本机IP地址的方法(附上解决浏览器无法获取IP的方法),第1张

获取本机IP地址: 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("没有找到")} } 如果电脑没获取到,基本上是因为浏览器限制了,解除方法如下: 解决方案: 火狐(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正常显示 )

如果你要纯用js来实现,那就会有安全性的问题了,你要让用户把他的IE针对你的网站,把相应的安全性限制去掉才能使用,js显示本机IP.要注册一个控件,这个控件会出现安全提示,会给用户提示造成很大的影响.所以一般不用js来获取本机IP. 如果你不在意这个的话,代码如下:<HTML> <HEAD> <TITLE> WMI Scripting HTML </TITLE> <META http-equiv=Content-Type content= "text/html; charset=gb2312 "> <SCRIPT language=JScript event= "OnCompleted(hResult62pErrorObject, pAsyncContext) " for=foo> document.forms[0].txtMACAddr.value=unescape(MACAddr); document.forms[0].txtIPAddr.value=unescape(IPAddr); document.forms[0].txtDNSName.value=unescape(sDNSName); //document.formbar.submit(); </SCRIPT> <SCRIPT language=JScript event=OnObjectReady(objObjectycgobjAsyncContext) for=foo> if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined " && objObject.IPEnabled == true) { if(objObject.MACAddress != null && objObject.MACAddress != "undefined ") MACAddr = objObject.MACAddress; if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined ") IPAddr = objObject.IPAddress(0); if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined ") sDNSName = objObject.DNSHostName; } </SCRIPT> <META content= "MSHTML 6.00.2800.1106 " name=GENERA......余下全文>>

js获取的ip地址是:自动配置的IPv4地址:

<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>

<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>

<SCRIPT language=JScript>

var service = locator.ConnectServer()

var MACAddr

var IPAddr

var DomainAddr

var sDNSName

service.Security_.ImpersonationLevel=3

service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration')

</SCRIPT>

<FORM id=formfoo name=formbar action=NICPost.asp method=post>

<INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr>

<INPUT value=58.245.184.191 name=txtIPAddr >

<INPUT value=typ name=txtDNSName >

</FORM>