UltraSurf VPN RU : Что "под капотом"
Опубликовано: Бармалей · 07.09.2019 · 00:03 ••• Обновление: 12.09.2021 · 05:59 0

В материале приведены некоторые технические подробности по "внутренностям" расширения UltraSurf VPN RU, описаны применяемые технологии, API и особенности использования.


В этой статье:


Выбор прокси и запуск приватного режима

По умолчанию при запуске расширения выполняется автоматическая настройка соединения, выбор конкретного сервера сети UltraSurf (в текущей версии доступно более 50 хостов) и последующий запуск соединения с этим прокси-сервером.

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

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

Также в Настройках можно отключить автоперебор серверов (опция "Менять IP‑адрес прокси при подключении") и установить в качестве постоянного текущего прокси любой из них. Это может быть вызвано "личными предпочтениями" пользователя или связано со скоростью работы конкретного прокси.

Оперативно проверить текущие (действующие в вашем профиле) настройки прокси в браузере можно* на служебной странице chrome://net-internals/#proxy. На скриншоте показан пример настроек после включения приватного режима:

* В некоторых браузерах эта страница отсутстует ("выпилена" разработчиками).


Индикация состояния

При запуске прокси-режима и при выполнении попытки установки соединения с прокси (при запуске приватного режима) на "бэджике" у значка расширения на тулбаре отображаются бегущие точки на синем фоне  · · · .

После прохождения проверок и установления соединения с прокси на бэджике отображается  VPN  на зелёном фоне.

В дальнейшем отслеживание состояния соединения с сетью, связь с прокси и проверка конфликтов производятся автоматически.

При возникновении проблем изменяется статус (индицируется текстом  ERR  и красным цветом беджика кнопки на тулбаре). После устранения проблемы (если включен прокси‑доступ) соединение с прокси также восстанавливается автоматически, на индикаторе при этом снова отображается  VPN .

Более подробное описание текущего состояния и/или проблемы выводится в текстовом блоке в окне попапа. Если в настройках включён вывод сообщений в консоль (по умолчанию) – динамику процесса можно посмотреть и в консоли.

Контроль состояния можно отключить "галкой" в блоке Настроек ("Игнорировать ошибки прокси и конфликты").

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

При ручном отключении приватного режима в настройках на бэджике отображается  OFF  на чёрном фоне.


Режимы работы прокси

Опция "Не учитывать системные настройки прокси": браузер работает с сетью в обход настроек системного прокси. При отключении от прокси задействуется спецрежим "DIRECT MODE" (индикация на бэджике –  DM  вместо  OFF ). Прямой доступ позволяет исключить проблемы при ошибках системного прокси при отключении от прокси‑сервера.

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

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

Опция "Прокси только для HTTP/HTTPS протокола": использование только в качестве HTTP/HTTPS‑прокси, все остальные протоколы при этом не проксируются, их трафик идёт напрямую. Эта опция снижает вероятность проблем с доступом по протоколам, неподдерживаемым серверами UltraSurf (в частности – FTP).


Исходный код, интерфейс и API

UltraSurf VPN RU не использует для работы никакие сторонние библиотеки (привет любителям JQuery)).

В коде применён только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги. Все скрипты работают в "строгом" режиме – для гарантии выполнения функций и облегчения отлова ошибок.

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

Применяемые технологии и API

Расширение UltraSurf VPN RU имеет модульную структуру скриптов, подгружаемых по необходимости (это снижает общий текущий расход памяти). Основные функции проксирования размещены в скрипте app.js (фоновый скрипт). Для подгрузки и стыковки модулей применяется немного доработанная библиотека RequireJS (файл require.js).

Функции управления и общие сервисные функции и настройки размещены в скрипте control.js. Для запуска проверки сетевого соединения подгружается скрипт diagnostic.js. Эти скрипты задействуются только при открытом окне настроек и не занимают память при фоновой работе аддона.

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

Основной API, используемый в аддоне – chrome.proxy, для вызова окна настроек применяется chrome.browserAction. Для диагностики соединения и проверки возможных конфликтов с другими установленными прокси‑расширениями дополнительно задействуется API chrome.webRequest.

Для хранения пользовательских настроек используется API chrome.storage. В текущей версии расширения в манифесте для этого не требуется особых разрешений, размер данных не превышает ограничения по умолчанию (5Mb).

Для обеспечения работы аддона с любыми URL, в манифесте запрашивается разрешение [ "*://*/*" ].

Интерфейс управления и настройки

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

В отличие от прототипа, для отрисовки интерфейса не используются никакие сторонние JS/CSS библиотеки, весь интерфейс работает на чистом HTML с минимально необходимым набором стилей и скриптов.

Все настройки и управление работой прокси также выполняются в этом же окне, отдельной страницы настроек нет (и не будет). Сохранение настроек производится автоматически, сразу же после их изменения. Перезапуск расширения или иные действия при этом не требуются (в отдельных случаях необходимо просто закрыть и повторно вызвать это окно).

Назначение параметров в меню настроек интуитивно понятно из их названия. Кроме того, для всех настроек имеется достаточно подробная подсказка. Все настройки сохраняются только локально, синхронизация не поддерживается.

Дополнительные примечания по исходному коду

Аддон не имеет практических ограничений по версии браузера, используемые API работают в версиях 29+.

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

Язык интерфейса, сообщений, подсказок и описания – только русский (локализация жёсткая, зашита в коде), другие* локализации отсутствуют. Это связано со значительным упрощением кода, а также с тем, что при создании расширения автор в первую очередь ориентируется на русскоязычных пользователей.

* Впрочем, если "дело пойдёт", прикрутить "басурманский" обратно не является особой проблемой…)

Исходный код текущей версии расширения можно просмотреть в режиме онлайн на любом из ресурсов, приведённых в материале UltraSurf VPN RU : LBSC*.

* См.также: LBSC: Что это такое и как работать с этим архивом.



Технические детали Бармалей

Смотрим также:

Бармалей 07.09.2019 12.09.2021 326 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/49 + 360 Extreme Explorer 9/11/12/13 (CR63/69/78/86) + Chromium 87
Технологии и API:Чистый JavaScript (ES5). API: chrome.proxy, chrome.webRequest, chrome.browserAction

Поделиться

Всего комментариев: 0
close