Coder Social home page Coder Social logo

oldweb-today / oldweb-today Goto Github PK

View Code? Open in Web Editor NEW
253.0 6.0 22.0 12.67 MB

Browse emulated browsers connected to old web sites in your browser!

Home Page: https://oldweb.today

License: GNU Affero General Public License v3.0

CSS 0.02% HTML 0.01% JavaScript 99.97%
emulation emulator web web-archives wayback-machine webrecorder oldweb-today

oldweb-today's Introduction

OldWeb.today (in JS)

Old Browser + Web Archive Emulation in Your Browser 💫

oldweb.today (OWT) is a system that connects emulated web browsers to web archives, allowing users to browse the old web, today, as it was!

Screenshot of Netscape 3

(Screenshot of: https://oldweb.today/?browser=ns3-mac#19960101/http://geocities.com/)

OldWeb.today allows users to browse the web using one of several emulated browsers as well as a Flash emulator, all running fully in the browser!

Enter a URL, choose a archival date, and select a browser to start!

Users can either browse the live web, current websites, or connect to web archives / wayback machines and load content directly from the archives.

Supported Browsers

See the oldweb.today for the latest list of browsers. The goal is to support common (Netscape, IE, etc..) as well as other lesser known, but notable browsers in the history of the web.

If you would like to see a browser supported, or would like to contribute a browser, please open an issue!

Java

Most versions of Netscape and IE available in OldWeb.today have early versions of Java installed.

Java 1.0 should work in Netscape 3, and Java 1.1 should work in Netscape 4 (Windows) and IE 5 and IE 6.

Flash

Netscape and IE also should have the latest supported version of Flash installed. For Mac browsers, this usually means Shockwave 4.

The IE 6 browser has Flash 9, the latest version of Flash that runs on Win98 installed.

Flash via Ruffle

OldWeb.today also supports the Ruffle Flash emulator directly, using your native browser.

In this mode, you can browse any live or archived website, with the Ruffle emulator enabled.

How it Works

This current version runs entirely in JavaScript, using emulators to run Windows, MacOS and a full network stack. Everything runs in your browser, and OldWeb.today can be hosted as a static site. A remote CORS proxy is used due to CORS restrictions for accessing external archives.

The version of OldWeb.today works by building on and combining a number of great tools created by others, including:

Each of these emulators were modified (here and here) to support a custom JavaScript network stack using picotcp created by Emulation as a Service developers Rafael Gieshke and Klaus Rechert:

This system was further modified and integrated into OldWeb.today to connect to terminate HTTP connections from emulated browsers and respond with HTTP data from a regular fetch() request, either to live web or an archive source. Currently, only GET requests are supported and only standard Content-Length and Content-Type headers are proxied back.

Each browser is configured to connect via an HTTP proxy to the special IP http://10.0.2.2/ which the JS http server redirects to the actual home page. In this way, the emulator image has a fixed home page that resolves to the actual page. Similarily, the timestamp set on the page is used by the JS proxy server to load the specified date from the archive.

This allows changing the datetime and the home page URL without restarting the emulator, simply by reloading the home page in the emulated browser.

The network stack (compiled to WASM) is running in a separate web worker. The Basilisk emulator is compiled with Emscripten and also runs in a separate worker. A SharedArrayBuffer is needed to communicate between them. The v86 emulator runs in the main thread and communicates via the network worker via BroadcastChannel messaging.

For native mode / Ruffle emulator, no emulated browser is used, but the Ruffle emulator is injected into loaded pages to take over rendering any Flash that may be present on the page.

Deployment

OldWeb.today requires Node and a package manager npm/yarn to build and modify.

To run locally, first install with yarn install

Local Deployment (Local Live Web Proxy)

The recommended deployment option for development is to run a dev server with a local CORS proxy. This can be done simply by running the rollup dev server with:

yarn run start-dev

This will start a local web server (via rollup) and you should be able to access OldWeb.today via http://localhost:10001/. The local proxy will be running at http://localhost:10001/proxy/

Production Deployment -- Cloudflare

For production, the recommended deployment is to run using Cloudflare Workers, which handles the live web proxy. The free service should be sufficient for most use cases.

To use this option:

  1. In worker-site, copy wrangler.toml.sample to wrangler.toml.
  2. Set your account_id and name as per configuration instructions.
  3. Run yarn run publish to publish to your Cloudflare Worker endpoint.
  4. Load OldWeb.Today from your Cloudflare URL!

Production Deployment -- Static Site with Local Archive

An even simpler deployment, OldWeb.today can be deployed fully as a static site, by serving the content in the ./site directory over an HTTP server.

However, this option will not include a CORS proxy, which is needed for loading from live web or a remote archive.

One option is to run with the publicly available CORS Anywhere proxy for connecting to live web and remote archives.

As this proxy is rate limited, this option is not recommended for production deployment.

This deployment makes sense if also running a local web archive on the same host (and live web access is not needed), removing the need for a CORS proxy.

To use this method:

  1. In rollup.config.js, modify the CORS_PREFIX and/or the ARCHIVE_PREFIX to point to a local archive, for example (see below for more details):
const CORS_PREFIX = "";

const ARCHIVE_PREFIX = "/wayback/";
  1. Run yarn run build

  2. OldWeb.today can now be served from ./site/ from any static HTTP server.

Customizing Assets Path

Note that when running on Cloudflare, the static assets in site/assets and built scripts site/dist are served from a separate CDN (via DigitalOcean).

This path can be changed by rebuilding after changing CDN_PREFIX in rollup.config.js

The assets and scripts can be hosted on any static web storage.

Customizations

The loading paths below can be changed by changing the settings in rollup.config.js and rerunning yarn run build.

Changing the Archive Source

Currently, OldWeb.today supports loading from Internet Archive's Wayback Machine and directly from the live web. Support for additional / multiple archives is planned!

The archive source can be any web archive that supports Wayback Machine style unrewritten urls, eg: <prefix>/<timestamp>id_/<url>. The archive must support returning unmodified content for it to work.

To run with a different web archive, simply change the ARCHIVE_PREFIX path to point to the wayback machine instance you wish to use.

If loading from a wayback machine hosted on the same domain, the CORS proxy may not be necessary.

For example, if running OldWeb.today on host mywebarchive.example.com and there is a wayback machine running at https://mywebarchive.example.com/wayback/, then you can set

CORS_PREFIX = ""
ARCHIVE_PREFIX = "/wayback/"

If OldWeb.today is hotsed on a different site, then the config should be:

CORS_PREFIX = "/proxy/"
ARCHIVE_PREFIX = "https://mywebarchive.example.com/wayback/"

Changing Image and Asset Paths

All Emulator Images are hosted from a static block storage bucket (currently on DigitalOcean). If you wish to run with a local/different set of images, you can set:

IMAGE_PREFIX = "https://mybucket.example.com/images`

To change the assets and dist paths (for cloudflare deployment), you can set:

CDN_PREFIX = "https://mybucket.example.com/site`

Changing / Adding Emulated Browsers

The availble browsers are configured in src/config.json, which contains the browser name, emulator type, images, saved state (for v86) and other options or each browser. The config.json is interpolated with the IMAGE_PREFIX and served from site/assets/config.json.

To test a local emulator, create an entry w/o using the IMAGE_PREFIX. See config.json for more details.

Classic OldWeb.today

The "classic" version of oldweb.today, which uses Docker containers and emulators running on the server, can be found here: classic.oldweb.today Source: https://github.com/oldweb-today/netcapsule

LICENSE

OldWeb.today is available under the AGPL license. Other components (listed above) may be available under different licenses.

See NOTICE.md for more details.

Contributing

Contributions are definitely welcome, but please open an issue before contributing additional browsers or emulators.

oldweb-today's People

Contributors

ikreymer avatar shrinks99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

oldweb-today's Issues

v86.wasm not found

Thank you for putting the time and effort into this project!

When running locally, I couldn't try any emulator that uses Windows. Looking at the browser inspector, the GET call for /dist/v86.wasm returned a 404. I've simply downloaded the file from the site (https://oldweb.today/dist/v86.wasm), putted inside dist and everything worked just fine.

To build the project I've cloned the repo and run yarn install. I am missing some step here? I couldn't find any info about this file (v86.wasm) on the README page.

On some minor note, I've noted that some icons are also missing (firefox.png, opera.png and linux.png).

emulated windows browsers not loading/dns errors

Hi there! Would like to preface this by saying this project is really amazing and has led me to dig into a lot of old websites lately, so thank you!
I noticed that, when I updated chrome last night, I would always receive an error when I tried to load up an old geocities page. I tried it on the other browsers (including ruffle) and it worked quite well. I think this might(?) be due to the chrome update itself and not the emulation and all that. If this error isn't just on my end, it can reproduced by using Navigator (windows, IE 5, or IE 6 on chrome with the latest update. For some reason, even the default geocities archive that loads with a new oldweb.today tab will not work.
Screen Shot 2022-02-12 at 5 09 47 PM
Screen Shot 2022-02-13 at 7 18 43 PM

Few new improvements for oldweb.today.

So this feature would allow users to upload offline downloaded webpages from there local file drive and feature searching browsing and interaction to view and see what search results page would look like in the past early days of the internet and make it compatible to tablet devices and phones instead computers and laptops and also feature a full screen page of the browser window of oldweb.today and make it reliable but with clicking on buttons watching videos or play audio files that found within old webpages and also add in searching within the old webpage feature like you do on the current web but the past web only.

Netscape 3 for Windows

Netscape 3.x for Windows came with a VRML 1 plugin called Live3D, so it would be cool to add that browser to browse VRML 1 sites.

OG Browser Versions

The project is absolutely fantastic, but I find some of the versions curious. The major versions of Mosaic that were a big deal/widely used (relatively speaking ;) are Mosaic 1.2 and 2.1... and neither are here. But we have v3 for some reason?

Also, would be great to see support for Netscape 0.4, 0.9, 1.1, and 2, as these were all major versions at the time that introduced major features.

...and just since I'm painting the sky, how about running Mosaic 1.2/2.1 on Unix/X, which was the primary platform targeted, instead of Mac?

contributing custom browser images that can display Chinese and Japanese characters?

Hi,

I managed to build custom Navigator 3, Navigator 4, and IE 4 Basilisk disk images based on hd-ie-m.img and hd-ns.img that are able to display Chinese and Japanese characters in web pages, as long as the correct encoding is selected in the browser. I am wondering if you'd be interested in incorporating these browser disk images into oldweb.today.

My fork: https://github.com/rlwhuang/oldweb-today
My config.json: https://github.com/rlwhuang/oldweb-today/blob/main/src/config.json
Disk images: https://github.com/rlwhuang/basilisk_disk_images (private repo shared with @ikreymer to avoid any copyright issues, but anyone can produce their own images using the steps described below)

Essentially, what I did was:

  1. Retrieve the original disk images.
  2. Enlarge the disk images to make space for the font files. I used the steps outlined at https://www.emaculation.com/forum/viewtopic.php?t=8068. For the NS image, I also deleted the MacLynx and Mosaic browsers to reclaim more space.
  3. Install the Chinese Language Kit and the Japanese Language Kit sourced from https://www.macintoshrepository.org
  4. For Navigator browsers, configure the default fonts for Chinese and Japanese text. Also create a new profile for Navigator 4 with the proper homepage and proxy PAC information, since the original profile cannot be loaded after disk expansion.
    I did not touch the automation AppleScript that launches browsers on boot. The emuBrowserIds for browsers remain the same, as with their capabilities to load Shockwave and Java content as configured originally.

Screenshot from 2023-10-13 12-30-35
Screenshot from 2023-10-12 22-22-04
Screenshot from 2023-10-12 22-26-16

Unusually long load times

Whenever i try changing the "browse archives at" date, it takes forever to set it to that date and the entire program fails to correctly start the browser.

User Agent is the host browser's

Apparently the user agent that is being sent by the browsers is the host browser's one.
It would be nice to get the original UA from the emulated browsers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.