webrtc协议学习

WebRTC 协议介绍 - Web API | MDN (mozilla.org)

知乎上看到评论科学上网“webrtc协议能知道你真实IP”,查了一下webrtc协议的原理,使用途径,

参考如何避免使用代理时WebRTC依旧泄露真实ip?附解决方案 (baidu.com)

WebRTC(Web实时通信)协议可能会泄露真实IP地址,这是因为WebRTC在一些浏览器中默认启用,并且可以通过JavaScript脚本直接获取本地IP地址。WebRTC通过STUN或TURN服务器获取用户的真实IP地址,以建立点对点连接。

WebRTC 泄漏真实 IP 的原理如下:

  WebRTC 支持浏览器之间径直构建点对点连接,借此达成实时通讯,像视频、语音及数据传输等。在创建 WebRTC 连接之际,浏览器会朝对方传送自身的 IP 地址,以促使双方成功建立连接。攻击者能凭借 JavaScript 或其他技术来访问 WebRTC 里的 API,从而获取用户的 IP 地址。          WebRTC 的 STUN/TURN 服务器同样能够泄露用户的 IP 地址。STUN/TURN 服务器乃是 WebRTC 中用于 NAT 穿透与中继的关键构成部分。倘若这些服务器存在破绽或者配置不当,攻击者便能通过它们来获取用户的真实 IP 地址,进而造成威胁。

WebRTC 使用信令服务获取客户端真实ip,无须用户授权

GitHub - Mluocheng/webRTC_getIP: 通过webrtc 获取客户端真实ip

function getIPs(callback){
    var ip_dups = {};

    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;
    var useWebKit = !!window.webkitRTCPeerConnection;

    if(!RTCPeerConnection){
        var win = iframe.contentWindow;
        RTCPeerConnection = win.RTCPeerConnection
            || win.mozRTCPeerConnection
            || win.webkitRTCPeerConnection;
        useWebKit = !!win.webkitRTCPeerConnection;
    }

    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };

    var servers = {iceServers: [{urls: "stun:stun.l.google.com:19302"}]};

    var pc = new RTCPeerConnection(servers, mediaConstraints);

    function handleCandidate(candidate){
        var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
        var ip_addr = ip_regex.exec(candidate) && ip_regex.exec(candidate)[1];

        if(!ip_addr) return;
        if(ip_dups[ip_addr] === undefined)
            callback(ip_addr);

        ip_dups[ip_addr] = true;
    }

    pc.onicecandidate = function(ice){
        if(ice.candidate)
            handleCandidate(ice.candidate.candidate);
    };

    pc.createDataChannel("");

    pc.createOffer(function(result){

        pc.setLocalDescription(result, function(){}, function(){});

    }, function(){});

    setTimeout(function(){
        var lines = pc.localDescription.sdp.split('\n');

        lines.forEach(function(line){
            if(line.indexOf('a=candidate:') === 0)
                handleCandidate(line);
        });
    }, 1000);
}

getIPs(function(ip){
    ip && console.log(ip);
});
参考WebRTC为什么会泄露我的真实IP (browserscan.net)
如何查看WebRTC是否隐私泄露

        浏览器在连接VPN的情况下访问 BrowserScan,在IP地址部分可以看到通过代理获取的IP地址和通过WebRTC获取的真实IP地址。一些VPN或代理可能没有解决WebRTC泄露问题,因此仍然可能存在隐私和安全方面的问题。

如何阻止WebRTC泄露IP

  • 完全禁用WebRTC: 在大多数现代浏览器中,你可以通过设置来禁用或限制WebRTC功能。通常,你可以在浏览器的设置或隐私选项中找到相关选项。禁用WebRTC是最简单的方法之一。
  • 浏览器扩展或插件:有一些浏览器扩展或插件专门设计用于保护用户的隐私,可以阻止WebRTC泄露。例如,WebRTC Network Limiter、WebRTC Control、WebRTC Leak Prevent等插件可以帮助你更好地控制WebRTC。
  • 选择更好的代理服务器或VPN:从上面我们可以知道,有些代理服务器或者VPN并不能阻止WebRTC的泄露,所以,再挑选这类服务的时候,请务必使用BrowserScan检查是否有WebRTC泄露的情况。
  • 使用指纹浏览器(最佳):指纹浏览器在保护隐私方面是绝佳利器,市面上几乎所有的指纹浏览器都支持对WebRTC功能进行修改。这可以让第三方网站完全获取不到您的IP地址,即使能获取IP地址也是代理IP地址,并不会是真正的IP地址。有时候,替换比禁用更加拟真,这回让网站认为您是一个普通的用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值