webrtc - RTCIceCandidate 不再返回 IP
问题描述
刚刚注意到,仅在 Chrome 上,RTCIceCandidate 不再返回 IP,而是一个模糊的地址。
RTCIceCandidate
address: "a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local"
candidate: "candidate:169888242 1 udp 2113937151 a5b3ef18-2e66-4e24-91d2-893b93bbc1c1.local 47871 typ host generation 0 ufrag 7dHv network-cost 999"
component: "rtp"
foundation: "169888242"
port: 47871
priority: 2113937151
protocol: "udp"
relatedAddress: null
relatedPort: null
sdpMLineIndex: 0
sdpMid: "0"
tcpType: ""
type: "host"
usernameFragment: "7dHv"
请注意,RTCIceCanadate 的第一个属性是“address”,“ip”不再是该对象的一部分。
以下代码确定浏览器的本地 IP 地址。仍然适用于 MOZ。
function discover()
{
try{
//Get Local IP
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
if (pc)
pc.close();
pc = new RTCPeerConnection({iceServers:[]});
pc.onicecandidate = onIceCandidate;
pc.createDataChannel("");
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
} catch (e)
{ console.log(e.message);}
}
function noop()
{
}
function onIceCandidate(ice)
{
console.log(ice.candidate);
if(!ice || !ice.candidate || !ice.candidate.candidate) return;
var my_ip = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
this.onicecandidate = noop;
ip = my_ip.split(".")[0]+'.'+my_ip.split(".")[1]+'.'+my_ip.split(".")[2];
}
WebRTC 现在正式是一个破碎的标准吗?MOZ 仍然将“ip”列为RTCIceCandidate的成员,但没有提及 Chrome 返回的“地址”成员。
有没有一种方法可以将 mDNS 地址解混淆回 IP 地址,而不会强迫用户弄乱他们不理解的浏览器设置?
解决方案
推荐阅读
- kubernetes - 为什么 Kubernetes DNS 中没有注册 Pod 名称?
- wordpress - Gridsome条件模板生成
- c# - 如何使用 C# 从 XML API 获取数据
- sql-server - 尝试使用 SQL 枢轴创建行列
- if-statement - Configmap 中的 Kubernetes If/Or 语句
- postgresql - DataGrip 图:从箭头中删除标签?
- sql - 在 PSQL 中编辑连接/连接表结果的结果
- javascript - 如何使用 setinterval 更改多个元素 innerHTML?
- microsoft-graph-api - b2c 用户的 Azure 的 Graph api passwordprofile NULL
- google-sheets-api - Google Sheets API批量更新updateChartSpec不更新右轴viewWindowMax