Приветствуем любителей ретротехники! Уверены, что каждый из вас сталкивался с разочарованием, пытаясь зайти на современные веб-сайты эпохи Web 2.0 при помощи старых браузеров из операционных систем прошлого века. Современные сайты в большинстве своём уже не используют незашифрованные HTTP-соединения. Установить же шифрованное TLS-соединение древние браузеры не могут.
Казалось бы, стоит оставить эту затею, но всё же есть способ увидеть современные сайты в каком-нибудь Netscape Navigator. Для этого был создан прокси-сервер WebOne, который действует по принципу Man-in-the-Middle (MITM). Он берёт на себя роль посредника, устанавливающего TLS-соединение, оптимизирует полученный код под старые браузеры и отдаёт его уже по незащищённому HTTP. Под катом рассказываем, как установить эту хитрую штуку и настроить старые браузеры для её использования.
Немного истории
Прежде чем мы приступим к установке, предлагаем вспомнить, с чего начиналась эпоха Web 1.0, и посмотреть, какие браузеры были доступны пользователю в то время. Представьте, что на дворе 1990 год. Через 3 года будет опубликована самая ранняя версия протокола HTTP/0.9. Но при этом её автор, сэр Тимоти Джон Бернерс-Ли, в то время работавший в CERN, уже создаёт и сам протокол, и первый графический веб-браузер. Он получил название WorldWideWeb. Да, %USERNAME%, именно поэтому аббревиатура WWW стала символом зарождающегося интернета.
Впоследствии был проведён ребрендинг, и WorldWideWeb получил новое имя — Nexus. Что, впрочем, не сделало его популярнее. На сцену в то время вышел браузер NСSA Mosaic, поддерживающий HTTP и другие протоколы, такие как FTP, NNTP и Gopher. Аббревиатура NСSA расшифровывается как National Center for Supercomputing Application. Это была организация, профинансированная правительством США, созданная с целью ликвидации «суперкомпьютерного голода». В то время некоторым учёным из Штатов даже приходилось ездить в Европу, чтобы проводить вычисления на суперкомпьютерах. Так что обзавестись собственными суперкомпьютерными центрами было важной задачей.
Судьба Mosaic была увлекательной. Лицензия на этот браузер была передана Spyglass, Inc. Те, в свою очередь, заключили соглашение с Microsoft, и Mosaic лёг в основу знаменитого Internet Explorer. Ну а авторы Mosaic, Marc Lowell Andreessen и Eric J. Bina, увидев потенциал развития всемирной паутины, решили создать собственный браузер с покером и куртизанками. Так на свет появился знаменитый Netscape Navigator. Имена обоих разработчиков спустя 16 лет оказались в The World-Wide Web Hall of Fame.
Видя происходящее, ребята из IBM попытались не остаться в стороне. Увы, их браузер WebExplorer, разработанный для OS/2 в 1995 году, прожил короткую жизнь и ушёл в небытие уже спустя год. А через 10 лет была полностью остановлена и работа над полуосью. Тем не менее, если вы захотите самостоятельно «потыкать в него палочкой», достаточно развернуть виртуальную машину с OS/2.
Любопытный факт про нейминг: Netscape Communications Corporation хотели показать своё превосходство над основным конкурентом — Mosaic. Так родилось выражение Mosaic killer. Поскольку в качестве маскота была годзиллоподобная ящерица, то выражение приобрело вид Mosaic Godzilla, сокращённо Mozilla.
В том же 1995 году разработчики из норвежской Opera Software представили собственную разработку — браузер Opera. Он тоже должен был стать «убийцей» NСSA Mosaic. Упор делался на том, что Mosaic был не слишком адаптирован к веб-стандартам и обладал достаточно примитивной структурой. Opera должна была стать лучше и универсальнее. Этот браузер впоследствии был портирован на множество операционных систем и дожил до сегодняшних дней.
Вероятно, множество читателей вспомнят ещё кучу деталей из истории развития веб-браузеров, но в рамках этой статьи мы бы хотели дать лишь небольшую историческую справку. Так что переходим к основной теме — WebOne.
Установка WebOne
Мы решили попробовать развернуть WebOne в отдельной виртуальной машине под управлением Ubuntu 22.04. В целом путь установки выглядит стандартно. Для начала обновляем кэш пакетов:
$ sudo apt update
Скачиваем DEB-пакет актуальной на момент написания этой статьи версии v0.15.3:
$ wget https://github.com/atauenis/webone/releases/download/v0.15.3/webone.0.15.3.linux-amd64.deb
Устанавливаем через apt:
$ sudo apt install ./webone.0.15.3.linux-amd64.deb
В процессе установки подтянется ещё приличное количество пакетов, в том числе ffmpeg и youtube-dl. Если вам они не нужны, то можете пропустить с помощью --no-install-recommends, но в этом случае опция транскодирования YouTube для передачи потока в старые устройства работать не будет.
Проверяем, что наш прокси-сервер запустился и готов принимать подключения:
$ sudo systemctl status webone
webone.service - WebOne HTTP Proxy Server
Loaded: loaded (/etc/systemd/system/webone.service; enabled; vendor preset>
Active: active (running) since Sun 2023-08-27 16:23:23 EEST; 6min ago
Docs: https://github.com/atauenis/webone/wiki/
Main PID: 24731 (webone)
Tasks: 9 (limit: 779)
CPU: 1.175s
CGroup: /system.slice/webone.service
└─24731 /usr/local/bin/webone --daemon
Теперь можно взять старую добрую OS/2, открыть WebExplorer и убедиться, что всё работает. По умолчанию используется порт 8080, там же расположена стартовая страница, содержащая полезную информацию:
WebOne также можно поставить на одноплатники. Но поддерживаются модели лишь с архитектурой ARMv7 и ARM64. Так что на крошечном Raspberry Pi Zero или пожилом Raspberry Pi 1 про WebOne можно забыть. Ну или попробовать самостоятельно собрать из исходников, правда, без каких-либо гарантий, что заведётся. Полагаем, что у авторов есть вполне конкретная причина, по которой их софт не работает на ARMv6.
Настройка браузеров
Переходим к самому интересному. WebOne можно использовать в двух режимах. Первый годится, если у приложения есть опция «Указать прокси-сервер». В том же WebExplorer такая опция есть в меню Configure > Configure Servers:
Если браузер поддерживает автоматическое определение параметров прокси-сервера, то можно воспользоваться соответствующим PAC-файлом. Внутри у таких файлов лежит JS-функция, говорящая, какую именно спецификацию доступа использовать при подключении к прокси-серверу. Сама же фишка автоматической конфигурации прокси была создана для Netscape Navigator версии 2. Это потом взяли на вооружение все остальные:
Второй способ доступа предназначен для браузеров, которые не поддерживают задание прокси-сервера. Увы, но автору этой статьи подобные браузеры неизвестны (если кто знает, напишите в комментариях). Так что покажем его работу на примере IE. Суть в том, чтобы передать URL прокси-серверу прямо через адресную строку:
http://<IP-адрес прокси-сервера>:<порт>/<URL>
Да, конечно, просмотр современных сайтов в старом «ослике» выглядит специфично. Но даже в этом есть какое-то своё очарование. Или возьмём, к примеру, старую версию Mozilla Firefox. Если попытаться напрямую зайти из неё на Хабр, то увидим вот такую печальную картинку:
Включаем прокси — и вуаля! Почитать Хабр точно хватит:
Ещё одна интересная фишка WebOne позволяет раскрутить «маховик времени» и заглянуть на сайты, которые давным-давно пропали из сети. Вот так, например, WebOne реагирует на ввод давно несуществующего сайта Netscape Yellow Pages:
На такие запросы WebOne не станет плеваться в пользователя ошибкой, а сходит в Internet Archive и постарается доставить раритетную страницу пользователю. Это отличный способ для всех, кто занимается программной археологией, взглянуть на мир глазами пользователей того времени.
Особая фича WebOne — адаптация работы популярного пакета для скачивания видео со стриминговых сервисов youtube-dl. Совместив его с набором библиотек ffmpeg, автор сделал возможным просмотр YouTube на ретроустройствах. Соответствующий веб-интерфейс расположен по адресу:
http://<IP-адрес прокси-сервера>:<порт>/!player/
Увы, но это единственное, что на данный момент нам «завести» не удалось. Вероятно, причина в том, что YouTube прилагает все усилия, чтобы не позволять так просто скачивать видео анонимным пользователям, да ещё и без Premium-аккаунта. По идее youtube-dl должен поддерживать ещё множество видеохостингов, но спустя час бесплодных попыток стало ясно, что эта функция пока далека от совершенства. Возможно, у вас получится. Просим тогда поделиться своим опытом.
Вместо заключения
WebOne — пример того, как актуальные технологии способны вдохнуть жизнь в старые устройства. Понятное дело, что в 2023 году уже невозможно жить с компьютером на Windows 98. Но всё же хрупкий мостик между винтажными устройствами и современным интернетом проложен. А уж как его использовать, решать вам.
Напишите нам в комментариях о том, какой у вас любимый браузер и какие сайты вы любили посещать в начале миллениума.
Комментарии (20)
nikhotmsk
28.08.2023 17:23У людей мысли сходятся. Я тоже хотел сделать такую штуку для жк-дисплея 128 на 64 точки.
talik
28.08.2023 17:23+5Хорошая штука. Наконецто можно выйти в интернет с Sony psp или со старой но крутой Nokia e71. Еще бы запоковать этот сервис во чтото более утилитарное чтобы на любом виртуальнлм хостинге можно было развернуть такой шлюз.
Georgii_L
28.08.2023 17:23+1а тут вопрос- можно ли. большая часть сайтов, мне кажеться с отключённым js тупо не будет работать сейчас. Даже те где особой интерактивности быть не должно
Tyusha
28.08.2023 17:23оптимизирует полученный код под старые браузеры и
Я что-то не пойму, каким образом можно html5 и css3 "оптимизировать" под старые браузеры, не говоря уж о том, как Rhino из 90-х может справиться хотя бы с JS2.0?
talik
28.08.2023 17:23+3Концептуально, такой прокси должен решать иную задачу. Старые устройства (родом до 2010 года примерно) на примере тех же коммуникаторов Nokia при попытке открыть современные сайты в первую очередь ругаются на SSL от корневых поставщиков. Не говоря о том, что любой современный https для таких устройств является невалидным.
А подобный шлюз должен очищать https до базового http и старые устройства будут спокойно их открывать в меру своих старых движков рендеринга сайтов.
grey_rat
28.08.2023 17:23+1Есть ещё такой проект WRP — Web Rendering Proxy, но там по факту показывается скриншот и курсор от мышки передаёт прокси-серверу в каких координатах находится. Кстати автор WebOne мне о нём когда-то и расказал, и не только о нём, за что ему отдельное спасибо.
AKudinov
28.08.2023 17:23+1Насколько я понимаю, мобильный браузер Opera Mini примерно таким образом 10+ лет назад и работал.
MaFrance351
28.08.2023 17:23+2Да, рендер страниц был на их серверах.
Отличный был браузер, на всяких КПК был едва ли не лучшим выбором...
Johan_Palych
28.08.2023 17:23+1По идее youtube-dl должен поддерживать ещё множество видеохостингов, но спустя час бесплодных попыток стало ясно, что эта функция пока далека от совершенства.
youtube-dl 2021.12.17 - последняя версия от Dec 16, 2021.
https://github.com/ytdl-org/youtube-dl/releasesНадо использовать форк yt-dlp 2023.07.06
https://github.com/yt-dlp/yt-dlp/releasesДобавить в /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
sudo apt-get update
apt-cache policy yt-dlp
sudo apt install -t jammy-backports yt-dlpПочитать внимательно
https://github.com/atauenis/webone/wiki/Linux-installation
To use yt-dlp with WebOne, install the package, and create an overriding configuration file:/etc/webone.conf.d/youtube.conf [WebVideoOptions] YouTubeDlApp=yt-dlp
grey_rat
28.08.2023 17:23В 0.16 Beta 3 ютуб исправлен
Включена последняя версия yt-dlp вместо отмучившегося youtube-dl.
https://www.phantom.sannata.org/viewtopic.php?p=747379#p747379
Johan_Palych
28.08.2023 17:23+1Из зависимостей убрали youtube-dl и добавили yt-dlp:
dpkg -I webone.0.15.3.linux-amd64.deb | grep -E "Depends:|Recommends:"
dpkg -I webone.0.16.0-beta3.linux-amd64.deb | grep -E "Depends:|Recommends:"Есть актуальный docker-webone 0.16b3
https://hub.docker.com/r/u306060/webone
https://github.com/way5/docker-webone
Iskatel_S
28.08.2023 17:23Сначала хотел ругаться, мол изобрели велосипед в то время как то же apache может легко проксировать https в http, но потом прочитал статью до конца, да крутая прога. И жду дальнейшие обзоры по малоизвестным программам из репозитория Ubuntu
Vapaamies
28.08.2023 17:23Не имеет поддержки прокси браузер WebView под KolibriOS.
longhorn_gnu
28.08.2023 17:23Приветик, Freeman. За звание флудера на их форуме спасибо... Добавьте. Думаю, это реализовать не очень сложно. Просто к URL добавлять адрес прокси.
Kuprijan
Дожили, был облачный гейминг, теперь и браузер облачный появился...
mm3
С появлением firefox в docker-е это выходит на новый уровень.