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

JavaScript07

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地址是:自动配置的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>

一、使用JS获取客户端IP的几个方法

方法一(只针对IE且客户端的IE允许AcitiveX运行,通过台:XP,SERVER03,2000)。

获取客户端IP代码:

代码如下:

<HTML>

<HEAD>

<TITLE>GetLocalIP</TITLE>

</HEAD>

<BODY>

获取IP:

<script language="JavaScript">function GetLocalIPAddr(){ var

oSetting = nullvar ip = nulltry{ oSetting = new

ActiveXObject("rcbdyctl.Setting")ip = oSetting.GetIPAddressif

(ip.length == 0){ return "没有连接到Internet"} oSetting = null}catch(e){

return ip} return ip} document.write(GetLocalIPAddr()+"<br/>")

</script>

</BODY>

</HTML>

方法二(所有的平台及浏览器):

获取客户端处在网络中的IP,前提是客户得联网。使用的是新浪接口。

代码如下:

<html>

<head>

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

<title>JavaScript获取客户端IP[利用新浪接口]</title>

</head>

<body>

<script type="text/javascript" src="http://counter.sina.com.cn/ip/" charset="gb2312"></script> <!--获取接口数据,注意charset -->

<script type="text/javascript">

document.writeln("IP地址:"+ILData[0]+"<br />")//输出接口数据中的IP地址

document.writeln("地址类型:"+ILData[1]+"<br />")//输出接口数据中的IP地址的类型

document.writeln("地址类型:"+ILData[2]+"<br />")//输出接口数据中的IP地址的省市

document.writeln("地址类型:"+ILData[3]+"<br />")//输出接口数据中的IP地址的

document.writeln("地址类型:"+ILData[4]+"<br />")//输出接口数据中的IP地址的运营商

</script>

</body>

</html>

方法三(所有的平台及浏览器):

使用的搜狐接口

代码如下:

<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>

<script type="text/javascript">

document.write(returnCitySN["cip"]+','+returnCitySN["cname"])

</script>