一,首先一个获取当前客户端的IP地址的网址:http://net.ipcalf.com/ 显示的是一段机器码
Your network IP is:
fff83651-0b2a-4213-9d4a-18a9e88572c4.local
Make the locals proud.
二,Chrome和Firefox浏览器会默认隐藏内网的IP地址,所以需要设置一些额外的东西才可以将IP地址显示出来
Chrome:在Chrome浏览器地址栏中输入:chrome://flags/
搜索#enable-webrtc-hide-local-ips-with-mdns 该配置 并将属性改为 disabled
之后按照chrome的指示重启一下IP地址就正常了。
但是chrome更新到86版本之后就找不到#enable-webrtc-hide-local-ips-with-mdns 这个配置项了,
三,替代的解决方案是安装一个WebRTC Network Limiter插件,然后选择第二项,这样的话本地ip地址就又能正常的显示出来了
image.png刷新页面
image.png
js脚本
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JavaScript获取客户端IP[利用新浪接口]</title>
</head>
<body>
<script>
//创建RTCPeerConnection接口
let conn = new RTCPeerConnection({
iceServers: []
})
let noop = function(){}
conn.onicecandidate = function(ice){
if (ice.candidate){
//使用正则获取ip
let ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
let ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
console.log(ip_addr);
conn.onicecandidate = noop
}
}
//随便创建一个叫狗的通道(channel)
conn.createDataChannel('dog')
//创建一个SDP协议请求
conn.createOffer(conn.setLocalDescription.bind(conn),noop)
</script>
</body>
</html>
网友评论