Cloudless • RU : Что "под капотом"
Опубликовано: Бармалей · 09.02.2019 · 00:02 ••• Обновление: 12.01.2021 · 01:01 0

…Как понимаю, вы уже прочитали общий обзор и хотите поглубже разобраться что и как в этом аддоне…)

Всё верно, работа с расширением Cloudless требует знания некоторых особенностей блокировки сетевых запросов, это позволит вам избежать "непонятных" проблем при эксплуатации аддона.

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


Отличия от оригинала

По отношению к исходному аддону и его авторской хром-версии имеются следующие отличительные особенности:

  • Форк оптимизирован для работы на любых версиях хром-браузеров, код проверен на версиях 29-69.
  • Выше скорость работы за счёт оптимизации кода, из кода убрано всё лишнее, исправлена логика и баги оригинала.
  • Возможность полного управления фильтрами проверки облачных сервисов (в т.ч. – "отключаемость" Cloudflare).
  • Есть опция отключения вывода в консоль, упрощён вывод диалоговых "страниц-заглушек".
  • Сделан полноценный перевод на русский язык, добавлены подсказки ко всем опциям настроек.
  • Доработан интерфейс и стили, удалены лишние файлы, вдвое уменьшен размер.

Технические детали

Ниже приведены некоторые технические подробности по исходному коду и отдельным функциям расширения.

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

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

Все скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок.

Всё управление работой расширения осуществляется через попап-окно, вызываемое по щелчку на иконке на тулбаре. Интерфейс окна прост и интуитивно понятен, для всех "кликабельных" элементов добавлены тултипы (подсказки):

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

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

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

Для вызова попапа применяется стандартный API chrome.browserAction.

Расширение имеет невыгружаемый фоновый процесс (скрипт cloudless.js) – это обусловлено самим принципом работы основного API, используемого в аддоне – chrome.webRequest и его "блокирующей" части webRequestBlocking. Этот API отвечает непосредственно за проверку http-запросов и их блокировку в соответствии с настройками фильтрации.

Для работы с веб-страницами в фоновых вкладках задействуется API chrome.tabs. Также применяется разрешение activeTab, упрощающее отдельные действия на текущих страницах.

Для обеспечения корректной работы аддона с любыми веб-сайтами в манифесте запрашиваются разрешения [ "http://*/*", "https://*/*" ]. С локальными и служебными страницами Cloudless напрямую не работает – если они НЕ отправляют запросов на "шпионские" ресурсы.)

Важные особенности обработки блокируемых ресурсов

Детектор следящих элементов срабатывает на любых сайтах по наличию заданных совпадений в заголовках запросов. Отлавливаются все следящие элементы для сервисов Cloudflare, Google Project Shield, Incapsula/Imperva и Sucuri.

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

Если какой-либо запрос и/или сервис были ограничены другим блокировщиком – детект "шпиёна" может не сработать.

Детект также не сработает* и в самом "шпионском гнезде" – на сайтах MITM-сервисов запросы не обрабатываются.

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

Для уточнения конкретных "крамольных" элементов страниц можно использовать консольный лог (отметив "галку" в Настройках, по умолчанию включен). В лог выводится название MITM-сервиса и URL ресурса, непосредственно содержащего инструмент слежения.

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

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

Язык интерфейса, сообщений, подсказок и описания – только русский (жёстко зашит в коде).

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


Ресурсы и ссылки по разработке Cloudless • RU



Защита приватности Бармалей
Бармалей 09.02.2019 12.01.2021 266 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/49 + 360 Extreme Explorer 11/12 (CR-69/78)
Технологии и API:Чистый JS (ES5), API: webRequest, activeTab, tabs

Поделиться

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