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

JavaScript013

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获取ip的弊端是依然受IP白名单等授权限制。

由于代理IP资源是从代理IP服务商那里购买的,授权也是在代理服务商那里完成,所以还是会受到授权限制,比如支持2个IP白名单,那么自己搭建本地IP池后,依然只能在两个IP白名单上使用。

IP在TCP/IP参考模型中处于第三层,也就是网络层。网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(endtoend)通信。

/**

* 获取本地IP地址

*/

function getLocalIPAddress()

{

var obj = null

var rslt = "127.0.0.1"

try

{

obj = new ActiveXObject("rcbdyctl.Setting")

if (!isNull(obj.GetIPAddress))

{

rslt = obj.GetIPAddress

}

obj = null

}

catch(e)

{

//异常发生

}

return rslt

}