company_banner

Первый мобильный браузер с поддержкой расширений для Chromium. Новая альфа Яндекс.Браузера

    Современные мобильные браузеры, как и их десктопные аналоги, должны позволять пользователям добавлять недостающие возможности с помощью дополнений. Несмотря на отказ команды Chromium от идеи поддержки расширений на Android, наша команда продолжает работать над этой возможностью, и сегодня мы приглашаем сообщество Хабра попробовать первую альфу Яндекс.Браузера, в которую вы уже сможете установить LastPass, Tampermonkey или даже Ghostery.

    image

    Первые дополнения появились в Internet Explorer еще в 1999 году и за следующее десятилетие практика открытия доступа к API стала обязательной для любого более-менее популярного браузера. Сейчас многие из нас не представляют себе работу за компьютером без возможности добавить в браузер необходимую функцию собственными руками. А вот с Android пока еще все не так. Несмотря на рост производительности современных мобильных устройств, браузерные расширения на Android – скорее исключение, чем правило.

    Мобильные браузеры не всегда воспринимались пользователями всерьез. Во времена медленного интернета и слабых мобильных устройств люди предпочитали решать свои задачи с помощью компьютера. Сейчас их отношение постепенно меняется. Нас все чаще просят добавить в продукт специфичные функции и инструменты. Что-то из этого мы встраиваем в Яндекс.Браузер (например, режим чтения и переводчик). Но многие из запросов было бы логично решить с помощью сторонних дополнений, а не перегружать Браузер. Добавим к этому традиционную просьбу поддержать дополнения на Android, которую достаточно часто присылают через обратную связь. В общем, мы стали не закрывать глаза на изменения вокруг и приступили к разработке.

    Поддержать дополнения в браузере на Android можно двумя способами. Можно предусмотреть API, с которым бы работали другие приложения из Google Play. Эта практика уже многим знакома: например, кодеки для видеоплееров зачастую распространяются в виде отдельных приложений. Мы и сами нечто подобное совсем недавно сделали с блокировкой рекламы. У этого подхода есть два больших минуса: отсутствие дополнений на старте и необходимость создавать свой велосипед, который был бы несовместим с дополнениями для настольной версии браузера. А нам бы хотелось, чтобы люди могли использовать на Android те же инструменты, к которым они привыкли на компьютере.

    В чем заключается второй способ, вы уже догадались. Расширения для Chrome и других браузеров на основе Chromium появились в начале 2010 года, и тысячи разработчиков со всего мира в течение всех этих лет создавали собственные инструменты. Яндекс.Браузер, несмотря на функциональные отличия, также основан на Chromium и поддерживает установку дополнений на компьютере. И вполне логично в этой ситуации распространить поддержку еще и на Android. До нас этого никто не сделал, но какие тут могут быть сложности, ведь на Windows все работает?



    Сначала может показаться, что все проблемы в отсутствии интерфейса для дополнений. Этого кода и правда нет в проекте, но мы изначально использовали собственный интерфейс, поэтому так нам было даже проще. Но нарисовать интерфейс – это капля в море, основные трудности связаны не с ним.

    Когда мы попробовали собрать Яндекс.Браузер для Android с флагом enable_extensions, то получили порядка 600 ошибок совместимости. Флаг включения расширений, как и отвечающий за них код, был до мозга костей завязан на специфичное для десктопа окружение. Небольшой пример для любопытных разработчиков. Возьмем объект Browser. Browser – центральный контроллер UI десктопного браузера. Он содержит много чего интересного, в том числе модель TabStripModel, которая активно используется дополнениями для работы с вкладками. Но под Android все это не собирается. Мы начинаем тянуть за одну нить, а вытягиваем целый ворох несовместимостей. И так на каждом шагу.

    Платформа расширений за 6 лет обросла большим количеством API. И у каждого из них могут быть десятки методов со своей непредсказуемой работой на Android. Поэтому для начала мы поддержали наиболее востребованные возможности, которых вполне достаточно для того, чтобы уже в альфе заработали такие дополнения, как Evernote, LastPass, Ghostery, SaveFrom.net, Tampermonkey, Яндекс.Погода и многие другие. Кстати, с этим нам помогли разработчики популярных дополнений, которых примерно месяц назад мы пригласили на закрытое тестирование ранних сборок. Чтобы им было проще ориентироваться в наших возможностях, мы написали диагностическое расширение, которое формирует наглядный отчет.



    Что касается источников дополнений, то тут мы традиционно не ограничиваем людей каким-то одним каталогом и поддерживаем установку из Chrome Web Store, Opera Addons, собственного раздела рекомендованных дополнений, по inline-ссылкам или просто из каталога на SD-карте.



    В заключение несколько слов о безопасности. Наша реализация дополнений на Android полностью соответствует общепринятой модели, т.е. дополнения работают в «песочнице» и изолированы как от остальной части браузера, так и от операционной системы. К тому же, как и на десктопе, мы умеем блокировать известные вредоносные разработки.

    Установить альфа-версию Яндекс.Браузера можно из Google Play. После второго холодного запуска (особенность альфы) в настройках вы найдете целый раздел, посвященный дополнениям. Мы были бы благодарны сообществу Хабра за отзывы и идеи.
    Яндекс 511,76
    Как мы делаем Яндекс
    Поделиться публикацией
    Комментарии 74
    • +4
      А uBlock работает?
      • +4
        Попытался поставить из магазина Opera. Возникла ошибка «Заблокировано администратором».
        • –5
          У нас сейчас целых два способа для блокировки рекламы: встроенная кнопка скрытия рекламы в меню (тоже только в альфе) и еще полноценное API, которое уже поддерживают Adguard, ABP и некоторые другие https://tech.yandex.ru/browser/contentblocker/. Стоит ли поддерживать третий способ, который по определению окажется менее производительным и более требовательным к ресурсам? Сложный вопрос.
          • +22
            Кнопка скрытия рекламы почему-то оставила только рекламу яндекса =)
            • 0
              Для кнопки в меню никакого «белого списка» нет. В этом ее смысл. Скрыть и сообщить нам о том, что пользователю не нравится, чтобы дальше мы научили браузер с помощью машинного обучения понимать что хорошо, а что нет.

              Но фильтры сейчас работают не всегда так, как должны. Это именно техническая ошибка (согласен, выглядит очень подозрительно, но все проще).
              • +13
                Конечно все проще, вы просто оставили свою рекламу :)
                • +1
                  В соседнем комментарии я рассказал об исключениях в способе с API. Обманывать для способа с кнопкой нет никакого смысла :)
                  • 0
                    Все. Теперь скрывается. Причина была в фильтрах, которые не были ориентированы на рунет.
                  • +1

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

                    • +2
                      image
                      • +12
                        На всякий случай напишу, что это не Директ.
                        • +1
                          вот у меня сейчас директ по ссылке привел на агрегатор других магазинов, в котором ссылка привела на явных мошенников.
                          я написал в агрегатор, написал в директ.
                          вопрос: как и кто за это отвечать будет, а?
                          я предугадаю отве от яндексат: за рекламу отвечают те то. а те мне ответят, что они за чужой магаз не отвечают.

                          Так вот, реальная защита пользователей требует ответственности на каждом этапе. Ваш директ ни за что не отвечает. Так что не надо распинаться, что вы и без адблока справитесь.
                        • 0
                          И у гугла тоже…
                    • 0
                      Попробуйте новую альфу. Теперь Директ скрывается. Причина была в международных фильтрах, которые не слишком хорошо работали с рунетом.
                    • +11
                      Я правильно понимаю, что ваше API для Adguard сознательно пропускает рекламу от Яндекс. Директ?
                      • +1
                        В способе с API сейчас действительно есть список исключений. В нём находится Директ, потому что мы следим за качеством рекламы в Директе самостоятельно, как по сигналам из крестика у каждого объявления, так и по сигналам от новой функции жалобы на рекламу из меню мобильного браузера, у которой нет списка исключений и которая в том числе действует и на Директ.
                        • +2
                          Хорошо следите.
                          Картиночка
                          image
                          • +2
                            Видимо, в Яндексе премодерация отсутствует полностью…
                          • +3
                            В способе с API сейчас действительно есть список исключений.


                            «я хочу блокировать всю рекламу без исключения. Уж поверьте, вы от этого денег не потеряете, ибо я в принципе не кликаю на рекламу.» © любой человек который ставит блокировщик рекламы.
                            • +3
                              любой человек который ставит блокировщик рекламы.


                              Это не так. Согласно нашим исследованиям, многие пользователи блокировщиков не против рекламы вообще, но устанавливают их из-за мошеннической, шок-рекламы, попап окон «Вы победитель!» и прочих подобных форматов.
                              • +2
                                Так и есть. И, уж простите, этого добра в директе предостаточно.
                                • +3
                                  я, блин, в свое время задолбался писать в ТП по поводу явно мошеннических сайтов именно в рекламных блоках.
                                  когда по запросу определенного сотового телефона выходила одна ссылка на самсунг, одна на нормальный магазин и штуки три — явные разводы.
                                  угадайте, менялось ли что после ответов вашей ТП?
                                  «мы следим за качеством рекламы в Директе самостоятельно», на самом деле — НЕТ.
                                  • 0
                                    Простите, а можно как-нибудь где-нибудь эти исследования почитать? Хочу таблицы, графики и простыни.
                                    • 0
                                      Не уверен, что оно где-то снаружи опубликовано. Мы его для собственного понимания ситуации проводили.
                                      • 0
                                        Вам пресс-служба всё равно не разрешит сказать правду, так что давайте я скажу за Вас:
                                        Яндекс браузер готов содействовать блокировке рекламы, но только не директа. Какой бы она ни была — деньги не пахнут.
                                        • 0
                                          В способе с блокировкой рекламы через кнопку в меню у Директа нет никакой специальной защиты.
                                • 0

                                  Только "следите за качеством рекламы"? Денег за показы/клики видимо не берете.

                                  • 0
                                    А как из него исключить Директ?
                                    • 0
                                      Написать Хром- (или скрипт для TamperMonkey) расширение, которое будет в оставшемся по второму кругу исключать Директ.
                                • 0
                                  Ценность и главное отличие способа uBlock в том, что он блокирует ВСЮ рекламу, безо всяких белых списокв, как это происходит сейчас. Если уж делаете полноценную поддержку десктопных расширений, делайте её для всех. К слову, uBlock является куда более производительным чем тот же ABP, про который вы говорили.
                                  • 0
                                    Я говорил про производительность API и нативного решения. Ни один способ с расширениями с ним не сравнится в этом плане.
                              • +8
                                Думал в Google быстрее это сделают, а тут на тебе. Неожиданно. Будем тестить
                                • +2
                                  а зачем это гуглу на подчиненной ему ОС-ке?
                                  пчелы против меда?
                                  • 0
                                    Если появится везде, то появится и у гугла, чтобы не терять аудиторию.
                                    Но первыми это делать им не выгодно: не только затраты на разработку, но и вред от снижения доходов на рекламе.
                                  • +1
                                    А можете добавить такую вещь — возможность для какого-либо расширения поставить его локальное состояние, чтобы оно не синхронизировалось для конкретного расширения, как пример — расширение frigate — дома я его обычно все время включаю, а на работе оно не нужно совершенно.
                                    • 0
                                      Уточню. Вы про то, чтобы на одном устройстве расширение было включено, но на другом выключено?
                                      • 0
                                        Да, верно. Но чтобы при этом не нужно было отключать синхронизацию остальных расширений.
                                    • 0
                                      В гугловом мобильном chrome, не смотря на «происки конкурентов», думаю еще очень не скоро появится поддержка расширений, если вообще появится.
                                      Они скорее заблокируют в play store все, что позволяет блокировать рекламу.
                                      • +1
                                        Lastpass пошёл на адаптацию плагина под мобильный браузер? Мне помнится, они хотели денег за мобильное приложение.
                                        • +5
                                          Для многих расширений адаптации вообще не понадобилось.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                          • +1

                                            А под ios такое возможно/легально/запланировано?
                                            Кстати, помнится был/есть Dolphin браузер на андроид. В нём поддержка расширений была ещё года три назад.

                                            • +2
                                              Dolphin, насколько я помню, поддерживает свои дополнения, созданные для себя на Android. Здесь же речь о поддержке тех же расширений, что опубликованы в Chrome Web Store и Opera Addons. Т.е. совместимые с Chromium.

                                              На iOS сейчас планов нет. Платформа имеет свои особенности, к тому же нужно для начала посмотреть, как эта идея будет работать на Android.
                                            • 0
                                              Работает-ли в Крыму Chrome Web Store? Тот же Гугл отключил Google Play для крмычан, хотя через vpn приложения можно обойти без особого труда.
                                              • +2
                                                Честно говоря, не знаю. У нас на этот случай есть еще два каталога.
                                                • 0
                                                  Как и плей маркет, работает но только через vpn
                                                  • 0
                                                    Нет, не работает. Каталог Оперы работает, но там, конечно, выбор поменьше.
                                                  • 0

                                                    А как (если можно, "на пальцах") работает проверка совместимости дополнений?
                                                    К примеру, для Chrome есть замечательный аддон "The Great Suspender", который выгружает из памяти неиспользуемые вкладки, экономя RAM. Очевидно (по крайней мере, мне), что на Android этот механизм работает совсем иначе, к тому же, Яндекс.Браузер сам занимается выгрузкой вкладок (и опять я жалею, что вы угробили "умный кэш", который кластерный).


                                                    Как в этом случае будет себя вести браузер при попытке установить The Great Suspender?
                                                    а) Скажет, что "дополнение несовместимо"
                                                    б) Установит, но оно не будет работать
                                                    в) Установит, и оно будет работать неправильно / приведёт к падению
                                                    г) Другое

                                                    • 0
                                                      Оно установилось и как-то даже работало. Но не факт, что так, как надо :) Нужно детально исследовать.

                                                      Если дополнение заведомо использует API, которые мы не поддерживаем, то оно просто не установится.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                      • 0

                                                        Заголовок целиком и полностью правдив — поддержки расширений для Chromium и правда в мобильных браузерах не было. А вот мобильный Firefox вполне неплохо поддерживает аддоны от десктопного (с небольшими изменениями, видимо, но не суть) с самого начала.

                                                        • +5
                                                          ЯБ научился запускать расширения — научатся и другие, и это здорово.
                                                          • –1
                                                            Ну не факт, что ПЕРВЫЙ мобильный браузер с поддержкой Chromium расширений. Как известно, не так давно в Firefox была добавлена поддержка WebExtentions, а в недавней статье описано, как с помощью специального дополнения можно устанавливать Chromium расширения. Правда, в мобильной версии Firefox не отображаются иконки Chromium расширений, но работающие сами по себе расширения вполне могли бы работать.
                                                            • +1
                                                              Это все же портирование, а не прямая установка.
                                                              • –1
                                                                С одной стороны — да. С другой — в процессе конвертирования по сути только меняются несколько строк в манифесте и перепаковывается в тот же zip архив, переименованный в другое разрешение.
                                                            • 0
                                                              BarakAdama, у вас на сайте есть анонс этой фичи? Если есть на английском, будет замечательно.
                                                            • 0

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

                                                              • +1
                                                                А можно просто кеширование сделать?.. Вымораживает, что на девайсе с несколькими гигами памяти страницы перезагружаются, если перейти в другое приложение и вернуться в браузер. Причем обидно, что сначала показывают превью страницы, а потом белый экран и загрузка страницы заново. А интернета уже может и не быть.
                                                                • +1
                                                                  Мы даже сделали его. Потом нашли проблемы и ушли переосмысливать идею.
                                                                  • +1
                                                                    Да, читал, но так на Андроиде и не увидел в хоть как-то работающем виде. Но почему-то у Dolphin, если все правильно помню, все давно получилось. До сих пор помню, как года четыре назад загрузил простым релоадом в аэропорту 15 страниц случайных цитат баша, и читал их потом на борту.
                                                                • 0
                                                                  Хорошо бы что бы Anonymox стал работать на мобильных браузерах…
                                                                  • 0
                                                                    Свои наработки вернули в upstream?
                                                                    • +1
                                                                      Чтобы что-то «вернуть», надо чтобы с той стороны захотели их принять, т.е. чтобы в Google поменяли свои планы на Chrome. Это что касается расширений. А вообще мы апстримим, конечно же. Вот хороший пример.
                                                                    • +1
                                                                      Даже скачаю ради этого альфу! Надеюсь она не очень глючит)
                                                                      • +4
                                                                        Если кликаю крестик на рекламе гугла меня вежливо спрашивают что не понравилось, отвечаю, мне не сложно.
                                                                        Если кликаю крестик на рекламе яндекс открывается новая вкладка, КАРЛ!!! Я не знаю что на этой вкладке яндекс от меня хочет, потому что сразу её закрываю и такие рекламные блоки сразу в банерорезку.
                                                                        • –2
                                                                          Firefox
                                                                          • +1
                                                                            Шаг, действительно, значимый, потому что до сих пор вообще расширения в мобильных поддерживал Firefox Mobile, да и то лишь отдельные расширения для мобильных браузеров (если у разработчика дошли руки его сделать).

                                                                            Для Dolphin пишут тоже собственные дополения — http://www.dolphin-browser.com/android/addons/index.html?from=mobile_official_website&l=en_US, годящиеся для этого браузера.
                                                                            • 0
                                                                              Мобильная версия FireFox давно поддерживает расширения.
                                                                              • 0
                                                                                Никто с этим не спорит. Мобильный Firefox поддерживает свои мобильные расширения. Dolphin поддерживает свои мобильные расширения. А Яндекс.Браузер поддержал установку десктопных расширений для Chromium.
                                                                              • 0
                                                                                Наконец-то!
                                                                                • 0
                                                                                  Моё расширение nnru отлично работает! Спасибо громадное.

                                                                                  Правда, не влазит на экран, поэтому впереди много работы по стилизации.
                                                                                  • 0
                                                                                    Для больших попапов мы хотим скролл добавить.
                                                                                    • 0
                                                                                      Баг. Отчего-то в поле ввода текста не всплывает клавиатурка.

                                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                Самое читаемое