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

JavaScript0137

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获取MAC地址、IP地址及主机名的方法:

复制代码代码如下:

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gbk">

</head>

<body>

<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" style="display:nonevisibility:hidden"></object>

<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo" style="display:nonevisibility:hidden"></object>

<form name="myForm">

<br/>MAC地址:<input type="text" name="macAddress">

<br/>IP地址:<input type="text" name="ipAddress">

<br/>主机名:<input type="text" name="hostName">

</form>

</body>

</html>

<script language="javascript">

var sMacAddr=""

var sIPAddr=""

var sDNSName=""

var service = locator.ConnectServer()

service.Security_.ImpersonationLevel=3

service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration')

</script>

<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">

if(objObject.IPEnabled != null &&objObject.IPEnabled != "undefined" &&objObject.IPEnabled == true){

if(objObject.IPEnabled &&objObject.IPAddress(0) !=null &&objObject.IPAddress(0) != "undefined")

sIPAddr = objObject.IPAddress(0)

if(objObject.MACAddress != null &&objObject.MACAddress != "undefined")

sMacAddr = objObject.MACAddress

if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined")

sDNSName = objObject.DNSHostName

}

</script>

<script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">

myForm.macAddress.value=sMacAddr

myForm.ipAddress.value=sIPAddr

myForm.hostName.value=sDNSName

</script>

本章内容分为三部分: 开始之前先简单了解一下 如:url地址: http://xxxxx:9010/test.html?leaf&le=2window.location.search获取到的就是 ?leaf&le=2 window.location.search.substr(1)获取到的就是 leaf&le=2 一、JS获取地址栏url参数: 如果你想获取地址栏的其他参数,只需要执行 var 参数=getUrlParam('参数') 比如获取参数a,执行 var a=getUrlParam('a') 就可以啦。简单又实用。 二、解决请求接口乱码问题 但是在我请求接口数据的时候,页面获取到是类似???这种乱码。 然后我是这样解决的: 1、发送方decodeURI编码: 2、接收方encodeURI解码 根据后台接口拼接url中使用encodeURI: 三、关于根据后台接口拼接url 整理笔记,不断优化更新。如果有错误或可以优化的地方欢迎指出,互相学习,共同进步。 如果对你有用就点个小心心吧❤