Перейти к содержимому

Camera extensions proxy что это

  • автор:

Настройка прокси в расширении ProxyControl

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

ProxyControl — идеальное решение для настройки прокси в браузерах Google Chrome, Yandex Browser, Opera Browser и Firefox. Расширение поддерживает интеграцию с нашим сервисом, что позволяет настроить прокси в один клик, а также удобно работать со всем списком ваших прокси.

Мы учли все проблемы текущих браузерных расширений, их минусы, плюсы и функционал, но обо всем по порядку.

Установка расширения ProxyControl

Установить расширение для Google Chrome и Yandex Browser можно из официального магазина расширений Chrome по ссылке или кнопке ниже либо по запросу ProxyControl.

Для установки нужно в интернет-магазине Chrome просто нажать «Установить» и затем еще раз «Установить расширение».

В Opera Browser установка займет немного больше времени, так как нужно будет установить промежуточное расширение Install Chrome Extensions для установки расширения ProxyControl с магазина расширений Chrome.

Чтобы установить расширение в Firefox, перейдите в магазин расширений браузера с помощью сочетания клавиш CTRL+SHIFT+A и введите в поиске «ProxyControl». В результатах поиска выберите наше расширение, кликните по нему и нажмите «Добавить в Firefox».

proxycontrol firefox

Настройка прокси в расширении

Расширение поддерживает настройку прокси как без авторизации, так и с авторизацией (логин и пароль), но ввиду отсутствия возможности со стороны браузера указать логин и пароль для прокси по протоколу SOCKS5 прокси в нашем расширении можно настроить только по протоколу HTTP(S), а для работы с прокси по протоколу SOCKS5 мы рекомендуем использовать специализированный софт, к примеру, Proxifier.

Настройка в один клик

Если с обычной настройкой все понятно, то где же обещанная настройка прокси в один клик? Она находится чуть ниже и называется «Добавить прокси по API-ключу». API-ключ от прокси можно взять в нашем личном кабинете во вкладке «Ключи API» — там есть как общий ключ для всех прокси, так и отдельные ключи от заказов, что позволяет решить многие проблемы со структурированием и организацией работы с большим количеством прокси.

Итак, ключ нужно скопировать, вставить в поле и выбрать либо конкретный прокси со списка вашего заказа или аккаунта, либо добавить все прокси в общий список и уже после выбирать необходимый прокси из него.

Список прокси вместо профилей

В нашем продукте мы ушли от привычных профилей и заменили его обычным списком прокси, с которым работать гораздо удобнее. По необходимости удаляйте лишние и повторяющиеся прокси и в один клик выбирайте необходимый прокси. В ближайшем обновлении появится возможность делать пометки для тех или иных прокси, а также удобный поиск по списку прокси.

Дополнительные настройки

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

Поддержка расширения

Расширение активно дорабатывается силами нашей команды, поэтому если у вас есть какие-то идеи или предложения — будем рады их выслушать, а также воплотить в реальность. Отправить их можно на почту proxycontrol@proxys.io. Туда же можно обратиться, если у вас возникли какие-то проблемы с использованием расширения или необходима помощь. В общем — ждем любую обратную связь.

Прокси для расширения

К расширению по настройке прокси нужны качественные прокси и если вы читаете эту статью, то вы по адресу, так как мы рады представить линейку тарифов с лучшими приватными прокси на российском рынке — от дата-центровых до резидентских адресов с индивидуальным подбором прокси под каждого клиента. Наша техническая поддержка работает 24/7, поэтому пишите в любое время суток — наши специалисты всегда на связи и готовы помочь вам с подбором и настройкой прокси.

Видеоинструкция по настройке

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

Camera extensions proxy что это

1 Поддерживаемые версии браузеров

Версии браузеров для ПК:

  • Chrome 72+ (Windows 7+, macOS 10.12+, Linux)
  • Яндекс.Браузер 19.3+ (Windows 7+, macOS 10.12+, Linux)
  • Opera 59+ (Windows 7+, macOS 10.12+, Linux)
  • Firefox 66+ (Windows 7+, macOS 10.12+, Linux)
  • Edge 79+ (Windows 7+)

Версии браузеров для мобильных:

  • Chrome 72+ (Android 4.4+)
  • Safari (iOS 12+)

2 Проверка компьютера на совместимость

Страница проверки компьютера: https://proctoredu.ru/check
Рекомендуется выполнить проверку компьютера перед началом мероприятия, чтобы иметь возможность выполнить необходимые настройки компьютера заранее. В случае успешной проверки выводится соответствующее сообщение.

3 Доступ к камере и микрофону

Страница для проверки веб-камеры в браузере:

  • https://webcammictest.com/ru/
  • https://ru.webcamtests.com

Страница для проверки микрофона в браузере:

3.1 В браузере Chrome

При первом запросе разрешения доступа к камере и микрофону нужно ответить «Разрешить».


Если к компьютеру подключено несколько камер:
1) Кликнуть на значок камеры в правой части строки адреса и зайти в настройки по кнопке «Настроить» (Windows и Linux) или кнопке «Управление настройками мультимедийных устройств» (MacOS)

2) В настройках выбрать пункт «Камера»

3) В выпадающем списке выбрать другую камеру

После изменения настроек нужно обновить страницу тестирования.
Если подключено несколько микрофонов, то нужно выполнить аналогичные шаги для пункта «Микрофон».
Если доступ был заблокирован:
1) Кликнуть на значок камеры в правой части строки адреса и зайти в настройки по кнопке «Настроить» (Windows и Linux) или кнопке «Управление настройками мультимедийных устройств» (MacOS)

2) Удалить из списка заблокированных сайтов https://*.proctoring.online:443

3) Обновить страницу и на запрос доступа ответить «Разрешить»

Другой способ разрешить доступ к камере и микрофону, это нажать на значок замка в строке адреса и напротив пунктов «Камера» и «Микрофон» выбрать «Разрешить».

3.2 В браузере Firefox

При первом запросе разрешения доступа к камере и микрофону нужно ответить «Разрешить» («Allow»). Чтобы не было повторных запросов, можно установить галочку «Запомнить решение» («Remember this decision»). Если доступ был запрещен, необходимо перезагрузить страницу и дать разрешение снова.

4 Доступ к экрану

4.1 В браузере Chrome

Разрешить доступ к экрану на компьютере в браузере Chrome можно тремя способами:

  1. В версии Chrome 72+ доступ к экрану запрашивается автоматически, никаких дополнительных действий не требуется;
  2. В более старых версиях Chrome требуется установить расширение браузера Supervisor;
  3. Вместо расширения можно разрешить доступ к экрану специальным флагом, который нужно указать как аргумент при запуске файла «chrome.exe»: —enable-usermedia-screen-capturing

Нужно предоставить доступ ко всему экрану

и после этого доступ нельзя закрывать

4.2 В браузере Firefox

Разрешить доступ к экрану на компьютере в браузере Firefox можно двумя способами:

  • В версии Firefox 66+ доступ к экрану запрашивается автоматически, никаких дополнительных действий не требуется;
  • В более старых версиях Firefox требуется установить расширение браузера Supervisor;

Нужно предоставить доступ ко всему экрану. Для этого во всплывающем окне в поле выбора окна или экрана нужно выбрать «Весь экран» («Entire screen»):

А затем нажать «Разрешить» («Allow») не выбирая галку «Запомнить решение» («Remember this decision»):

5 Проверка на совместимость с технологией WebRTC

Для корректной работы онлайн видеонаблюдения требуется, чтобы в сети пользователей были разрешены исходящие подключения на порты:

  • 3478/tcp
  • 3478/udp
  • 49152-65535/udp

Выполнить проверку WebRTC можно на странице WebRTC Troubleshooter . Для запуска проверки нужно просто нажать кнопку «START». Если проблем не обнаружено, то все пункты должны быть зеленые или желтые.

6 Нет доступа к веб-камере или черный квадрат вместо видео

Если отображается картинка с перечеркнутой камерой, черный прямоугольник или индикатор загрузки, то это означает, что браузер не может получать доступ к камере или камера работает неправильно. Причиной могут быть проблемы с веб-камерой, драйвером камеры или доступом к камере из браузера, если в операционной системе камера используется другим приложением (например, в Skype или в другом браузере) или доступ к камере блокируется антивирусом (ESET — статическая картинка со значком перечеркнутом камеры, Kaspersky — черный экран). Нужно закрыть все приложения, которые могут работать с камерой, отключить антивирус (или защиту камеры в нем) и обновить текущую вкладку в браузере. Можно попробовать перезагрузить компьютер.
Пример блокировки антивирусом ESET:

В Яндекс.Браузере для корректной работы прокторинга нужно отключать режим «Турбо», иначе он блокирует видео с камеры:

Если ничего не помогло, можно попробовать сбросить настройки Chrome, открыв страницу «chrome://settings/resetProfileSettings» и подтвердив действие.

7 Нет доступа к экрану на macOS «Catalina»

Начиная с macOS «Catalina» 10.15 для доступа к экрану браузера нужно выдать дополнительное разрешение в настройках системы. Для этого перейдите в системные настройки меню «Системные настройки».

Затем выберите «Защита и безопасность» → «Конфиденциальность». В предложенном списке нужно отметить браузер, которому нужно разрешить доступ к записи экрана.

После этого потребуется перезапустить браузер.

8 Не открывается страница теста с прокторингом

В браузере не должны блокироваться cookies сторонних сайтов, в Chrome это делается в настройках «Настройки» → «Дополнительные» → «Настройки сайта» → «Файлы cookie» или можно просто ввести «chrome://settings/content/cookies» в строку адреса. Там должен быть отключен пункт «Блокировать сторонние файлы cookie».

Загрузку страницы могут также блокировать некоторые расширения браузера, например Betternet Unlimited Free VPN Proxy или блокировщик рекламы AdBlock . Следует попробовать отключить все сторонние расширения. В браузере Chrome это можно сделать на странице «chrome://extensions/», которую можно открыть через «Меню» → «Дополнительные инструменты» → «Расширения».
Также станца тестирования может запрещать открывать себя в IFRAME, если в запросе передается заголовок «X-Frame-Options». Можно обойти этот запрет, установив расширение Ignore X-Frame headers .

9 Не запускается прокторинг на iOS Safari

Если разрешено прохождение тестов с прокторингом на мобильных устройствах, но в iOS 12+ Safari прокторинг не запускается (интеграция SDK), то нужно проверить настройки Safari. Для корректной работы прокторинга необходимо отключить опцию «Настройки» → «Safari» → «Конфиденциальность и безопасность» → «Без перекрестн. отслеж.»

10 Появляется ошибка MediaRecorder на iOS Safari

Для корректной работы системы в iOS Safari должна быть включена опция MediaRecorder в разделе «Настройки» → «Safari» → «Дополнения» → «Experimental Features» → «MediaRecorder».

11 Не работает прокрутка (скролл) на iOS Safari

В iOS Safari может не работать скролл внутри элементов IFRAME, когда в Safari включена опция «Async Frame Scrolling». Необходимо отключить эту опцию «Настройки» → «Safari» → «Дополнения» → «Experimental Features» → «Async Frame Scrolling».

12 Отключить уведомления и звонки

Рекомендуется отключать уведомления и входящие звонки при прохождении прокторинга на мобильных устройствах или при подключении мобильной камеры. Для этого нужно выполнить описанные ниже шаги.

12.1 В iOS Safari

Зайти в «Настройки» → «Не беспокоить» → включить «не беспокоить» сверху, Тишина — всегда, Телефон — разрешить звонки от — ни от кого, Убрать флаг в «повторяющиеся звонки».

12.2 В Android Chrome

Зайти в «Настройки» → «Звук» → «Не беспокоить» → «Выключить сейчас».

Выжимаем все соки из WebRTC для стриминга камер на примере go2rtc

Go2rtc — это open source приложение для стриминга видео в реальном времени. Оно весит всего 5 мегабайт, не имеет внешних зависимостей и работает на всех популярных ОС. Поддерживает технологии ​​RTSP, RTMP, DVRIP, HTTP-FLV, WebRTC, MSE, HLS, MJPEG, HomeKit и многие другие. Последний релиз получился настолько масштабным, что все нововведения пришлось оформлять в статью на Хабре.

Введение

Моё знакомство с технологией WebRTC началось в далёком 2020 году с серии стриминговых проектов Андрея @deepch — RTSPtoWebRTC, RTSPtoWSMP4f, RTSPtoWeb.

В апреле 2022-го я начал собирать все идеи для развития в собственном проекте go2rtc, первая альфа-версия вышла в последние дни лета, а первый релиз вышел в конце января 2023-го.

Концепция проекта вышла настолько удачной, что разработчики различных open source проектов начали встраивать go2rtc в свои решения там, где требовался стриминг с камер.

В версии 1.2.0 от февраля 2023-го go2rtc поддерживал передачу потокового видео с камер в браузер в формате WebRTC с задержкой менее 0.5 секунды.

Поддерживались и дополнительные особенности.

1. Синхронное и асинхронное WebRTC-подключение

Сам по себе процесс подключения по технологии WebRTC выглядит очень просто: один из клиентов отправляет offer (пожелания о подключении), второй возвращает ему answer (согласие о подключении). В offer и answer находятся media-элементы с типом (video, audio), направлением (recvonly, sendonly, sendrecv) и перечнем кодеков (H264, VP8, OPUS, PCMA и т.д.).

Например, если браузер хочет только принимать видео и аудио, он может создать offer с двумя media направления recvonly. По умолчанию туда подадут все кодеки, которые браузер поддерживает для видео и аудио.

В теории answer не может быть шире offer, то есть туда нельзя добавлять новые media или новые кодеки. Но можно отказаться от ненужных медиа и неудобных кодеков.

Чтоб подключение могло установиться, участники должны обменяться IP-адресами (candidates). Это можно сделать либо внутри offer/answer (синхронное подключение), либо уже после отправки offer/answer (асинхронное подключение). В список IP-адресов должны попасть адреса всех локальных сетевых интерфейсов и внешние адреса — на случай, если второй участник находится за пределами локальной сети.

В зависимости от настроек сети на компьютере, домашнем роутере, провайдере, да и вообще в стране, поиск списка адресов может затянуться. Потому синхронное подключение будет устанавливаться очень долго. В этом случае выгодно применять асинхронное подключение. Подход также называют Trickle ICE.

Go2rtc поддерживает оба варианта и внутри своих веб-интерфейсов использует именно асинхронный. Но сторонние проекты, например стандартная интеграция Home Assistant, часто умеют только синхронный вариант.

2. Настройка внешнего доступа

Важно понимать, что технология WebRTC в первую очередь нацелена на прямое подключение (peer-to-peer) между двумя участниками соединения. Данные передаются не по HTTP-протоколу. И web/proxy-сервер вроде Nginx участвует только на момент установки соединения.

Для установки прямого подключения между клиентами из разных закрытых сетей используется технология STUN и один из публичных STUN-серверов (в открытых проектах часто используют сервер Google). Такой сервер не участвует в передаче медиаданных, а лишь помогает клиентам установить соединение.

В некоторых случаях, когда клиенты находятся за Symmetric NAT, технология STUN не сработает. Коммерческие проекты в этом случае используют TURN-сервера для проксирования медиа трафика. Бесплатных TURN-серверов нет. Поэтому обычным пользователям приходиться искать другие варианты.

Go2rtc поддерживает несколько вариантов настройки стабильного внешнего доступа:

Если у пользователя статический или динамический публичный (белый) IP-адрес, он может настроить форвардинг специального TCP-порта для передачи медиаданных и добавить свой внешний IP-адрес в качестве кандидата на подключение.

Такой кандидат будет менее приоритетный, чем стандартные UDP-кандидаты. Но если у стандартных кандидатов не удастся подключиться, TCP-кандидат подключится гарантированно.

В случае серого IP-адреса (за NAT-провайдера) можно использовать автоматический туннель сервиса Ngrok. В бесплатном варианте сервис будет постоянно выдавать случайный внешний адрес. Но go2rtc умеет его определять и автоматически добавлять в кандидаты на подключение. Опять же с меньшим приоритетом.

Если у пользователя есть собственный VPS и соответствующие навыки, он может либо поднять свой SSH-туннель и использовать его вместо Ngrok-туннеля, либо установить свой TURN-сервер.

3. Двухсторонняя аудио-связь

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

Сейчас всё больше камер выпускается с динамиком. Часто для этой функции компании используют свои проприетарные протоколы. Но приличные производители недавно начали добавлять обратное аудио по протоколу ONVIF backchannel.

Поскольку технология WebRTC изначально создавалась для двухсторонней аудио- и видеосвязи, поддержка backchannel была лишь вопросом времени.

Один важный момент: для доступа к микрофону современные браузеры требуют наличия HTTPS на сайте.

4. Кодек H265 в браузерах Apple Safari

Похоже, go2rtc — это первый проект в мире, который начал поддерживать этот кодек в настоящем браузере для технологии WebRTC.

Для упаковки HEVC кодека в RTP-пакеты существует стандарт RFC 7798, которым успешно пользуются разработчики современных камер. Но инженеры Apple, как обычно у них принято, проигнорировали мировые стандарты и изобрели свой велосипед.

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

Roborock Vacuum

Сразу после выхода релиза 1.2.0 мне написал один из пользователей с предложением рассмотреть поддержку стриминга видео с пылесосов Roborock и прислал данные своего аккаунта. Это отдельная забавная история, как одни пользователи готовы поделится доступом к мобильной роботизированной камере с двухсторонней аудиосвязью, а другие замазывают локальные IP-адреса в пересылаемых логах.

Спустя сутки весь протокол Roborock был как на ладони:

  1. Для общения с умными устройствами используется обычный MQTT поверх SSL.
  2. Все логины, пароли и топики хешируются.
  3. Для каждого устройства используется один топик для передачи данных и один топик для приёма данных.
  4. Сообщения передаются в формате JSON-RPC и также шифруются ключом устройства.
  5. Для запуска видеопотока можно установить графический пин-код.
  6. Видео передается по современному WebRTC (наконец-то в Китае начинают отказываться от P2P).

Так получилось, что ранее я имел опыт со всеми этими технологиями из перечня:

  1. С шифрованием впервые столкнулся в проекте SonoffLAN. Однажды даже пришлось изучать реализацию AES-CBC на чистом python, потому что процессор Apple M1, работающий на архитектуре ARM в режиме эмуляции x86, выдаёт неправильные результаты шифрования при использовании собранных wheels-библиотек (кто бы мог подумать).
  2. С JSON-RPC и MQTT был опыт в проекте XiaomiGateway3. Довольно популярный протокол MiOT от Xiaomi передаёт сообщения как раз в формате JSON-RPC. А MQTT активно используется последние несколько лет практически во всех шлюзах, разработанных совместно с компанией Lumi.
  3. Первое знакомство с WebRTC началось ещё в 2020 году с проекта RTSP2WebRTC, а затем WebRTC Camera.

Где-то два дня ушло на реализацию Roborock API на языке Go. И ещё полдня на реализацию WebRTC-клиента.

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

Первая проблема была в обмене ICE-кандидатами. Если перестараться с асинхронным подключением WebRTC, кандидаты начнут прилетать ещё до того, как участники инициализируют соединение. Такие кандидаты будут проигнорированы.

Вторая проблема была интереснее. В сообществе разработчиков WebRTC начали замечать, что в некоторых регионах России мифическим образом нарушается процесс установки безопасного DTLS-соединения. Забавно, что первым проблему обнародовал и починил разработчик из Китая.

WebRTC Client

Расположение пылесоса за несколько тысяч километров было как плюсом, так и минусом. Робот постоянно издавал звуковой сигнал о начале видеосвязи. А для тестирования стабильной работы таких подключений приходилось делать очень много. Плюс владелец пылесоса находился в совершенно другом часовом поясе.

В поисках удобных вариантов отладки мне в голову пришла довольно банальная идея — реализовать возможность подключения из одного go2rtc к другому go2rtc по протоколу WebRTC. Тут я решил не изобретать велосипеды и поискать готовые стандарты.

В сообществе разработчиков WebRTC подсказали варианты:

  • WHEP — стандарт для видеоплееров (потребителей медиа);
  • WHIP — стандарт для Broadcaster Software (поставщиков медиа).

К сожалению, стандарты ещё не приняты. Но популярные стриминговые проекты уже начинают их внедрять.

В итоге в go2rtc версии 1.3.0 попали функции:

  1. Возможность забирать поток с стороннего ПО по стандарту WebRTC/WHEP;
  2. Возможность принимать входящий поток с стороннего ПО по стандарту WebRTC/WHIP. Её я тестировал на OBS Studio. К сожалению, ментейнеры проекта не хотят выпускать релиз с этой функцией до принятия WHIP-стандарта. Но благодаря функции автоматической сборки релизов на GitHub уже можно скачать готовую сборку OBS Studio с поддержкой WebRTC.

WebTorrent

В процессе изучения всего вышеописанного я наткнулся на ещё одно ответвление WebRTC. Это технология WebTorrent.

Классические Torrent-трекеры помогают Torrent-клиентам обмениваться своими IP-адресами. После чего участники подключаются друг к другу напрямую для передачи полезной информации.

WebTorrent-трекер работает по той же логике. Только клиентами являются обычные браузеры. Для подключения к трекеру используется протокол WebSocket. Для подключения к другим клиентам используется протокол WebRTC, для передачи данных — RTCDataChannel.

Обмениваться файлами по этому протоколу могут только браузеры и некоторые настольные клиенты с поддержкой WebTorrent. Их ещё называют гибридными клиентами, потому что они, как правило, поддерживают BitTorrent-протокол и могут работать одновременно в обоих сетях.

Так ко мне пришла идея использовать открытые WebTorrent-трекеры для реализации функции внешнего доступа к камерам.

Для доступа к потоку требуется знать логин и пароль. Логин используется, чтоб найти именно вашу камеру среди всех торрентов на трекере. Пароль используется для шифрованного обмена информацией о подключении с сервером go2rtc. Так, чтоб даже владельцы трекера не могли получить к ней доступ.

Клиент для подключения написан в виде небольшой HTML-странички с использованием GitHub Pages. Ссылки на трансляцию выглядят примерно так:

Современные браузеры не отправляют информацию после знака якоря в ссылке, так что логин и пароль не достанутся Гитхабу.

Go2rtc версии 1.3.0 позволяет быстро создавать и удалять случайные ссылки на трансляции. Такие ссылку будут работать до момента перезагрузки go2rtc. При желании можно прописать статические потоки в конфиге вручную.

Но и это ещё не всё. Ведь в новой версии go2rtc появился WebRTC-клиент. А значит, технологию WebTorrent можно использовать не только чтобы отдать поток, но и чтобы забрать удаленный поток назад в go2rtc.

Таким образом можно организовать подключение к камерам в закрытой удаленной сети. Бесплатно и безопасно.

Двухсторонний обмен

Хотя получение видео с пылесоса Roborock было написано всего за неделю, выпуск всего релиза занял немногим более месяца. Модель Roborock S7 MaxV поддерживала двустороннюю аудиосвязь. Никак нельзя было выпускать новый релиз без этой фичи.

Механизм стыковки медиапотоков внутри go2rtc является одной из самых сложных частей ядра проекта.

Когда у вас есть камера, которая только передает данные, тут нет ничего сложного. Вы просто читаете с неё пакеты в цикле и отправляете их тому, кто хочет получать эти данные. Например, браузеру. В этом случае камера является Producer (поставщиком данных), а браузер — Consumer (потребителем данных).

Но когда в камере появляется обратный канал (backchannel по терминологии ONVIF-стандарта) для передачи данных на динамик камеры, всё становится немного запутанней. Теперь браузер становится немного Producer и начинает слать данные с микрофона. А камера становится немного Consumer.

Начиная с версии 1.2.0, в go2rtc появилась функция стримить файлы и онлайн-аудио на устройства с поддержкой two way audio. При таком подключении камера вообще не будет являтся Producer, а будет лишь Consumer (потребителем).

Получается, в любой момент код, отвечающий за протоколы RTSP или WebRTC, может выступать как в роли получателя данных, так и в роли отправителя данных.

А ещё каждый из этих протоколов может быть как активным участником соединения (клиентом), так и пассивным участником соединения (сервером).

А ещё в протоколе RTSP принято указывать лишь одно направление для канала передачи медиа: только на приём — recvonly, только на передачу — sendonly. А вот в WebRTC довольно распространена передача в двух направлениях — sendrecv. Это довольно вредно для работы с камерами, потому что часто встречается, что камера передает звук в одном кодеке, а вот получает звук в другом кодеке.

В итоге при попытке отправить звук из браузера в пылесос на стыке двух подключений WebRTC внутри go2rtc я просто запутался в собственном коде. В результате чего взял паузу в пару недель и переписал ядро проекта.

Раньше за передачу медиаданных отвечал класс Track. Активный участник (producer) отдавал треки функцией GetTrack, а пассивный участник (consumer) подключал их к себе функцией AddTrack. При этом backchannel Track от активного участника не генерировал данные, а настраивался на их получение. Это очень путало и усложняло отладку в многофункциональных модулях вроде RTSP и WebRTC.

В новой версии класс Track был заменён классами Receiver (тот, кто получает данные от поставщика) и Sender (тот, кто отправляет данные потребителю). Функция GetTrack теперь стала создавать только Receiver-ов. Функция AddTrack стала принимать на вход этих Receiver-ов и подключать их к Sender-ам.

Интересный факт. Одного Receiver можно подключить к нескольким Sender. Эта функция активно используется, если у вас бюджетная камера. Они обычно не выдерживают одновременного подключения нескольких потребителей. И в этом случае go2rtc может выступать в роли прокси-балансировщика.

В случае backchannel к одному Sender можно подключить несколько Receiver. Например, если у вас есть активное подключение к камере с включенной двухсторонней связью, камера не даст выполнить второе подключение с включенным backchannel. А вот новая архитектура go2rtc позволяет обойти это ограничение.

Итоги

  • WebRTC можно использовать для стриминга видео с камер с задержкой менее 0.5 секунды.
  • WebRTC можно использовать не только в браузере, но и на серверах и на IoT-устройствах (например, пылесосах).
  • Можно как получать видео по протоколу WHEP, так и отправлять видео по протоколу WHIP.
  • Можно использовать протокол WebTorrent, чтоб расшарить WebRTC-поток, не открывая при этом публичный доступ к своему компьютеру или серверу.
  • Можно использовать протокол WebTorrent, чтоб забрать поток, находящийся в закрытой удалённой сети.
  • Можно превратить любой браузер PC или смартфона в IP-камеру (видеоняня в пару кликов).
  • WebRTC удобно использовать для two way audio связи.
  • В браузере Safari в WebRTC можно использовать кодек H265.

IoT-устройства не обязательно как-то взламывать, паять и прошивать, чтоб использовать их в своих домашних проектах. Все эти интеграции работают с оригинальной заводской прошивкой устройств: Sonoff, Xiaomi, Яндекс, TP-Link, Roborock.

Настройки профиля браузера

Настройки браузерного профиля — это набор параметров, которые настраиваются при создании профиля и на основе которых сайты и сервисы будут получать информацию о вашей системе, формируя fingerprint.

Настройки, генерируемые по умолчанию, подходят для подавляющего большинства пользователей. Все генерируемые параметры отпечатков подобраны для максимальной совместимости, при изменении некоторых параметров (user-agent) может нарушаться целостность. Перед изменением параметров профиля браузера вручную внимательно ознакомьтесь с документацией и выполняйте настройку осознанно.

Каждая сборка Chromium имеет свои особенности. В Octo Browser выдаются отпечатки с максимальной совместимостью. Если вы хотите перенести аккаунт из другого браузера, то:

  • При выборе отпечатка, генерируйте профиль с такой же ОС, с которой переносите аккаунт сервиса (например для Win отпечаток Win)
  • Устанавливайте аппаратные настройки максимально близкие к системе, с которой переносите (cpu / ram / video)
  • В настройках user-agent можете сменить версию ОС, но версию Chrome не рекомендуем менять (например можно заменить Windows 10 на Windows 6.1, для этого Вы должны обладать соответствующими знаниями)
  • Можно устанавливать разрешение экрана и другие особенности системы так же, как в той, с которой переносите аккаунт
  • User-agent должен быть валидным и без лишних знаков или знаков переноса строки (вначале или конце), то есть быть в 1 строку

Версию Chrome крайне желательно использовать по умолчанию. Используемая версия Octium основана на последней версии Chromium.

Основные настройки​

Basic settings

Шаблон — можно выбрать шаблон или указать “Без шаблона”. Если шаблон выбран, настройки профиля будут сформированы исходя из настроек указанного шаблона. Если какой-то из шаблонов “активен”, по умолчанию при создании нового профиля он будет применяться и отображаться в данном поле, где применение шаблона можно отключить или изменить шаблон.

Имя профиля – обязательное поле для заполнения. Вы можете задать имя для профиля, которое будет отображаться в списке.

Описание профиля – дополнительное поле, в котором для удобства пользования можно хранить нужную информацию о профиле.

Иконка профиля – опция, благодаря которой можно выбрать иконку из предустановленных или же загрузить новые иконки, которые будут отображаться в таблице слева от названия профиля для удобства навигации и поиска в таблице.

Количество доступных иконок для загрузки зависит от подписки. Для подписки Starter – 3, для Base – 5, для Team – 10, для Advanced и Custom – 20 иконок.

Теги – метки для фильтрации, аналогично папкам, позволяющие удобно фильтровать нужные профили в таблице. В каждом профиле может быть как несколько тегов, так и не быть их вовсе. Ограничение на количество тегов соответствует условиям выбранной подписки.

Стартовая страница – поле, в котором при необходимости можно задать стартовую страницу. Каждый раз при запуске будет открываться стартовая страница на первой вкладке вместе с ранее открытыми вкладками в профиле. Добавить можно не более 20 стартовых страниц.

Предусмотрено два способа добавления стартовых страниц:

  1. Единичное добавление стартовых страниц в список с указанием URL адреса. По нажатию на кнопку «Добавить стартовую страницу» можно расширить список.
  2. Добавление нескольких стартовых страниц одним действием. Нажмите кнопку «Добавить сразу несколько» скопируйте и вставьте список URL адресов с разделителями в виде разрыва строки, либо пробела. Список стартовых страниц расширится. Добавить можно не более 20 стартовых страниц.

Закладки — поле для добавления и сохранения избранных ссылок на web-ресурсы в меню «Закладки» в профиле, с возможностью присвоения названия для каждой ссылки. Предусмотрено два способа добавления закладок:

  1. Единичное добавление закладок в список с указанием названия и URL адреса, на который ведет клик по закладке. По нажатию на кнопку «Добавить закладку» можно расширить список.
  2. Добавление нескольких закладок одним действием. Нажмите кнопку «Добавить сразу несколько» скопируйте и вставьте список URL адресов с разделителями в виде разрыва строки, либо пробела. Список закладок расширится и названия для закладок будут использоваться из имени домена ссылки (google.com, ebay.com и тд). Названия можно изменить после массового добавления. Единовременно можно добавить до 100 ссылок.

При следующем запуске профиля закладки будут добавлены в браузер и исчезнут из этого списка.

Общие настройки​

General settings

Юзерагент – идентификатор клиентского приложения, сформированный на основе выбранной системы в предыдущем окне (основные настройки профиля). Юзерагент содержит информацию о подменяемом устройстве, операционной системе и версии браузера. Для наилучшей совместимости рекомендуется воспользоваться генерацией. Изменять юзерагент можно вручную, но это может повлиять на целостность формируемого отпечатка. Мы не рекомендуем это делать.

С июля 2022 года в user-agent Chrome отображается только мажорная версия, вида *.0.0.0.

Все изменения в юзерагент пользователи вносят на свой страх и риск. Если юзерагент был изменен пользователем вручную, в настройках профиля будет отображаться соответствующее уведомление. При необходимости можно сгенерировать актуальный юзерагент, используемый в Octo Browser, нажав на кнопку обновления рядом.

Changed Useragent

Операционная система – выбор операционной системы профиля. При создании профиля по умолчанию используется операционная система, установленная в устройстве пользователя. При этом в момент создания профиля можно изменить операционную систему профиля (в данный момент можно выбрать между Windows, macOS Intel, macOS ARM). Рекомендуем использовать ОС профиля такую же, как и ОС вашего устройства. На основе выбранной версии ОС будет сгенерирован fingerprint. После того, как профиль создан и сохранен, операционную систему профиля изменить нельзя.

Версия OS — выбор версии операционной системы.

Разрешение экрана – здесь можно выбрать одно из часто используемых реальными пользователями разрешение экрана. Разрешение экрана фиксирует область при открытии профиля с соответствующими значениями, максимальное разрешение ограничено вашим разрешением системы. Разрешение можно изменить после настройки. В большинстве случаев изменения разрешения не влияют на целостность отпечатка. Изменения сервисами могут восприниматься как подключение и использование дисплея с другим разрешением.

Шрифты – подмена набора шрифтов, установленных в системе. Набор шрифтов формируется исходя из выбора ОС в общих настройках. Некоторые сайты могут проверять наличие тех или иных шрифтов, установленных в системе. Рекомендуется не менять настройки без необходимой на то причины.

Языки – подмена используемых языков браузерного профиля. Язык интерфейса браузера никак не влияет на подменяемые языки и устанавливается в соответствии с языком системы. В режиме по умолчанию при старте профиля происходит проверка внешнего IP адреса и выставляются языки, соответствующие вашему IP (конечный IP зависит от типа соединения: прямое подключение, прокси или же впн с прямым соединением), и в большинстве случаев работает корректно. Несоответствие языков и гео вашего прокси может быть лишь в различии гео IP баз. При необходимости параметр можно менять вручную. Не рекомендуется его отключать (выставлять реальный).

Часовой пояс – подмена используемого часового пояса в профиле браузера. Аналогично языкам настройки по умолчанию соответствуют гео IP адреса и часовой пояс устанавливается автоматически каждый раз. При необходимости параметр можно менять вручную. Не рекомендуется его отключать (выставлять реальный).

Геолокация – подмена используемого местоположения в профиле браузера. Аналогично языкам и часовому поясу, настройки по умолчанию соответствуют гео IP адреса. Широта и долгота берется случайным образом в радиусе определенного автоматически гео. При посещении сайтов, которые попытаются узнать ваше местоположение, вы увидите уведомление с просьбой предоставить доступ. До тех пор, пока Вы его не предоставите, сайты не получат данные о местоположении. При желании параметр можно выставить вручную. Рекомендуется выбирать местоположение, соответствующее реальным объектам, однако с введением функции «приблизительное местоположение» в MacOS эти данные не оцениваются критично многими сервисами. Не рекомендуется его отключать (выставлять реальный).

При выставлении Геолокации вручную, нужно вписать параметры Широта, Долгота, Точность. Точность – погрешность определения координат широты и долготы в метрах. По умолчанию можно выставить значение из диапозона 1-999, а дальше подбирать под конкретную задачу или поведение сервиса.

Аппаратные настройки​

Hardware settings

Ядра процессора – количества эмулируемых ядер процессора для выбранного профиля.

Оперативная память – объем эмулируемой оперативной памяти для выбранного профиля.

Видеокарта – модель эмулируемой видеокарты и соответствующие ей параметры на основе реальных отпечатков пользователей.

Аппаратный шум – автоматически задаваемые программные отклонения от системных значений для создания уникального отпечатка определенных возможностей профиля браузера.

  • WebGL – включение аппаратного шума для WebGL
  • Canvas – включение аппаратного шума для Canvas
  • Audio – включение аппаратного шума для Audio
  • Client Rects – подмена размеров элементов страницы (на разных устройствах элементы страницы отличаются, и по этому показателю можно идентифицировать устройства). Эта подмена может некорректно отображать элементы страницы на некоторых сайтах. Если вы столкнулись с подобными сложностями – можете попробовать отключить подмену.

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

Медиа устройства – эмуляция подключенных мультимедиа устройств, которые будут видеть сайты или сервисы при работе с данным профилем. В режиме эмуляции работа с данными устройствами невозможна. Это значит, что доступ к вашей камере или микрофону не будет предоставлен физически, однако заявленный набор характеристик будет предоставлен. Например, Facebook сможет определить, что при работе с профилем заявлена поддержка камеры, однако взаимодействовать с ней не сможет. Для селфи или отправки документов, необходимо будет выбрать количество камер 0.

Соединение​

Connection settings

Прокси – выбор прокси для используемого профиля браузера. Значение по умолчанию “Установить прокси” указывает на то, что профиль будет без прокси — будет использоваться ваш реальный IP адрес или IP адрес VPN, если VPN клиент включен на вашей операционной системе. Можно добавить прокси как из списка прокси-менеджера, так и временный прокси. Поддерживаются типы прокси http / https / socks5 / ssh. Следует учесть, что при выборе цепочки VPN + Прокси отклик и скорость могут уменьшиться, также это может сказаться на удобстве использования.

Для быстрого заполнения данных прокси используйте шаблон ip:port:login:password (или с указанием протокола вначале protocol://login:password:ip:port).

Необходимо привести к такому формату. После при помощи горячих клавиш, например CTRL + V, выполнить вставку в поле Хост. Доступные протоколы socks5, https, http, ssh. Так же поддерживаются разделители ; @ и пробел в любом порядке.

URL для изменения IP – при необходимости можно добавить ссылку для смены IP.

WebRTC – выбор подменяемого значения webrtc может быть на основе внешнего IP прокси, реальный или отключен. По умолчанию опция «Зависит от IP» подменяет автоматически значение IP адреса на внешний IP адрес прокси. При включенной опции “Отключить UDP” будет отключен весь непроксированный UDP трафик. Это можно приравнивать к отключению WebRTC, но TCP трафик продолжит ходить, а UDP трафик (на котором основаны все методы утечки реального IP) будет полностью отключен, вместо подмены IP.

DNS – значение IP адреса dns сервера. Значение по умолчанию (пустое) будет использовать dns сервер прокси / vpn.

Хранилище​

Раздел настроек хранилища для выбранного профиля.

Storage settings

Cookies – включение сохранения Cookies и Session Storage.

Passwords – включение сохранения паролей.

Extensions – включение сохранения расширений в профиле.

Local Storage – включение сохранения данных Local Storage и IndexedDB. Все сервисы, которые используют для сохранения данных Local Storage, будут разлогиниваться при повторном открытии профиля, если Local Storage выключен.

History – включение сохранения истории браузера.

Bookmarks – включение сохранения закладок браузера.

Service Workers – некоторые сайты хранят кэш страниц для оффлайн-работы или другую информацию (например, Telegram хранит часть данных по авторизации в Service Workers). Если вам не нужна эта функция, рекомендуем ее не включать, так как вес профиля значительно увеличивается.

Расширения​

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

Extensions settings

После установки расширений в профиле они отобразятся в списке у всех членов команды и на всех устройствах. Их также можно выбирать из списка ниже (без повторной установки) и назначать в настройках других профилей, при условии выбранной опции в разделе Хранилище Extensions.

Extensions Add

Куки​

Поддерживаются валидные cookie таких форматов как JSON и Netscape. Для загрузки можно перетянуть файл с соответствующим содержимым в поле или кликнуть в это поле и вставить скопированные cookies.

Генерация – изменение отпечатка редактируемого профиля. Изменяются общие и аппаратные данные. Основные данные и данные соединения не изменяются.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *