Привет, хабросообщество!
Довольно давно под «гостем» читаю хабр и вот подвернулся повод пройти регистрацию и написать опровержение для статьи
«Браузерное расширение от сайта Kinogo». Нашу попытку обойти блокировку посчитали «вредоносной»; сегодня я расскажу, почему это не правда.
Предлагаю взять попкорн и поучаствовать в
сраче поиске истины.
Я представляю команду разработчиков Kinogo и обычно мы занимаемся поддержкой работоспособности сайта. Всё изменилось, когда за последнюю неделю мы успели попасть в центр внимания со своим «плагином для браузера». В обсуждениях на разных сайтах посчитали, что мы крадем пароли, отправляем личные сообщения вашим друзьям ВК, подменяем рекламу и занимаемся всякой другой чернухой в интернете. После того, как появилась
статья на Хабре, в которой наше расширение обвинили во всех грехах — мы решили дать официальный ответ и все рассказать. Давайте начнем с обсуждения, как мы до такого докатились, а затем плавно перейдем к тому, почему наше расширение не стоит считать вредоносным.
Зачем это всё?
Госдума приняла так называемый новый «антипиратский» закон. Тем самым открывая для себя возможность внесудебного решения споров и блокировки сайтов «злостных нарушителей». «Какая свежая новость!» — скажите вы. Действительно, приняли они его давно, но в законную силу он вступает с 1 мая 2015 года. В связи с тем, что мы являемся крупным порталом для онлайн просмотра фильмов, мы решили перестраховаться и придумать, как обойти блокировку.
Как вы дошли до такой жизни?
Нами были перепробованы разные способы борьбы с блокировкой: начиная от построения цепочки прокси серверов перед нашим основным сервером
(чтобы скрыть ip) и заканчивая покупкой зеркальных доменов для их раскрутки. Все это не решало основной проблемы — блокировки доменного имени и потери всей постоянной и поисковой аудитории.
Конечно же, у нас есть определенный процент аудитории, который не будет разбираться, почему портал для просмотра фильмов был заблокирован, а просто нагуглят фильм в другом месте. Описывать, как поменять DNS или использовать прокси — тоже не вариант, для многих это очень сложно.
Мы решили обратится к опыту порталов, которые работают нелегально, но успешно обходят любые попытки их блокировать. Нет, нет. Разговор идет не про «порно-порталы», а про сайты с азартными играми. Согласитесь, было бы странно, если бы идея использовать плагин для браузера пришла бы нам в голову на порно-сайте.
Онлайн-казино уже очень давно используют плагины, чтобы перенаправлять своих посетителей на доступные зеркала. Этот вариант нам показался очень интересным, а самое главное — он доступен для понимания большому кругу пользователей.
Механизм работы
Учитывая, что в написании плагинов для браузера мы совсем зеленые, было принято решение посмотреть, как с этим справились другие. Долго и нудно изучая различные способы ухода от блокировки, мы выделили следующие:
- В случае, если пользователь заходит на заблокированный сайт — отправлять его на любое доступное зеркало. С одной стороны — лучший способ для
нас пользователя, с другой — требуется постоянно подкачивать список доступных зеркал и отслеживать сайты на которые он заходит
- Добавить в интерфейс браузера кнопку, при клике на которую — перенаправлять на зеркало. А вспомнит ли пользователь про эту кнопку когда сайт будет действительно заблокирован?
Наверное самый бесполезный вариант
- Оповещать средствами плагина (всякими всплывающими окнами и тп) что сайт будет заблокирован и он должен привыкать к новому домену. Вариант не плохой, но каким-то образом требуется постоянно отслеживать каким пользователям и что мы уже показали (из сообщений). Продумать механизм, чтобы оповещения не были слишком навязчивыми. Даже в этом случае нет гарантии что пользователь прислушается и будет действовать согласно этим сообщениям
Захватить контроль над браузером пользователя и всегда показывать фильмы
Конечно же, нам понравились варианты 1 и 4, но в итоге выбрали первый. Именно при таком подходе мы можем обеспечить максимальный комфорт для пользователя. Схема проста: когда юзер зайдет на заблокированный домен «kinogo.net», его автоматически переведет на доступное зеркало, а если и зеркало заблокировано — плагин так же это отследит и переведет на другое.
- Не требует участия пользователя
- Нет всплывающих окон
- Не портим своими логотипами и кнопками его панель браузера
Если смотреть со стороны пользователя — вариант просто отличный. Для нас как для разработчиков поддерживать данное решение очень легко
(бери только и обновляй список зеркал вовремя). Идеально, да?
Как и где размещать расширение
Расширение прошло успешную валидацию в
Google Store, несмотря на значительные переделки и описания для команды гугл. Они весьма подозрительно относятся к подобному роду расширениям, но после непродолжительного общения нас пустили в магазин. Таким образом, смогли покрыть основную часть посетителей нашего сайта, ведь расширения из магазина работают на всех Chromium-подобных браузерах (yandex browser, amigo, rambler, google chrome, comodo dragon и др)
Для Firefox все было немного сложнее, ведь их магазин почему-то выглядит заброшенным. Мы подали заявку на валидацию, успешно справились с несколькими исправлениями и повисли в долгой очереди на апрув. На момент написания статьи мы занимаем 157 место из 168. В связи с этим мы решили распространять xpi через сайт, согласившись с тем, что расширение на компьютере пользователей мы больше обновить не сможем.
Заявку в магазин Оперы мы так же отправили и сейчас всё еще ждем пока наш плагин проверят. Очень жаль, что расширения из Google Store не могут быть установлены в этом прекрасном браузере.
«Нет ничего столь совершенного, чтобы быть свободным от всяких упреков» (с) Эзоп
Мы были очень удивлены когда наше расширение вызвало подозрение у разработчиков. Я постараюсь выделить самые популярные вопросы
возмущения и ответить максимально открыто и подробно:
- «Ваше расширение вообще работает? Оно защищает Kinogo от блокировки?»
Конечно работает и это очень легко проверить! Просто заблокируйте через свой роутер или локальный hosts домен «kinogo.net», и при входе, вас отправит на зеркало. При этом отправка будет происходит с сохранением всей get строки.
- «Почему вы не получаете список зеркал? Где это в коде?»
Получаем! Механизм получения реализован по ссылке kinogo.info/list.txt и успешно работает для Firefox расширения. Для Google Chrome это не требуется, мы решили, что будет проще вшивать свежее зеркало прямо в код (хотя сначала в нем был реализован аналогичный метод получения зеркал). Еще по правилам магазина мы не можем подгружать ключевые части нашего расширения с других источников, поэтому были проблемы пройти модерацию. Обновлять Firefox плагины на компьютере пользователя мы не можем (я писал об этом выше), именно поэтому они получают список удаленно.
- «Зачем вы загружаете файл getscripts2 на каждой странице, которую я посещаю?»
Увы, но это вынужденная мера. В случае, если по каким то причинам будет заблокирован домен, через который мы получаем список зеркал (критично для Фокса), либо мы потеряем возможность обновлять плагин в магазине Google (по разным причинам: жалобы конкурентов, подозрения пользователей или гугла, блокировка по причине использования зеркальных плагинов) — это будет единственным возможным способом определить, что вы находитесь на доменах Kinogo и перевести вас на зеркало, в случае блокировки.
- «Что вы делаете с моим компьютером? Почему все тормозит, меняются обои на рабочем столе и компьютер ругается на вирусы»
Это уже из области «фантастики». Мы ничего не делаем кроме описанного выше. Все остальные жалобы, которые мы получали — расширение для браузера сделать не способно. Пожалуйста, отключите и убедитесь что оно не является причиной. Мы специально оставляли комментарии в коде и делали его максимально доступным для понимания.
- «Зачем вы собираете мои пароли, ip, домашний адрес и все страницы, что я посещаю?»
Ничего подобного не происходит. Мы действительно передаем адрес текущей страницы где вы находитесь, но только из-за описанных выше причин. Ваша поисковая история не ведется, данные о компьютере не собираются и не записываются на наших серверах. Мы постараемся в будущем усовершенствовать наше расширение и позволить вам самим в виде «опций» выбрать какой способ защиты вы хотите использовать
Самый спорный и подозрительный момент в нашем расширении — подгрузка управляющего скрипта на каждой странице. Мы действительно не смогли придумать ничего лучше, кроме как заложить подобный функционал. Обновлять Firefox версию мы не можем и в случае если kinogo.info попадет в бан (это домен с которого мы получаем зеркала) — мы потеряем всех пользователей. Мы распространяем расширение конкретно для пользователей нашего сайта, поэтому надеемся на их изначальную лояльность к подходу, который будет использован для защиты.
Вывод
Даже преследуя вполне благую цель для своих посетителей — есть шанс получить большое кол-во критики и недовольства в свой адрес. Самое главное, что мы хотели показать своей статьей — мы не делаем ничего плохого. В манифесте к расширению и в описании магазина мы постарались максимально подробно всё рассказать. Код расширения не обфусцирован и не подгружает другой код с сервера.
В статье, в которой назвали наше решение «вредоносным», автор не привел не одного противозаконного действия, которое мы выполняем. Если наша реализация вызвала у вас вопросы или подозрения, почему вы сразу отнесли нас к «вредоносным» расширениям? Это тоже самое, что считать вредоносными все программы, которые требуют для запуска права администратора. Я надеюсь, текущая статья будет полезна для хабросообщества, среди которого есть и пользователи Kinogo.
Мы так же сделали определенные выводы для себя. Способ, в котором мы загружаем свой скрипт на других страницах
(даже ничего противозаконного не делая и вполне аргументированно), вызывает у многих подозрение. В ближайшее время мы добавим пункт «Настройки» и возможность отключить этот тип защиты.
Спасибо за внимание и боритесь за свободный Интернет!
комментарии (28)