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


  1. Kuprijan
    28.08.2023 17:23
    +3

    Дожили, был облачный гейминг, теперь и браузер облачный появился...


    1. mm3
      28.08.2023 17:23
      +3

      С появлением firefox в docker-е это выходит на новый уровень.


  1. nikhotmsk
    28.08.2023 17:23

    У людей мысли сходятся. Я тоже хотел сделать такую штуку для жк-дисплея 128 на 64 точки.


  1. talik
    28.08.2023 17:23
    +5

    Хорошая штука. Наконецто можно выйти в интернет с Sony psp или со старой но крутой Nokia e71. Еще бы запоковать этот сервис во чтото более утилитарное чтобы на любом виртуальнлм хостинге можно было развернуть такой шлюз.


    1. Georgii_L
      28.08.2023 17:23
      +1

      а тут вопрос- можно ли. большая часть сайтов, мне кажеться с отключённым js тупо не будет работать сейчас. Даже те где особой интерактивности быть не должно


  1. Tyusha
    28.08.2023 17:23

    оптимизирует полученный код под старые браузеры и

    Я что-то не пойму, каким образом можно html5 и css3 "оптимизировать" под старые браузеры, не говоря уж о том, как Rhino из 90-х может справиться хотя бы с JS2.0?


    1. v1000
      28.08.2023 17:23

      банально скачать патч из интернета напрямую


      1. Tyusha
        28.08.2023 17:23

        Тогда что останется от старого браузера? Летящие метеоры в логотипе? Кнопки в дизайне Windows 95?


  1. talik
    28.08.2023 17:23
    +3

    Концептуально, такой прокси должен решать иную задачу. Старые устройства (родом до 2010 года примерно) на примере тех же коммуникаторов Nokia при попытке открыть современные сайты в первую очередь ругаются на SSL от корневых поставщиков. Не говоря о том, что любой современный https для таких устройств является невалидным.

    А подобный шлюз должен очищать https до базового http и старые устройства будут спокойно их открывать в меру своих старых движков рендеринга сайтов.


  1. ereinion
    28.08.2023 17:23
    +2

    Ой! Полуоська!


  1. grey_rat
    28.08.2023 17:23
    +1

    Есть ещё такой проект WRP — Web Rendering Proxy, но там по факту показывается скриншот и курсор от мышки передаёт прокси-серверу в каких координатах находится. Кстати автор WebOne мне о нём когда-то и расказал, и не только о нём, за что ему отдельное спасибо.


    1. AKudinov
      28.08.2023 17:23
      +1

      Насколько я понимаю, мобильный браузер Opera Mini примерно таким образом 10+ лет назад и работал.


      1. MaFrance351
        28.08.2023 17:23
        +2

        Да, рендер страниц был на их серверах.
        Отличный был браузер, на всяких КПК был едва ли не лучшим выбором...


      1. Javian
        28.08.2023 17:23

        MiniOpera и сейчас работает



  1. 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


    1. 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


      1. 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


  1. Iskatel_S
    28.08.2023 17:23

    Сначала хотел ругаться, мол изобрели велосипед в то время как то же apache может легко проксировать https в http, но потом прочитал статью до конца, да крутая прога. И жду дальнейшие обзоры по малоизвестным программам из репозитория Ubuntu


  1. Vapaamies
    28.08.2023 17:23

    Не имеет поддержки прокси браузер WebView под KolibriOS.


    1. longhorn_gnu
      28.08.2023 17:23

      Приветик, Freeman. За звание флудера на их форуме спасибо... Добавьте. Думаю, это реализовать не очень сложно. Просто к URL добавлять адрес прокси.