Почему современный Web для меня недоступен и мёртв? Под современным Web я понимаю распределённую систему раздачи закрытого исполняемого кода. Под старым добрым Web я понимаю распределённую систему раздачи документов. Прежде мы использовали броузеры чтобы по стандартизованным протоколам получать документы, такие как HTML и сопутствующие им изображения например. А также заполнять формы, делать запросы, в общем иметь достаточный для большинства задач интерактив. Сейчас наши броузеры используются для прозрачного скачивания исполняемого кода и его выполнения в виртуальной машине броузера. Если человек хочет использовать только свободное ПО, то современный Web для него неприемлемый вариант, так как сайты распространяют закрытый код (обфускация, WebAssembly, и т.д.). Это также и угроза безопасности: заход на современный Web-сайт идентичен скачиванию исполняемого .exe и его запуску. Виртуальная машина не может кардинально помочь в изоляции вредоносного кода: особенности работы большинства процессоров позволяют читать и => изменять данные в произвольных местах оперативной памяти, даже из JavaScript программы запускаемой внутри броузера под виртуальной машиной другой операционной системы. Кроме того, размер и скорость изменения кода броузеров настолько велики, что в нём не может быть хоть сколько-то пристального аудита и мы постоянно из года в год видим множество уязвимостей, когда JavaScript код может вылезть за пределы броузера или хотя бы контекста сайта в котором он работает. По сути, современный броузер это средство удалённого управления вашим компьютером. Зашёл на сайт, он тебе дал код который броузер автоматически прозрачно скачивает и исполняет. Код может скомпрометировать всё что есть на компьютере, так как нет ни одной *рабочей* защиты от вредоносного кода. => WWW -- наихудший магазин приложений! Может создатели сайтов всё это делают не со зла? Всё же ещё много сайтов остаются рабочими даже без включённого исполнения кода (отключённого JavaScript). В 99% случаев, если отключить JavaScript: исчезнет реклама и куча систем слежки, сбора данных, телеметрии, счётчиков посещений (всё это одно и то же). То есть, в 99% случаев этот JavaScript (+WebAssembly и всё смежное с ними) используется явно не для благих целей пользователей, а для нарушения их приватности. Может быть создатели броузеров всё же стараются обеспечивать нашу приватность и безопасность? Отнюдь, ведь сами же эти броузеры её первым делом активно и нарушают, плюс используют для подсовывания рекламы, а также для политических игр. Плюс они старательно запрещают и мешают установке дополнений/кода который бы не был скачан с их централизованных цензурируемых ресурсов: => Google запретила установку дополнений для Chrome со сторонних ресурсов => Все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla => Mozilla использует Google Analytics в менеджере дополнений Firefox => Эксперимент Mozilla приведёт к утечке данных вводимых в адресной строке Firefox => В Firefox планируют реализовать анонимный сбор статистики о посещаемых сайтах => Релиз Firefox 56 с автоматически включённой телеметрией => Mozilla воспользовалась push-уведомлениями для распространения политической рекламы в Firefox => Chrome автоматически делает login броузера при login на Google ресурсы => Firefox автоматически делает массу подключений во вне: проверка автообнолений, обновление blocklist-ов, обновление списка фишинговых и политически неугодных сайтов, скачивание ссылки до перехода на неё, DNS запросы просто когда упомянут где-то домен, подключение к серверам до того как пользователь явно сказал перейти на них, скачивание списка расширений => автоматически включённый DoH в Firefox => и в Chrome Ссылок про Chrome/Chromium меньше, просто потому что они с самого начала делали всю эту "телеметрию" и особо не скрывали что по полной следят за пользователем. Apple броузеры => аналогично проводят слежку. Но в Apple мире => слежка и => цензура устраиваются на уровне вообще всей ОС. Из популярных броузеров нет ни одного, кто действительно бы уважал приватность. Безопасность, при таком объёме часто изменяемого кода, практически невозможно с технической точки зрения обеспечить. Броузеры, по факту, являются первостепенными нарушителями приватности и они из года в год затачиваются под постоянную слежку за всеми действиями пользователей. От версии к версии, в броузерах пропадает функционал по управлению cookies или даже доверенными X.509 сертификатами. Если не пропадает, то через менюшки штатно его уже не получить. Чтобы ограничить возможность контроля пользователя над своими действиями и ресурсами которые он хочет посещать. Хорошо, Chrome/Chromium с самого начала не могли рассматриваться из-за проблем с приватностью. Но почему не взять ещё "не испорченную" версию Firefox? Я не раз встречался с тем, что современный JS код просто не будет под ней работать. Если не обновлять броузер раз в 1-2 года, то все новые (и обновлённые) JS-поделки не будут работать. А взять версию не настолько старую, но выпилить из неё слежку и цензуру? API Firefox менялся так часто и кардинально, что прежде мною используемые плагины (Pentadactyl главным образом) уже не работают. Использовать броузер без него проблематично -- это мука. Более того, современный Firefox невозможно собрать без скачивания из Интернета бинарного исполняемого файла: для сборки нужен Rust, который не собрать по другому. mrustc пытается сделать сборку без этого бинарника (кем, как когда, с какими backdoor-ами собран?), но под FreeBSD мне так и не удалось его завести и авторы Rust не парятся по этому поводу. Да и вроде бы Firefox перестал поддерживать OSS, что означает отсутствие звука в FreeBSD. * Современный JS-код будет работать только с современными броузерами * Их всего полтора: Chromium и Firefox, под которым уже далеко не всё работает * Собрать Firefox из-за Rust невозможно на FreeBSD * В любом случае, использование любого из этих двух броузеров -- это возможность удалённого управления вашим компьютером * Плюс слежка за всеми действиями * Плюс удалённо управляемая цензура, регулирующая куда и как вы можете ходить и что делать Раньше я писал немного более детально про JavaScript: => Почему же я так не люблю всё что связано с JS? => Может нам слегка успокоиться с JavaScript? => Современный Web становится почти неюзабельным => Почему end-to-end шифрование невозможно в броузере (как и вся криптография) Что бы я мог предложить как решение, когда всё же не хватает Web 1.0 технологий? Или предложить как решение, но не требующее запуска у себя проприетарного ПО? Я бы предложил делать аналог BBS-ок: они не предлагали качать какой-то интерпретируемый код для своей работы -- они просто предоставляли удалённый доступ, просто такой telnet. Современный Web-сайт, раз перехватывает нажатия клавиш, раз в нём нет "документов", то в нём всё равно не будет работать поиск ("/" в Pentadactyl), не будет работать pgUp/Down, копирование в буфер обмена, сохранение HTML-страницы, чтобы в offline посмотреть -- раз всё равно ни черта в нём не работает, то можно было бы предоставить VNC/X11-like удалённый доступ до сервера с запущенным приложением. Разработчики приложения вообще могут писать его на чём угодно, а мы использовать эти приложения просто по VNC/X11, ничем не жертвуя в плане удобства (всё равно ни черта не работает функционал броузеров как прежде), зато не запуская у себя никакого ПО извне. Плюс, я мог бы поспорить что и трафик это могло бы сэкономить, при хорошем сжатии графики, ибо 10мин FullHD запись экрана работы за компьютером у меня в VP9-lossless заняла 22.5MiB всего, для примера. А X11-like в теории вообще может занимать копейки, при сжатии растровых изображений.