СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Обзор расширения Kinogo от разработчика в черновиках Recovery Mode

Привет, хабросообщество!

Довольно давно под «гостем» читаю хабр и вот подвернулся повод пройти регистрацию и написать опровержение для статьи «Браузерное расширение от сайта Kinogo». Нашу попытку обойти блокировку посчитали «вредоносной» и сегодня я расскажу почему это не правда.

image

Предлагаю взять попкорн и поучаствовать в сраче поиске истины.

Я представляю команду разработчиков Kinogo (показываем бесплатно фильмы онлайн) и обычно мы занимаемся поддержкой работоспособности сайта. Всё изменилось когда за последнюю неделю мы успели попасть в центр внимания со своим «плагином для браузера». В обсуждениях на разных сайтах посчитали что мы крадем пароли, отправляем личные сообщения вашим друзьям ВК, подменяем рекламу и занимаемся всякой другой чернухой в интернете. После того как появилась статья на Хабре в которой наше расширение обвинили во всех грехах — мы решили дать официальный ответ и все рассказать. Давайте начнем с обсуждения как мы до такого докатились, а затем плавне перейдем к тому, почему наше расширение нельзя считать вредоносным.

Зачем это всё?


Госдума приняла так называемый новый «антипиратский» закон. Тем самым открывая для себя возможность внесудебного решения споров и блокировки сайтов «злостных нарушителей». «Какая свежая новость!» — скажите Вы. Действительно, приняли они его давно, но в законную силу он вступает с 1 мая 2015 года. В связи с тем что мы являемся крупным «пиратским» порталом для фильмов онлайн — мы решили перестраховаться и придумать как обойти блокировку.

Как вы дошли до такой жизни?


Нами были перепробованы разные способы борьбы с блокировкой: начиная от построения цепочки прокси серверов перед нашим основным сервером (что бы скрыть ip) и заканчивая покупкой зеркальных доменов для их раскрутки. Все это не решало основной проблемы — блокировки доменного имени и потери всей постоянной и поисковой аудитории.

Конечно же у нас есть определенный процент аудитории который не будет разбираться почему портал для просмотра фильмов был заблокирован, а просто нагуглят фильм в другом месте. Описывать как поменять DNS или использовать прокси — тоже не вариант, для многих это очень сложно.

Мы решили обратится к опыту порталов, которые работают не легально, но успешно обходят любые попытки их блокировать. Нет, нет. Разговор идет не про «порно порталы», а про сайты с азартными играми. Согласитесь, было бы странно если бы идея использовать плагин для браузера пришла бы нам в голову на порно сайте )

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

Механизм работы


Учитывая что в написании плагинов для браузера мы совсем зеленые — было принято решение посмотреть как с этим справились другие. Долго и нудно изучая различные способы ухода от блокировки, мы выделили следующие:

  1. В случае если пользователь заходит на заблокированный сайт — отправлять его на любое доступное зеркало. С одной стороны — лучший способ для нас пользователя, с другой — требуется постоянно подкачивать список доступных зеркал и отслеживать сайты на которые он заходит
  2. Добавить в интерфейс браузера кнопку, при клике на которую — перенаправлять на зеркало. А вспомнит ли пользователь про эту кнопку когда сайт будет действительно заблокирован? Наверное самый бесполезный вариант
  3. Оповещать средствами плагина (всякими всплывающими окнами и тп) что сайт будет заблокирован и он должен привыкать к новому домену. Вариант не плохой, но каким то образом требуется постоянно отслеживать каким пользователям что мы уже показали (из сообщений). Продумать механизм что бы оповещения небыли слишком навязчивыми. Даже в этом случае нет гарантии что пользователь прислушается и будет действовать согласно этим сообщениям
  4. Захватить контроль над браузером пользователя и всегда показывать фильмы

Конечно же нам понравились варианты 1 и 4, но в итоге выбрали первый. Именно при таком подходе мы можем обеспечить максимальный комфорт для пользователя. Схема проста: когда юзер зайдет на заблокированный домен «kinogo.net» его автоматически переведет на доступное зеркало, а если и зеркало заблокировано — плагин так же это отследит и переведет на другое.

  • Не требует участия пользователя
  • Нет всплывающих окон
  • Не портим своими логотипами и кнопками его панель браузера

Если смотреть со стороны пользователя — вариант просто отличный. Для нас как для разработчиков поддерживать данное решение очень легко (бери только и список зеркал обновляй вовремя). Идеально, да?

Как и где размещать расширение


Расширение прошло успешную валидацию в Google Play, несмотря на значительные переделки и описания для команды гугл. Они весьма подозрительно относятся к подобному роду расширениям, но после непродолжительного общения — нас пустили в магазин. Таким образом смогли покрыть основную часть посетителей нашего сайта, ведь расширения из магазина работают на всех Chromium-подобных браузерах (yandex browser, amigo, rambler, google chrome, comodo dragon и др)

Для Firefox все было немного сложнее, ведь их магазин почему то выглядит заброшенным. Мы подали заявку на валидацию, успешно справились с несколькими исправлениями и повисли в долгой очереди на апрув. На момент написания статьи мы занимаем 157 место из 168. В связи с этим мы решили распространять xpi через сайт, согласившись с тем что расширение на компьютере пользователей мы больше обновить не сможем.

Заявку в магазин Оперы мы так же отправили и сейчас всё еще ждем пока наш плагин проверят. Очень жаль что по какой то причине расширения из Google Play не могут быть установлены в этом прекрасном браузере.

«Нет ничего столь совершенного, чтобы быть свободным от всяких упреков» (с) Эзоп


Мы были очень удивлены когда наше расширение вызвало подозрение у разработчиков. Я постараюсь выделить самые популярные вопросы возмущения и ответить максимально открыто и подробно:

  • «Ваше расширение вообще работает? Оно защищает Kinogo от блокировки?»
    Конечно работает и это очень легко проверить! Просто заблокируйте через свой роутер или локальный hosts файл домен «kinogo.net» и при входе вас отправит на зеркало. При этом отправка будет происходит с сохранением всей get строки.
  • «Почему вы не получаете список зеркал? Где это в коде?»
    Получаем! Механизм получения реализован по ссылке kinogo.info/list.txt и успешно работает для Firefox расширения. Для Google Chrome — это не требуется, мы решили что будет проще вшивать свежее зеркало прямо в код (хотя сначала в нем был реализован аналогичный метод получения зеркал). Обновлять Firefox плагины на компьютере пользователя мы не можем (я писал об этом выше), именно поэтому они получают список удаленно.
  • «Зачем вы загружаете файл getscripts2 на каждой странице которую я посещаю?»
    Увы, но это вынужденная мера. В случае если по каким то причинам будет заблокирован домен через который мы получаем список зеркал (критично для Фокса), либо мы потеряем возможность обновлять плагин в магазине Google (по разным причинам: жалобы конкурентов, подозрения пользователей или гугла, блокировка по причине использования зеркальных плагинов) — это будет единственным возможным способом определить что вы находитесь на доменах Kinogo и перевести вас на зеркало, в случае блокировки
  • «Что вы делаете с моим компьютером? Почему все тормозит, меняются обои на рабочем столе и компьютер ругается на вирусы»
    Это уже из области «фантастики». Мы ничего не делаем кроме описанного выше. Все остальные жалобы которые мы получали — просто не может сделать расширение для браузера. Пожалуйста, отключите его и убедитесь что он не является причиной ваших проблем на компьютере. Мы специально оставляли комментарии в коде и делали его максимально доступным для понимания.
  • «Зачем вы собираете мои пароли, ip, домашний адрес и все страницы что я посещаю?»
    Ничего подобного не происходит. Мы действительно передаем адрес текущей страницы где вы находитесь, но только из-за описанных выше причин. Ваша поисковая история не ведется, данные о компьютере не собираются и не записываются на наших серверах. Мы постараемся в будущем усовершенствовать наше расширение и позволить вам самим в виде «опций» выбрать какой способ защиты вы хотите использовать

Вывод


Даже преследуя вполне благую цель для своих посетителей — есть шанс получить большое кол-во критики и недовольства в свой адрес. Самое главное что мы хотели показать своей статьей — мы не делаем ничего плохого. В манифесте к расширению и в описании магазина мы постарались максимально подробно всё рассказать. Код расширения не обфусцирован и не подгружает другой код с сервера.

В статье в которой назвали наше решение «вредоносным», автор не привел не одного противозаконного действия которое мы выполняем. Если наша реализация вызвала у вас вопросы или подозрения, почему вы сразу отнесли нас к «вредоносным» расширениям? Это тоже самое что считать вредоносными все программы, которые требуют для запуска права администратора. Я надеюсь текущая статья будет полезна для хабросообщества, среди которого есть и пользователи Kinogo.

Мы так же сделали определенные выводы для себя. Способ в котором мы загружаем свой скрипт на других страницах (даже ничего противозаконного не делая и вполне аргументированно) — вызывает у многих подозрение. В ближайшее время мы добавим пункт «Настройки» и возможность отключить этот тип защиты.

Спасибо за внимание и боритесь за свободный Интернет!
–9
5125

комментарии (28)

+6
musuk ,  
Мы действительно передаем адрес текущей страницы где вы находитесь, но только из-за описанных выше причин

Честно говоря, для меня не очевидно зачем его передавать все страницы на сервер и почему не передавать только их хэш?
+2
+4 –2
2potato ,  
Вы правы, почему то при создании это решение не пришло в голову. По сути нам достаточно домена либо его хеша, для определения что пользователь находится на нашем зеркале. Видимо вся проблема в недостаточном опыте создания расширения или «Аааа!!! Завтра 1 мая, нам нужно расширение как можно быстрее!!!»
+10
+11 –1
SDI ,  
Очень интересная попытка, но факт остается фактом:

1. Вы отсылаете данные о пользователе;

2. Вы вставляете скрипт на каждую страницу пользователя.

Увы, но это вынужденная мера.
В случае, если по каким то причинам будет заблокирован домен, через который мы получаем список зеркал (критично для Фокса), либо мы потеряем возможность обновлять плагин в магазине Google (по разным причинам: жалобы конкурентов, подозрения пользователей или гугла, блокировка по причине использования зеркальных плагинов) — это будет единственным возможным способом определить, что вы находитесь на доменах Kinogo и перевести вас на зеркало, в случае блокировки.

Тут Вы говорите неправду.

Для работы данного расширения необходимо:
  • получение данных для редиректа «что редиректим и на что” (ajax в фоновом скрипте)
  • выполнения данного редиректа


Дополнительно:

  • для защиты от блокировок, можно сделать несколько url для получения настроек и при надобности их динамически обновлять на новые;
  • а заблокировать могут как домен для получения настроек, так и домены скрипты на которые Вы вставляете на страницы.


Пункты 1 и 2 были до Вашей статьи. После же статьи добавились следующие:

3. Вы не можете пройти модерацию (ну или она почему затянулась, странно как другим удается) в Opera Store с аналогичным расширением (для публикации в Opera Store не нужно менять код расширения).

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

5. Вы смогли пройти “модерацию” только в Chrome Store. Там, где она практически отсутствует и работает постфактум (по наличию жалоб). Вот пример расширения спокойно живущего в Store и сразу вставляющего рекламу на сайт vk.

И немного выдранных фраз из Вашего текста + мои комментарии. Прошу прощения местами за сарказм:
Учитывая что в написании плагинов для браузера мы совсем зеленые

чудом только удалось собрать код для вставки скриптов и сбора информации, ох уж эта „зелень“
Госдума приняла так называемый новый «антипиратский» закон. Тем самым открывая для себя возможность внесудебного решения споров и блокировки сайтов «злостных нарушителей».

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

Хорошая аналогия, добавить нечего
Для Firefox все было немного сложнее, ведь их магазин почему-то выглядит заброшенным.… В связи с этим мы решили распространять xpi через сайт

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

Удивлюсь если Вы сможете протащить код в Opera Store, опубликованный 5.05.2015 в Chrome Store.

И еще раз для пользователей, читающих данный комментарий:
Ни одно расширения не имеет права скачивать произвольный код и выполнять его на любой странице.
–9
+3 –12
2potato ,   * (был изменён)
>> Правильно, законы нужно обходить

По текущей фразе я могу предположить что вы не довольны самой попыткой обойти закон, чем нашей реализацией. Вы не имеете право называть расширение «вредоносным» если не смогли этого доказать. Отправка данных о пользователе и вызов нашего скрипта на каждой странице — нельзя назвать вредоносными, это вынужденная мера, причина которой была описана в статье.

Если отмотать время назад — конечно мы бы посылали в наш скрипт только сам домен, где находится пользователь либо его хеш. Мы обязательно исправим это в следующем обновлении, это не проблема. Вот только ничего «вредоносного» мы не делаем, о чем вы трубите в своей статье.
+10
+11 –1
Helsus ,  
Вы можете выполнить произвольный код на произвольной странице, и больше тут ничего уже не надо говорить.
А оправдания звучат как «Ну и что, что мы направили на тебя заряженный пистолет, мы ведь не стреляем!»
+5
SDI ,   * (был изменён)
Вот только ничего «вредоносного» мы не делаем, о чем вы трубите в своей статье.

Просмотрел все свои комментарии и статью. Слово «вредоносный» было упомянуто мной 1 раз (причем не прямо к Вашему расширению, а в продолжение темы разбора расширений). Для сравнения Вами же только в прошлом комментарии — 3 раза.
Есть интересная пословица: «На вору и шапка горит».

Причем вывод по данному расширению в статье специально не сделан. Но, замечание принято, статью подправлю.

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

Или Вы против того, чтобы пользователи знали возможности того, что устанавливают?
–3
+3 –6
2potato ,  
Мы совершенно не против вашего обзора, он сделан очень толково.

Просто нас задело использование данного слова в вашей статье, поэтому я стараюсь сфокусировать ваш взгляд на это. Вы делаете очень хорошее дело, вы действительно не сделали какого либо негативного «вердикта» после обзора и за это спасибо. Для нас было бы очень важно что бы в своей статье вы всё таки указали что расширение выполняет свою основную задачу — уход от блокировки основного домена, что зеркала подгружаются в Фокс версии и всё это не глобальный обман пользователя.

Понимаете, само появление таких статей у «не просвещенных» пользователей может вызвать панику, даже без «отрицательного вердикта». Как вы видели по комментарием — нас уже успели обвинить в отправке сообщений в контакте, создании какой то сессии и тп. Для нас очень важна репутация нашего расширения и портала Киного
+7
+9 –2
Dolios ,  
О какой репутации вы говорите? Вы занимаетесь противозаконной деятельностью (из-за чего вполне обоснованно ждете блокировок), у вас на сайте нет никаких реальных контактов. Только не надо сказок про свободный интернет, вы не энтузиасты, вы деньги зарабатываете.
А это значит, что в любой момент ваше расширение может начать воровать пароли и уводить деньги со счетов. Именно об этом говорит ваша репутация.
0
+4 –4
2potato ,   * (был изменён)
Причем тут наша репутация? Естественно мы не трубим на каждом углу наши контакты, всем известен закон РФ. Мы не выдаем себя за меценатов и не работаем за идею. Наш портал полезен для людей которые хотят смотреть фильмы онлайн бесплатно, за это мы получаем пару копеек с рекламы (при этом идем на определенные риски). Выбранное нами направление не относит нас автоматически в категорию «любой момент ваше расширение может начать воровать пароли и уводить деньги со счетов».
+1
freylis ,  
Выбранное нами направление не относит нас автоматически в категорию «любой момент ваше расширение может начать воровать пароли и уводить деньги со счетов»

В том-то и дело, что относит. Вы загружаете скрипт, содержание которого может поменяться в любой момент. Никто не пытается вас обвинить в том, что вы это действительно сделаете, речь о том, что у вас есть полноценная возможность сделать это и это само по себе уже не хорошо. Просто у людей есть полное право вам не доверять
0
+3 –3
2potato ,  
Многие программы требуют права администратора на вашем компьютере, вы сами решаете доверять такой программе или нет. Вы смотрите подписана она сертификатом, распространяется ли доверенным сайтом и тп. Аналогично этому действуем и мы. Мы крупный портал, мы оповестили в манифесте что работаем на каждой странице и даже распространяемся только через наш сайт. Дальше пользователь сам решает доверять нам или нет. Мы даже в описании расширения в магазине сказали «В случае если основная защита которая должна переводить вас на доступное зеркало не сработает — мы оставляем за собой право сделать это путем анализа текущей посещаемой страницы (по домену)».

Конечно, мы получаем много возможностей из-за этого подхода, в том числе потенциально не безопасных для пользователя. С другой стороны мы крупный портал, любая попытка с нашей стороны сделать что то «вредоносное» — сразу будет представлена общественности.
+1
+3 –2
zxcabs ,  
Да только что то там не указано: «что мы можем выполнить любой код на любой странице, ну например что нибудь интересное на странице онлайн банка, но мы же крупный портал, нам можно верить, мы не делаем ничего противозаконного и в случае чего все наши контакты известны, и вы легко сможете предъявить нам претензии. Ну и конечно если нас прижмут и закроют, мы конечно же удалим все наши расширения, и даже не подумаем ими воспользоваться или продать на сторону, мы же крупный портал и дорожим нашей репутацией».
–2
+2 –4
2potato ,  
Мы уже написали выше что согласны с тем что данный подход может восприниматься негативно пользователями и согласились в следующей версии добавить опция включать это вручную. По умолчанию мы выключим работу управляющего скрипта на всех страницах. По поводу вашего комментария «можем выполнять и выполняем» — разные вещи.
0
and7ey ,  
Имхо, правильным было бы следующее завершение статьи — «будем рады советам, которые помогут нам сделать расширения, которые не будут выглядеть вредоносными (и иметь возможность сделать что-нибудь плохое), но помогут нам достичь нашей цели».
+1
AndreWin ,  
Учитывая что в написании плагинов для браузера мы совсем зеленые

Краткий ясный ответ, что к чему. Надеюсь, с помощью хабрасообщества разработчикам удастся получить нормальное расширение.
0
monolithed ,  
Кстати на сайте много хороших сериалов с профессиональной озвучкой (не от прокатчиков — их фиг дождешься) и полное отсутствие рекламы для зарегистрированных пользователей.

PS: Знаю вас давно, но посоветовал жене не ставить расширение от греха по дальше :)
+1
ValdikSS ,  
Так я и не понял, зачем вы встраиваете скрипт на каждую страницу-то? Есть какие-то проблемы, если ограничить действие скрипта только на один домен?
Зачем вы сделали свое расширение, а не использовали любое готовое?
Будете реализовывать обход блокировки запрещенного сайта вебмастером без настроек и ПО на стороне клиента?
0
2potato ,   * (был изменён)
>> Есть какие-то проблемы, если ограничить действие скрипта только на один домен?

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

>> Так я и не понял, зачем вы встраиваете скрипт на каждую страницу-то?

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

>> Зачем вы сделали свое расширение, а не использовали любое готовое?

Планируется что текущее расширение обрастет полезными функциями для пользователей Киного

>> Будете реализовывать обход блокировки

Спасибо за ссылку, почитаю.
+2
esc ,  
Учитывая десятки предложений, поступающих российским киносайтам по созданию таких расширений (иногда платно но дешево, иногда бесплатно), появилась какая-то новая партнерка по сбору данных о пользователях. Предложения поступили буквально в рамках прошлой недели.

Попросил скинуть пару таких предложений, все сделаны по образу и подобию киного, оба готовы собирать данные о каждой посещенной странице. Конечно, только потому, что иначе не придумали как домен проверить, угу.
–2
2potato ,  
Извините, но это уже паранойя.
У вас есть хоть одна внятная версия для чего нам история ваших посещений?
0
esc ,  
Да, без проблем, такую информацию купят исследовательские компании, которые используют данные тулбаров (типа similarweb или Алексы, только локальные).

Купят рекламные сети, особенно данные о поле/возврасте, которые можно потырить из социалок. Или даже аккаунты конкретных пользователей, которые что-то делали на сайте их клиентов, например. На это реально есть спрос в рунете.

Но это такое дело, вреда сравнительно немного.

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

вспомните letitbit, когда он запускался…
–1
2potato ,  
А почему вы не рассматриваете вариант что портал просто хочет не потерять пару миллионов аудитории? Почему сразу мы должны что то воровать, продавать, собирать какую то статистику и тп?
–2
Kamikaze ,  
Этакая вариация на Закон Мерфи, «если есть возможность воровать, продавать, собирать статистику — будут воровать, продавать, собирать статистику»
+4
esc ,  
Ну не настолько я наивен чтобы в это верить. Когда начинают массово ломиться и предлагать бесплатно сделать для сайтов расширения, то логично что народ нашел нишу и пытается побыстрее на ней заработать, пока не прикрыли или конкурентов не набежало.

Покупатели на статистику есть, статистику можно собрать, логично предположить что статистику будут продавать. Рекламу ж на сайте продают, в том числе и весьма мерзкую, почему это не будут?

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

Прецедентов много-много. Почему конкретный киного будет исключением — ХЗ.
0
23rd ,  
Заявку в магазин Оперы мы так же отправили и сейчас всё еще ждем пока наш плагин проверят. Очень жаль, что расширения из Google Store не могут быть установлены в этом прекрасном браузере.

Ну что же вы, Семён Семёныч.
Opera на новом движке почти с первых своих дней имеет расширение , которое позволяет ставить расширения от Хрома.

Но вообще в Опере крайне жёсткая модерация. Сомневаюсь, что ваше расширение появится там в нынешнем виде.
0
2potato ,  
Увы, но для последней оперы это не работает
0
Master_Dante ,   * (был изменён)
Давно посещаю ваш сайт и пользуясь случаем я хочу предложить пару конструктивных тасков.

— Добавьте рейтинг фильма кинопоиск + ссылку на страницу фильма на кинопоиске.
— Добавьте бюджет фильма. К сожалению на вашем сайте часто появляется низкобюджетный треш. Я низкобюджетные фильмы не смотрю принципиально, т.к. хороший фильм нельзя снять за три копейки.
— Регистрация при первом комментировании, берете мыло из соц. сети и регаете юзера у себя, пароль можно выслать на почту. Главное что бы комментировать я мог сразу.
— Каталог по категориям. Допустим я хочу видеть фантастику, но не хочу что бы это была мелодрама, или мультик, или сериал, хочу только полнометраж. Причем выбрать сортировку по времени выпуска, и фильтр по бюджету или по рейтингу кинопоиска.
0
2potato ,  
Спасибо за предложения, передал начальству на утверждение