Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумБраузеры и профили

WebRTC: как проверить своими руками

proxy_hands
proxy_hands
Знаток
сообщений 1405
с мая
8 февраля, 11:37первое сообщение

Каждый второй спрашивает, течёт ли у него WebRTC, и бежит на сайты проверки. Сайты эти показывают что-то своё и объясняют мало.

Покажу, как посмотреть руками, без посредников. Открываете консоль на любой странице своего профиля и запускаете:

const pc = new RTCPeerConnection({iceServers:[{urls:'stun:stun.example.net:3478'}]});
pc.onicecandidate = e => e.candidate && console.log(e.candidate.candidate);
pc.createDataChannel('x');
pc.createOffer().then(o => pc.setLocalDescription(o));

Дальше читаете кандидатов, которые посыплются в консоль.

tcpdump_fan
tcpdump_fan
Знаток
сообщений 1010
с июн
15 июля, 14:54#2

Правильный подход. Добавлю, что именно читать в строке кандидата, иначе она выглядит абракадаброй.

Строка приходит примерно такая: candidate:842163049 1 udp 1677729535 10.8.0.14 54321 typ srflx raddr 0.0.0.0 rport 0

Смотреть надо на слово после typ. Значение host это адрес сетевого интерфейса самой машины. srflx это то, каким тебя видит внешний мир, эту строку возвращает STUN. relay идёт через TURN и встречается редко.

Утечкой считают один случай: когда srflx расходится с точкой, через которую ты работаешь. Локальные host вида 10.x и 192.168.x пугают новичков, хотя за пределы сети они ничего не рассказывают.

слушаю провод, а не догадки
proxy_hands
proxy_hands
Знаток
сообщений 1405
с мая
22 декабря, 17:11#3
tcpdump_fan: смотреть надо на слово после typ

Именно так. Добавлю ещё, что в Chrome локальные кандидаты давно приходят в виде mDNS, что-то вроде a1b2c3d4-e5f6.local. Настоящего адреса интерфейса там нет, и пугаться этой строки незачем.

Полина Ждан
Полина Ждан
Новичок
сообщений 120
с мая, второй сезон
1 мая, 08:28#4

у меня в выводе вообще пусто, ни одной строки. это хорошо или я что-то сломал

netmon
netmon
Знаток
сообщений 1350
с мая
8 октября, 11:45#5

Полина Ждан, пусто бывает по двум причинам. Либо WebRTC выключен совсем, в антидетекте под это отдельный переключатель, либо страница открыта по http и браузер режет доступ.

Проверьте быстро:

console.log(typeof RTCPeerConnection);

Пришло undefined, значит выключен. Пришло function, а кандидатов нет, смотрите протокол страницы в адресной строке.

Полина Ждан
Полина Ждан
Новичок
сообщений 120
с мая, второй сезон
15 марта, 14:02#6

function, и страница по http. спасибо, перепроверю на https

netmon
netmon
Знаток
сообщений 1350
с мая
22 августа, 17:19#7

Раз тема живая, опишу порядок, которым сам проверяю профиль перед работой. Он короткий и ловит почти всё.

Сначала смотрю, каким меня видит обычный запрос: беру свой же обработчик, печатающий адрес обращения и заголовки. Потом в том же профиле гоняю кандидатов ICE и сверяю srflx с этим адресом. Дальше проверяю имена: в антидетекте бывает, что резолв уходит мимо порта, и это заметно по журналу локального резолвера. Последним смотрю пояс и язык, потому что разъезд там встречается чаще любой утечки WebRTC.

сверка двух источников
сверка двух источников

Совпало, значит профиль ходит одной дорогой. Разошлось, значит где-то остался прямой выход.

byteflow
byteflow
Новичок
сообщений 225
с фев, второй сезон
1 января, 08:36#8

Про имена хорошее замечание. У меня как раз резолв уходил напрямую, пока трафик шёл через порт. Лечится ключом --socks5-hostname вместо --socks5, в браузере тем же переключателем «удалённый DNS».

proxy_hands
proxy_hands
Знаток
сообщений 1405
с мая
8 июня, 11:53#9

Соберу итог, чтобы дальше не пересказывали.

  • кандидатов смотреть руками в консоли, сторонние проверялки для этого не нужны
  • утечка это расхождение srflx с рабочим адресом
  • строки .local в Chrome нормальны
  • пустой вывод на http это поведение браузера, утечки тут нет
  • имена резолвить через тот же порт, что и трафик

Полина Ждан, отпишись потом, что вышло на https.