获取本机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正常显示 )
通过搜狐的ip查询接口实现
$(function(){
var api = "://pv.sohu.com/cityjson"//前面加上http
//这里api是搜狐IP地址查询接口
$.get(api,function(data){
var script = $('<script type="text/javascript"/>')[0]
script.defer = true
script.text = data
$(script).appendTo("head")
console.log("cid : " + returnCitySN.cid)
console.log("cip : " + returnCitySN.cip)//得到IP
console.log("cname : " + returnCitySN.cname)//得到城市
},"text")
})