В браузерах на основе Chromium и Firefox реализована поддержка технологии WebRTC для аудио- и видеочатов прямо из окна браузера. Кроме удобства, эта функция имеет неприятный побочный эффект.
В частности, WebRTC допускает отправку запросов к STUN-серверам, которые возвращают локальный и публичный IP-адрес пользователя. Такие запросы можно осуществлять скриптом, поэтому IP-адреса отображаются средствами JavaScript.
Запросы отправляются в обход стандартной процедуры XMLHttpRequest и не видны из консоли разработчика, их нельзя заблокировать плагинами вроде AdBlockPlus или Ghostery. Таким образом, эти запросы могут использовать, например, рекламодатели, для скрытного отслеживания пользователей.
На этой демо-странице ты увидишь свой собственный локальный и внешний IP.
Такой код работает в Firefox и Chrome. Его можно скопировать в консоль разработчика для тестирования.
//get the IP addresses associated with an account
function getIPs(callback){
var ip_dups = {};
//compatibility for firefox and chrome
var RTCPeerConnection = window.RTCPeerConnection
|| window.mozRTCPeerConnection
|| window.webkitRTCPeerConnection;
var mediaConstraints = {
optional: [{RtpDataChannels: true}]
};
//firefox already has a default stun server in about:config
// media.peerconnection.default_iceservers =
// [{"url": "stun:stun.services.mozilla.com"}]
var servers = undefined;
//add same stun server for chrome
if(window.webkitRTCPeerConnection)
servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
//construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints);
//listen for candidate events
pc.onicecandidate = function(ice){
//skip non-candidate events
if(ice.candidate){
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
};
//create a bogus data channel
pc.createDataChannel("");
//create an offer sdp
pc.createOffer(function(result){
//trigger the stun server request
pc.setLocalDescription(result, function(){}, function(){});
}, function(){});
}
//Test: Print the IP addresses into the console
getIPs(function(ip){console.log(ip);});
Единственные расширения, которые блокируют такие запросы, — это расширения, полностью запрещающие выполнение скриптов, как NoScript для Firefox. Разумеется, в настройках браузера тоже есть опция, чтобы запретить скрипты.
29.01.2015 в 15:14
а то, что mozilla thunderbird светит и локальным ip исходящих писем, это никого уже не смущает?
29.01.2015 в 15:24
А то, что скайп светит локальным ip никого не смущает?
30.01.2015 в 00:06
ссылку пож. на пруфф.
Или вы Имеете ввиду старые версии скайпа где в логах светиться айпишник?
29.01.2015 в 15:42
То то я думаю как они умудряются сканировать порты на машине за роутером
30.01.2015 в 00:04
бррррр что то дикое ты написал.
Из известных мне способов пробить NAT может только IRC клиент и то если пользователь сам зайдет по ссылке.(если память не изменяет. IRC открывает порт и поддерживает его в открытом состоянии)
А пробить NAT …. хм. пруф пож.
03.02.2015 в 22:00
чувак, гугли по теме NAT traversal, многое узнаешь
04.02.2015 в 22:15
Друг. прости. Но не нашёл информации подходящие под данную тему.
06.02.2015 в 19:20
NAT легко пробивается с еще и помощью STUN/TURN серверов,между прочим
08.02.2015 в 20:30
Может мы друг друга не до поняли.
Я имел ввиду пробить NAT из интернета. когда у тебя нет доступа во внутреннюю сеть.
30.01.2015 в 23:21
Так сам роутер порты и сканирует. Или посылает что-нибудт вроде unwanted arp или широковещательные сообщения netbios, например.
29.01.2015 в 17:00
А на кой скрин хромой Оперы прикрутили? В «православной» 12.х эта хрень не работает, да, по большому счёту, и не нужна, ибо зло.
30.01.2015 в 01:38
Есть так рассуждать, то в файрфоксе media.peerconnection.enabled = false
29.01.2015 в 18:40
Хакер, у тебя уже была эта новость, год назад наверное.
https://xakep.ru/2014/01/24/61942/
30.01.2015 в 00:05
Разные технологии. Там использовалось HTML5 а тут (а тут я не знаю что).
30.01.2015 в 00:10
Прошу прощения за оффтоп: А кто уже пользовался «WebRTC»? и как им пользоваться буду благодарен за ссылку
30.01.2015 в 01:03
Клик правой кнопкой по панели, вытащи кнопку видеочата. Кликни по ней, появится ссылка, открой её в другом Firefox и между ними установится видеосвязь.
Что хочу сказать по теме. Анонимность вы получите только с прокси. Так что светится ваш локальный IP или нет — неважно.
02.02.2015 в 22:36
Локальный — не важно. Но там есть такая штука- публичный ип. прокси или впн стоит- не важно, отдаёт реальный айпишник.
ПС: это не баг, это фича
30.01.2015 в 01:37
> в настройках браузерах