はじめに
こんにちは。私は普段からいろいろなレトロデバイスを集めては動かして楽しんでおりますが、古いPC/Mac/携帯などでWeb閲覧をしようとした際に大きな壁となるのが現代のSSLとCSS、JavaScriptです。
SSLは暗号化方式が新しくなったりルート証明書が更新されることで、アップデートの止まったレトロデバイスでは接続することができなくなります。
特に、近年は対話的なサイトだけではなく閲覧するだけのページでさえSSLを要求してくることが一般化したため、Windows XPのIE6くらいでもWikipediaすら表示できない事態になっています。
CSSについては規格が新しくなることでアップデートの止まったレトロデバイスでは正しく処理できなくなっています。
また、JavaScriptはクライアントサイドでのレンダリングなどでどんどん処理量が増えることでレトロなデバイスには処理しきれなくなっています。
実際にiMac G3などを動かしてみると、2023年現在ではアクセスできるページが壊滅的であることに気がつくと思います。
こうした状況で、見つけたのが以下のGithubリポジトリです。
https://github.com/DrKylstein/retro-proxy
こちらはHTTP/HTTPSのプロキシとして動作し、現代のマシンでSSL通信などを肩代わりし、レトロデバイスには処理済みのほぼプレーンなHTMLだけを流すようにすることで、問題を解決しようというものです。さらに、レトロデバイスのために画像を縮小してくれる機能まであります!
おそらくですが、Win95やMacOS9あたりからのブラウザ(基本的なHTMLやJPEGの表示ができるくらい)であれば、これを使うことで現代のWebページを見られるようになると思われます。ちょっと試した限りでは、MacOS 9.2のIE、MacOSX 10.2のIE、10.4のSafari、VineLinux 5.2のFirefoxなどでYahooニュースやWikipediaを閲覧することができました。
以下はMacOSX 10.2のIE5での例です。
OS9のIE5(クラシック環境)でもAppleのホームページを表示できました。
さすがに、OS9のNetScapeでは日本語がほとんど化けてしまいまともに見ることはできませんでした。
このように、現代のデバイスと完全に同じようにWeb閲覧することはできず、JS/CSSはほぼカットされた状態になります。ちょうど90年代中頃くらいの見た目かもしれません。
今の仕様のCSSなどを、制作者の意図を保ったまま当時の仕様に翻訳することは容易ではないので、こちらは仕方ないと思われます。また、JSはそもそも処理負荷的にレトロデバイスでは追いつかないので、JSを多用した現代のSNSなどは使えません。Twitterもできないです。
ただ、閲覧オンリーのブログなどはかなり見ることができるようになり、Googleなどの検索も動作します。これだけでも、レトロファンには感涙ものです。
retro-proxyサーバを動かしてみる
動かすのはかなり簡単でした。macOS 13 Ventura, Ubuntu 22.04環境で試しました。サーバサイドJavaScriptで動作し、yarnというパッケージマネージャを利用するようです。
Ubuntuの場合、以下の通り準備します。yarnはaptで入るバージョンが古くてエラーが出たため、npm経由でインストールします。ついでにgitも入れておきます。
※ 私はjsには詳しくないためお作法が違うかもしれません。
sudo apt update
sudo apt install git nodejs npm
sudo npm install --global yarn
macOS(Homebrew)の場合、以下でいけました。
brew install yarn
後はREADMEの通り、以下を実行するだけです。
git clone http://github.com/DrKylstein/retro-proxy.git
cd retro-proxy
yarn install
cp example.env .env
yarn start
ただし、処理途中で落ちてしまうことが多々あるため、以下のように落ちたら自動的に再起動するような簡易スクリプトを作りました。
#!/bin/bash
while true
do
echo "Starting..."
yarn start
done
クライアント側(レトロデバイス側)の設定
幸いなことに、90年代中盤以降くらいのブラウザであればHTTP/HTTPSプロキシの設定機能は持っていることが多数です。それぞれのデバイスでプロキシ設定を開き、HTTPとHTTPS双方について、retro-proxyサーバーのIP、ポート(デフォルトは3000になる)を設定します。
例えば、MacOSX 10.4なら以下のような感じです。
これで、例えばhttps://wikipedia.orgなどに接続してみて、表示できたら成功です!
注意事項
SSLが何のためにあるかといえば、通信路を暗号化して傍受・改ざんを防ぐためです。ここで紹介している方法は通信を(プロキシとの間では)平文にして流してしまうため、セキュリティ的には本末転倒なのは言うまでもありません。
保護されたLAN内であればリスクはあまりないとは思いますが、あくまで趣味で楽しむ範囲に留めておくことをおすすめします。
おわりに
今回はひとまず古いMacで試してみましたが、ほぼピュアHTMLで画像も縮小されて送られるため、iMac G3ですら高速に表示ができていました。後はWin95のIEやザウルスとかのブラウザも試してみたいような気がします。
ちなみに、retro-proxyのコードは200行くらいで、既存のjsモジュールをうまく組み合わせることでできているようです。作者様のアイディアには脱帽です。
気に入られた方は、ぜひGithubでスターをつけてあげましょう!