Народный браузер — каким он мог бы быть?

от автора

image

Добрый день! Меня зовут Тимур и я программист.

В прошлой статье я сделал анонс сборки Хромиума — Ultimatum, и несмотря на то что обсуждения на хабре слегка потеряли градус (по сравнению с обсуждениями 5-10 летней давности) — пара неплохих идей все таки всплыла. Собственно этой статьей я рассчитываю поднять интерес к теме и попытаться понять на какие фичи у людей есть реальный запрос.

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

Для начала расскажу какие планы развития уже есть (без приоритетов — это просто список того что я рассчитываю сделать):

  • пробросить в api webextensions прямой доступ к сети, tcp и udp модули, сначала клиентов но вполне возможно что потом будет возможность слушать сокеты
  • пробросить в api webextensions прямой доступ к файловой системе (код в хромиуме уже есть для web app, надо по нему просто немного пройтись напильником)

Эти две фичи ставят такую сборку на один уровень с электроном, по сути после их реализации электрон теряет аргументы для своего существования

  • развитие антидетект браузера

    • webextensions api: доступ ко всем indexedDB со всеми origins (аналогичо localStorages api)
    • webextensions api: доступ ко всем CacheStorage со всеми origins (оно построено поверх disk_cache который мы уже умеем, но там еще нужно уметь сохранять информацию о bucket-ах, то есть проброс к этим кешам в api diskCache проблему не решит, нужно отдельное api)

  • развитие web3.0

    • интегрировать hashNet с атрибутом integrity, этот атрибут является сам по себе uri. Для начала для тех тегов где этот аттрибут уже предусмотрен стандартом, в дальнейшем возможно добавить его к другим тегам. Интреграция подразумевает под собой запрос ресурса с таким тегом из хэшнет (в случае если оригинальный источник недоступен или лагает а имеющиеся hashNet агенты имеют меньший пинг)
    • дать возможность пользователям раздавать закешированный контент полученный как из обычного web-а так и из hashNet другим пользователям hashNet — то есть при желании каждый браузер может выполнять роль наподобие торрент-трекера и раздачи
    • интеграция с торрентами — что то вроде webTorrent-ов только через hashNet, с возможностью использования этих ресурсов в html
    • добавить в chromium поддержку STUN серверов (причем код в хромиум уже есть, надо только до него дотянуться и пробросить в js)

Из обсуждения в предыдущей статье:

  • пробросить в webextensions api возможность скрывать/возвращать обратно любой таб (без выгрузки из памяти) — дает возможность писать расширения реализующие логику группировки табов любой сложности
  • в настройки браузера? (или в webextensions) добавить возможность работать с сертификатами, в частности указывать домены на которых сертификат может/не может участвовать в цепочке доверия (спасибо iassasin за идею)
  • возможность управлять выгрузкой/кешированием открытых страниц (кому-то хочется иметь возможность выгружать их из памяти, кто-то наоборот хочет что бы они всегда были под рукой seraz, V1RuS) — тут будет сложновато но попробовать стоит. Управление кешированием по сути уже покрыто имеющимися возможностями — доступ к http кешу у нас есть + urlRequest api позволяет перехватывать запросы и подменять ответы, этого уже достаточно что бы писать интересные вещи

Из моего опыта практического применения этой сборки:

  • webextensions api: возможность триггерить trusted events (нужно при различных автоматизациях, да, в том числе и авторегистрация на сайтах и это далеко не всегда что то плохое)
  • управление курсором в рамках окна браузера (мотивация та же что и в предыдущем пункте)
  • генерация событий клавиатуры (имитация ввода) — мотивация та же что в предыдущих двух пунктах)

Эти три фичи являются базисом для инструментов автоматизации процессов, что то вроде PyAutoGUI в браузере.

  • исправить проверку апдейтов расширений установленных не из сторов (сейчас можно устанавливать расширения с любого сайта но апдейты не работают)

Из обсуждения этой статьи:

  • DOM манипуляции — делать DOM элемент инжектнутый расширением невидимым для js страницы И управлять видимостью DOM из расширения (скрывать рекламные блоки, unreal_undead2
    ) — вроде бы такая возможность есть и сейчас, но пусть пока полежит тут.

  • Реализация Containers как в Firefox: возможность программно (с webextensions) задать окружение для каждого таба/фрейма — куки, кеш, storages. Revertis

Вроде бы ничего не забыл.

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

Собственно все из планов, давайте обсудим что еще из полезного могло бы быть в браузере. Любые фантазии, любые хотелки — это мозгошторм, и есть ненулевые шансы что эти фантазии будут реализованы.


ссылка на оригинал статьи https://habr.com/ru/articles/865312/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *