Проект WebRTC создан Google для передачи потоковых данных (аудио и видео) преимущественно прямо между браузерами пользователей (p2p-соединения), без участия сторонних программ (например, Skype) или плагинов. Это подразумевает не просто доступ браузера с поддержкой WebRTC к сетевой среде (независимо от используемой операционной системы), а возможность определения публичного и локального IP-адреса посредством протокола STUN для установки p2p-соединения в обход всех видов NAT.
На данный момент известно, что по умолчанию WebRTC включён в браузерах Chrome (с версии 23), Firefox (с версии 22) и Opera (с версии 18), что в общем случае сводит на нет все способы анонимизации для пользователей этих браузеров. Чтобы нельзя было через WebRTC определить ваш публичный и локальный IP-адрес, нужно, как это ни странно, отключить его поддержку.
Отключение WebRTC в Firefox:
- В адресной строке набрать about:config и нажать Enter
- В строке Поиск ввести "media.peerconnection.enabled" и выполнить двойной клик по найденной строке, выставив тем самым поле Значение в "false".
- На данный момент неизвестен способ отключения WebRTC средствами самих браузеров, а альтернативные решения в виде расширений мы советовать не можем (ищите и устанавливайте их на свой страх и риск), поскольку их эффективность оставляет желать лучшего. Поэтому, видимо, остаётся только посоветовать не пользоваться этими браузерами, пока разработчики не реализуют возможность отключения средствами самих браузеров (по аналогии с Firefox).
- В последних версиях браузера Chrome для Android невозможно отключить WebRTC, хотя такая опция есть в настройках.
- Если вам нужно использовать браузер с отключенным WebRTC на Android, мы рекомендуем использовать Firefox для Android . На нем вы можете отключить WebRTC по той же самой инструкции для Firefox, которая есть выше.
WebRTC (Web Real Time Communications) — это стандарт, который описывает передачу потоковых аудиоданных, видеоданных и контента от браузера и к браузеру в режиме реального времени без установки плагинов или иных расширений. Стандарт позволяет превратить браузер в оконечный терминал видеоконференцсвязи, достаточно просто открыть веб-страницу, чтобы начать общение.
Что такое WebRTC?
В этой статье мы рассмотрим все, что необходимо знать о технологии WebRTC для обычного пользователя. Рассмотрим преимущества и недостатки проекта, раскроем некоторые секреты, расскажем как работает, где и для чего применяется WebRTC.
Что нужно знать про WebRTC?
Эволюция стандартов и технологий видеосвязи
Сергей Юцайтис, Cisco, Видео+Конференция 2016Как работает WebRTC
На стороне клиента
- Пользователь открывает страницу, содержащую HTML5 тег
- Браузер запрашивает доступ к веб-камере и микрофону пользователя.
- JavaScript код на странице пользователя контролирует параметры соединения (IP-адреса и порты сервера WebRTC или других WebRTC клиентов) для обхода NAT и Firewall.
- При получении информации о собеседнике или о потоке со смикшированной на сервере конференцией, браузер начинает согласование используемых аудио и видео кодеков.
- Начинается процесс кодирования и передача потоковых данных между WebRTC клиентами (в нашем случае, между браузером и сервером).
На стороне WebRTC сервера
Для обмена данными между двумя участниками видеосервер не требуется, но если нужно объединить в одной конференции несколько участников, сервер необходим.
Видеосервер будет получать медиа-трафик с различных источников, преобразовывать его и отправлять пользователям, которые в качестве терминала используют WebRTC.
Также WebRTC сервер будет получать медиа-трафик от WebRTC пиров и передавать его участникам конференции, которые используют приложения для настольных компьютеров или мобильных устройств, в случае наличия таковых.
Преимущества стандарта
- Не требуется установка ПО.
- Очень высокое качество связи, благодаря:
- Использованию современных видео (VP8, H.264) и аудиокодеков (Opus).
- Автоматическое подстраивание качества потока под условия соединения.
- Встроенная система эхо- и шумоподавления.
- Автоматическая регулировка уровня чувствительности микрофонов участников (АРУ).
- Высокий уровень безопасности: все соединения защищены и зашифрованы согласно протоколам TLS и SRTP.
- Есть встроенный механизм захвата контента, например, рабочего стола.
- Возможность реализации любого интерфейса управления на основе HTML5 и JavaScript.
- Возможность интеграции интерфейса с любыми back-end системами с помощью WebSockets.
- Проект с открытым исходным кодом — можно внедрить в свой продукт или сервис.
- Настоящая кросс-платформенность: одно и то же WebRTC приложение будет одинаково хорошо работать на любой операционной системе, десктопной или мобильной, при условии, что браузер поддерживает WebRTC. Это значительно экономит ресурсы на разработку ПО.
Недостатки стандарта
- Для организации групповых аудио и видеоконференций требуется сервер ВКС, который бы микшировал видео и звук от участников, т.к. браузер не умеет синхронизировать несколько входящих потоков между собой.
- Все WebRTC решения несовместимы между собой, т.к. стандарт описывает лишь способы передачи видео и звука, оставляя реализацию способов адресации абонентов, отслеживания их доступности, обмена сообщениями и файлами, планирования и прочего за вендором.
- Другими словами вы не сможете позвонить из WebRTC приложения одного разработчика в WebRTC приложение другого разработчика.
- Микширование групповых конференций требует больших вычислительных ресурсов, поэтому такой тип видеосвязи требует покупки платной подписки либо инвестирования в свою инфраструктуру, где на каждую конференцию требуется 1 физическое ядро современного процессора.
Секреты WebRTC: как вендоры извлекают пользу из прорывной веб-технологии
Цахи Левент-Леви, Bloggeek.me, Видео+Конференция 2015
WebRTC для рынка ВКС
Увеличение числа ВКС-терминалов
Технология WebRTC оказала сильное влияние на развитие рынка ВКС. После выхода в свет первых браузеров с поддержкой WebRTC в 2013 году потенциальное количество терминалов видеоконференцсвязи по всему миру сразу увеличилось на 1 млрд. устройств. По сути, каждый браузер стал ВКС терминалом, не уступающий своим аппаратным аналогам с точки зрения качетсва связи.
Использование в специализированных решениях
Использование различных JavaScript библиотек и API облачных сервисов с поддержкой WebRTC позволяет легко добавить поддержку видеосвязи в любые веб-проекты. Ранее для передачи данных в реальном времени разработчикам приходилось изучать принципы работы протоколов и использовать наработки других компаний, которые чаще всего требовали дополнительного лицензирования, что увеличивало расходы. Уже сейчас WebRTC активно используется в сервисах вида “Позвонить с сайта”, “Онлайн-чат поддержки”, и т.п.
Ex-пользователям Skype для Linux
В 2014 году Microsoft объявила об прекращении поддержки проекта Skype для Linux, что вызвало большое раздражение у IT-специалистов. Технология WebRTC не привязана к операционной системе, а реализована на уровне браузера, т.е. Linux пользователи смогут увидеть в продуктах и сервисах на основе WebRTC полноценную замену Skype.
Конкуренция с Flash
WebRTC и HTML5 стали смертельным ударом для технологии Flash, которая и так переживала свои далеко не лучшие годы. С 2017 года ведущие браузеры официально перестали поддерживать Flash и технология окончательно исчезла с рынка. Но нужно отдать Flash должное, ведь именно он создал рынок веб-конференций и предложил технические возможности для живого общения в браузерах.
Видеопрезентации WebRTC
Дмитрий Одинцов, TrueConf, Видео+Конференция октябрь 2017
Кодеки в WebRTC
Аудиокодеки
Для сжатия аудио-трафика в WebRTC используются кодеки Opus и G.711.
G.711 — самый старый голосовой кодек с высоким битрейтом (64 kbps), который чаще всего применяется в системах традиционной телефонии. Основным достоинством является минимальная вычислительная нагрузка из-за использования легких алгоритмов сжатия. Кодек отличается низким уровнем компрессии голосовых сигналов и не вносит дополнительной задержки звука во время общения между пользователями.
G.711 поддерживается большим количеством устройств. Системы, в которых используется этот кодек, более легкие в применении, чем те, которые основаны на других аудиокодеках (G.723, G.726, G.728 и т.д.). По качеству G.711 получил оценку 4.2 в тестировании MOS (оценка в пределах 4-5 является самой высокой и означает хорошее качество, аналогичное качеству передачи голосового трафика в ISDN и даже выше).
Opus — это кодек с низкой задержкой кодирования (от 2.5 мс до 60 мс), поддержкой переменного битрейта и высоким уровнем сжатия, что идеально подходит для передачи потокового аудиосигнала в сетях с переменной пропускной способностью. Opus - гибридное решение, сочетающее в себе лучшие характеристики кодеков SILK (компрессия голоса, устранение искажений человеческой речи) и CELT (кодирование аудиоданных). Кодек находится в свободном доступе, разработчикам, которые его используют, не нужно платить отчисления правообладателям. По сравнению с другими аудиокодеками, Opus, несомненно, выигрывает по множеству показателей. Он затмил довольно популярные кодеки с низким битрейтом, такие, как MP3, Vorbis, AAC LC. Opus восстанавливает наиболее приближенную к оригиналу “картину” звука, чем AMR-WB и Speex. За этим кодеком - будущее, именно поэтому создатели технологии WebRTC включили его в обязательный ряд поддерживаемых аудиостандартов.
Видеокодеки
Вопросы выбора видеокодека для WebRTC заняли у разработчиков несколько лет, в итоге решили использовать H.264 и VP8. Практически все современные браузеры поддерживают оба кодека. Серверам видеоконференций для работы с WebRTC достаточно поддержать только один.
VP8 — свободный видеокодек с открытой лицензией, отличается высокой скоростью декодирования видеопотока и повышенной устойчивостью к потере кадров. Кодек универсален, его легко внедрить в аппаратные платформы, поэтому очень часто разработчики систем видеоконференцсвязи используют его в своих продуктах.
Платный видеокодек H.264 стал известен намного раньше своего собрата. Это кодек с высокой степенью сжатия видеопотока при сохранении высокого качества видео. Высокая распространенность этого кодека среди аппаратных систем видеоконференцсвязи предполагает его использование в стандарте WebRTC.
Компании Google и Mozilla активно продвигают кодек VP8, а Microsoft, Apple и Cisco — H.264 (для обеспечения совместимости с традиционными системами видеоконференцсвязи). И вот тут возникакет очень большая проблема для разработчиков облачных WebRTC решений, ведь если в конференции все участники используют один браузер, то конференцию достаточно микшировать один раз одним кодеком, а если браузеры разные и среди них есть Safari / Edge, то конференцию придётся кодировать два раза разными кодеками, что в два раза повысит системные требования к медиа-серверу и как следствие, стоимость подписок на WebRTC сервисы.
WebRTC API
Технология WebRTC базируется на трех основных API:
- (отвечает за принятие веб-браузером аудио и видеосигнала от камер или рабочего стола пользователя).
- RTCPeerConnection (отвечает за соединение между браузерами для “обмена” полученными от камеры, микрофона и рабочего стола, медиаданными. Также в “обязанности” этого API входит обработка сигнала (очистка его от посторонних шумов, регулировка громкости микрофона) и контроль над используемыми аудио и видеокодеками).
- RTCData Channel (обеспечивает двустороннюю передачу данных через установленное соединение).
Прежде чем получить доступ к микрофону и камере пользователя, браузер запрашивает на это разрешение. В Google Chrome можно заранее настроить доступ в разделе “Настройки”, в Opera и Firefox выбор устройств осуществляется непосредственно в момент получения доступа, из выпадающего списка. Запрос на разрешение будет появляться всегда при использовании протокола HTTP и однократно, если использовать HTTPS:
RTCPeerConnection . Каждый браузер, участвующий в WebRTC конференции, должен иметь доступ к данному объекту. Благодаря использованию RTCPeerConnection медиаданные от одного браузера к другому могут проходить даже через NAT и сетевые экраны. Для успешной передачи медиапотоков участники должны обменяться следующими данными с помощью транспорта, например, веб-сокетов:
- участник-инициатор направляет второму участнику Offer-SDP (структура данных, с характеристиками медиапотока, которые он будет передавать);
- второй участник формирует “ответ” — Answer-SDP и пересылает его инициатору;
- затем между участниками организуется обмен ICE-кандидатами, если таковые обнаружены (если участники находятся за NAT или сетевыми экранами).
После успешного завершения данного обмена между участниками организуется непосредственно передача медиапотоков (аудио и видео).
RTCData Channel . Поддержка протокола Data Channel появилась в браузерах сравнительно недавно, поэтому данный API можно рассматривать исключительно в случаях использования WebRTC в браузерах Mozilla Firefox 22+ и Google Chrome 26+. С его помощью участники могут обмениваться текстовыми сообщениями в браузере.
Подключение по WebRTC
Поддерживаемые десктопные браузеры
- Google Chrome (17+) и все браузеры на основе движка Chromium;
- Mozilla FireFox (18+);
- Opera (12+);
- Safari (11+);
Поддерживаемые мобильные браузеры для Android
- Google Chrome (28+);
- Mozilla Firefox (24+);
- Opera Mobile (12+);
- Safari (11+).
WebRTC, Microsoft и Internet Explorer
Очень долго Microsoft хранила молчание по поводу поддержки WebRTC в Internet Explorer и в своём новым браузере Edge. Ребята из Редмонда не очень любят давать в руки пользователей технологии, которые они не контролируют, вот такая вот политика. Но постепенно дело сдвинулось с мёртвой точки, т.к. игнорировать WebRTC далее было уже нельзя, и был анонсирован проект ORTC, производный от стандарта WebRTC.
По словам разработчиков ORTC — это расширение стандарта WebRTC с улучшенным набором API на основе JavaScript и HTML5, что в переводе на обычный язык означает, что всё будет то же самое, только контролировать стандарт и его развитие будет Microsoft, а не Google. Набор кодеков расширен поддержкой H.264 и некоторым аудиокодеками серии G.7ХХ, используемыми в телефонии и аппаратных ВКС системах. Возможно появится встроенная поддержка RDP (для передачи контента) и обмена сообщениями. Кстати, пользователям Internet Explorer не повезло, поддержка ORTC будет только в Edge. Ну и, естественно, такой набор протоколов и кодеков малой кровью стыкуется со Skype for Business, что открывает для WebRTC ещё больше бизнес применений.
Определяем, что же такое WebRTC
WebRTC , что переводится с английского как «коммуникации в реальном времени в Интернете » (Web real-time communications), обозначает технологию обмена данных между браузерами и другими приложениями по технологии пиринга, она же «точка-точка». Два браузера двух пользователей могут общаться друг с другом напрямую, минуя любые центральные серверы. WebRTC входит в рекомендации консорциума W3C и поддерживается всеми основными браузерами, включая Chrome, Firefox и Opera.
Что делает WebRTC
С одной стороны, WebRTC полезен. С его помощью можно реализовать сервисы голосовой и видеосвязи типа Skype, при которой два абонента будут соединяться напрямую. В WebRTC используются современные аудио- и видеокодеки (G711, OPUS, VP8). Сторонние разработчики могут создавать любые собственные приложения на базе WebRTC. На этой технологии есть чаты и другие полезные приложения.
Проблема с WebRTC
Вместе с тем WebRTC – большая головная боль для всех, кто хочет обеспечить анонимность и безопасность при работе в сети. Главная проблема в том, что WebRTC очень легко и быстро раскрывает реальный IP-адрес пользователя, от чего не защищают ни прокси, ни VPN, ни Tor, ни популярные плагины типа Ghostery. Для организации аудио- или видеосвязи с помощью WebRTC два компьютера должны обменяться между собой не только публичным, но и Этот процесс реализован настолько открыто и прямолинейно, что запросить адрес можно с помощью простого скрипта на JavaScript. Результат – настоящая дыра в безопасности системы, закрыть которую можно только путем полного отключения WebRTC.
Причины отключить WebRTC
У WebRTC есть и другие проблемы. Он позволяет повысить узнаваемость браузера веб-сайтами, что помогает им отслеживать конкретных пользователей Всемирной паутины (так называемая технология fingerprints – «отпечатки пальцев»). Чем больше отдельно взятый браузер отличается по своим настройкам и поведению от браузеров других пользователей, тем выше его узнаваемость, или уникальность. Это позволяет сайтам идентифицировать пользователей и отслеживать их поведение в Интернете, причем без всяких cookies.
WebRTC снижает эффективность , которыми пользуются для обеспечения анонимности и безопасности. WebRTC позволяет узнать IP-адрес пользователя даже в случае, если он использует VPN и тем более прокси-сервер. Вы сами можете легко это проверить: если у вас есть VPN-доступ , активируйте его и затем зайдите на Whoer.net . Здесь есть специальный параметр WebRTC для определения своего IP-адреса. Как видите, он легко обнаруживается.
Как отключить WebRTC в Firefox:
Конечно, WebRTC не вирус и бояться его как огня не стоит. Но если вы решили серьезно взяться за свою анонимность или безопасность, отключение WebRTC в браузере – одна из главных рекомендаций. Проще всего это сделать в Firefox. Откройте скрытые настройки браузера путем ввода команды about:config в адресной строке:
Теперь найдите в списке параметр media.peerconnection.enabled. Отключите его, выставив значение false .
Посмотрите, как всего за 2,5 минуты отключить WebRTC в Mozilla Firefox — от whoer.net:
Как отключить WebRTC в Chrome:
С этим браузером все немного сложнее. Собственно, WebRTC можно было отключить путем установки плагина WebRTC Block, но в данный момент он не представлен больше для скачивания. Рекомендуется использовать другой браузер.
Поэтому для полноценной безопасности рекомендуется использовать Firefox, в котором реализовано полноценное отключение WebRTC средствами самого браузера. При этом можно дополнительно установить плагин NoScript , блокирующий исполнение всех скриптов в браузере (существует и для Chrome).
Посмотрите, как всего за 2,5 минуты отключить WebRTC в Google Chrome — от whoer.net:
Как отключить WebRTC в Яндекс.Браузер:
Алгоритм отключения WebRTC в Яндекс.Браузере такой же, как и у Chrome, так как он основан на Chromium и имеет общий с Chrome код.
Посмотрите, как всего за 2,5 минуты отключить WebRTC в Yandex — от whoer.net:
Как отключить WebRTC в Opera:
Что касается Opera , к сожалению, на данный момент неизвестны надежные способы отключения WebRTC в этом браузере. Видимо, наиболее действенным советом будет просто прекратить пользоваться браузерами, родственными Chrome, а также Opera.
Посмотрите, как всего за 2,5 минуты отключить WebRTC в Opera — от whoer.net:
Виртуальная машина и VPN | Полная сетевая анонимность"
Почему бесплатные VPN, прокси и анонимайзеры – плохой выбор"
Обзор анонимных операционных систем"
Промокод со скидкой на VPN Whoer.net"
Если пользователь недостаточно внимателен, то может не заметить, что веб-страница с WebRTC кодом внутри получила доступ к его камере и микрофону. Этим, естественно, могут воспользоваться злоумышленники, ведь интернет большой и чего там только нет. Чтобы лишний раз не переживать за сохранность своей личной жизни, WebRTC в браузере можно отключить. Помните, что полное отключение поддержки WebRTC может привести к некорректной работе решений, которые используют эту технологию.
Chrome, Opera, Яндекс.Браузер
На данный момент, нет безопасного способа отключить WebRTC в этих браузерах для настольных компьютеров и ноутбуков.
Мобильные устройства
Firefox на Android
WebRTC отключается вручную аналогично с настольной версией:
- В адресной строке браузера введите about:config
- Нажмите кнопку «Я обещаю, что буду осторожен!»
- Найдите строку «media.peerconnection.enabled»
- Двойным кликом измените значение на “false”
Chrome на Android
- Откройте браузер
- Нажмите «Enable»
Яндекс.Браузер на Android
- Откройте браузер
- В адресную строку введите: chrome://flags/#disable-webrtc
- Нажмите «Enable»
- Закройте приложение или перезагрузите устройство
На данный момент, нет безопасного способа отключить WebRTC в Opera для Android.
Протокол WebRTC изначально разрабатывался для браузера Google Chrome. Соответственно, он используется в нём по умолчанию. Для тех, кто не в курсе, WebRTC - это специальная технология для прямой передачи данных между браузерами. Она вызывает утечку вашего IP адреса, поэтому многие пользователи отключают её, чтобы обеспечить себе безопасность.
Чтобы отключить WebRTC в Chrome, нужно использовать специальное расширение WebRTC control для Chrome. Оно позволит включать и выключать технологию нажатием одной кнопки.
Чтобы сделать это нужно:
- Запустить Google Chrome.
- Открыть меню браузера, находящееся в правом верхнем углу.
- Навести курсор на “Дополнительные инструменты и выбрать пункт “Расширения.”
- Откроется страница с вашими расширениями. Пролистываем страницу вниз и нажимаем на ссылку “Ещё расширения.”
- Вас перебросит в интернет магазин Google Chrome. В строке поиска, в левом верхнем углу экрана, вводим название приложения “WebRTC control” и нажимаем Enter.
- В списке приложений выбираем нужное и нажимаем “Установить.”
- Во всплывающем окне нажимаем на кнопку “Установить расширение.”
- Приложение автоматически установится и будет включено. Оно будет отображено в виде значка на панели расширений в правом верхнем углу. Если приложение работает - его значок будет синего цвета. Включить и отключить WevRTC можно нажатием на этот значок.
К сожалению, WebRTC в Chrome нельзя отключить вручную по крайней мере в ПК версии, поэтому вам в любом случае придётся использовать стороннее расширение.
Отключение WebRTC на Android
Ещё проще отключить WebRTC в Chrome на Android устройствах. Для этого вам даже не потребуется использовать плагин.
- Открыть браузер.
- В адресную строку ввести команду “chrome://flags/#disable-webrtc” (без кавычек).
- После этого устанавливаем значение “Enable”.
- На это всё, WebRTC на Android версии Chrome будет отключён.
Как видите, отключить WebRTC несложно как на компьютерной версии браузера, так и на мобильной. Лучше всего не пожалеть времени и сделать это единожды, чтобы не испытывать проблем с безопасностью и утечкой вашего IP адреса. Надеемся, эта инструкция вам помогла и оказалась полезной. Спасибо за внимание!
Если вам всё же непонятно, то смотрите видео, в котором мы расскажем как отключить WebRTC dj всех браузерах.