Наткнулся на просторах интернета на рекламу подобного расширения для браузеров на базе движка Chromium. Мне стало дико интересно, как оно работает. Но для этого нужно было изучить код расширения, который хранился в zip-архиве с расширением CRX.
Сказано-сделано. За несколько секунд был нагуглен сайт, который скачивал любое расширение для хрома.
После скачивания файл расширения был открыт в архиваторе и содержал графику, разметку, стили, скрипты и прочий малоинтересный для меня хлам.
Скрипты меня интересовали в первую очередь. Я начал изучение с файла background.js и обнаружил в нём любопытное содержимое.
Как мы видим, расширение использует черный список ключевых слов (мopгeнштepн, mоrgеnstеrn, mоrgеnshtеrn, aлишep тaгиpoвич, aлишep вaлeeв), которые предназначены для поиска и скрытия любого контента на сайте, связанного со знаменитостью.
Кроме того, используется сторонний сервис для идентификации пользователя и загрузки черного списка мемов (согласно файлу injected.js).
Также в файле injected.js описана функция blockThemALL, которая просматривает тело страницы, сверяется с черным списком ключевых слов и мемов и блокирует запрещенные элементы. Стандартный алгоритм, ничего нового.
Меня позабавило наличие Pro-функционала (в файле js.js), я наивно подумал, что это возможность добавлять свои ключевые слова, но нет, просто незначительное увеличение черного списка.
Pro-версия добавляет три ключевых слова: бyзoвa, бyзoвoй, бyзoвy. Ну это просто смехота. Зачем мне разблокировать Pro-версию, если можно самому добавить ключевые слова, любые, какие я захочу? Браузеры на базе движка Chromium поддерживают режим разработчика, что позволяет добавлять любые расширения, даже самописные.
Именно на этом моменте я не сдержался и решил опубликовать пост. Я, конечно, все понимаю, но зачем держать конечных пользователей за дебилов? Если бы они сделали возможность добавлять любое ключевое слово для Pro-версии, то никаких вопросов бы не было. Но разводить пользователя на пиар своего детища, добавляя капельку изменений, это уже глупо, потому что любой может скачать код расширения, распаковать архив и переписать его под себя. Единственно возможная защита - это хранить черный список или логику работы на сервере, но зачем мне нужен ваш список, если я могу создать свой. И вообще, существуют блокировщики рекламы.
Также у меня возникают сомнения в универсальности данного способа. Проверку по ключевым словам можно обойти элементарной заменой символов, прилагаю пример подобного кода на Python.
Я особо не заморачивался, просто нагуглил код на Stack Overflow, который решал аналогичную задачу и чуть-чуть переписал под себя. Символы кириллицы заменяются на визуально похожие символы латиницы и наоборот. Конечно, можно обнаруживать и блокировать подобную подмену, но я сомневаюсь, что разработчики расширения настолько заморочились. Поправьте меня, если я неправ.
На выходе получаем забавную ситуацию: расширение ориентировано на поверхностную аудиторию, но это ещё полбеды, её сделали на коленке (это тоже можно простить). Оно изначально урезано по функционалу, даже Pro-версия является обрубком (однако ничего не мешало сделать добавление любых ключевых слов) и существуют бесплатные аналоги, которые превосходят её по возможностям.
Но хуже всего, что оно просто не работает: этот пост могут прочитать даже владельцы расширения благодаря автозамене символов в ключевых словах.