Приветствуем любителей ретротехники! Уверены, что каждый из вас сталкивался с разочарованием, пытаясь зайти на современные веб-сайты эпохи 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. Но всё же хрупкий мостик между винтажными устройствами и современным интернетом проложен. А уж как его использовать, решать вам.
Напишите нам в комментариях о том, какой у вас любимый браузер и какие сайты вы любили посещать в начале миллениума.