…Как понимаю, вы уже прочитали общий обзор и хотите поглубже разобраться что и как в этом аддоне…) Всё верно, работа с расширением Cloudless требует знания некоторых особенностей блокировки сетевых запросов, это позволит вам избежать "непонятных" проблем при эксплуатации аддона. В этой статье: Отличия от оригиналаПо отношению к исходному аддону и его авторской хром-версии имеются следующие отличительные особенности:
Технические деталиНиже приведены некоторые технические подробности по исходному коду и отдельным функциям расширения. Исходный код, интерфейс и 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 |