// 数据库
var database = {
'123.123.123.123': {
province: '北京市',
city: '北京市',
operators: '联通',
},
'123.123.123.124': {
province: '北京市',
city: '北京市',
operators: '联通',
}
// ...
}
// 主函数
var inquireIP = function (ip) {
if(database[ip]) {
return database[ip]
}else{
console.log('找不到ip:' + ip)
return null
}
}
// 调用
var ipData = inquireIP('123.123.123.123')
这样子这个js文件会很大,也可以调用API的形式,为方便下面js代码使用了jquery
// 主函数
var inquireIP = function (ip, callback) {
$.ajax({
url: '你的API接口地址',
type: 'GET',
dataType: 'jsonp',
data: {ip: ip}
})
.done(function(data) {
callback(data)
})
}
// 调用
inquireIP('123.123.123.123', function (data) {
console.log(data)
})
这样子就可以在服务端处理,当然提前你得有服务器,并搭建一个查询ip的API接口
获取本机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正常显示 )