Home

Awesome

Note This repo represents wabac v1.0 which was the initial iteration of wabac.js. This version is hosted at https://wab.ac/, which is still available, but has been superceded by the ReplayWeb.page

wabac.js 2.0 is the latest iteration component of the service worker component and forms a core of https://replayweb.page/

<hr>

WABAC.js

Web Archive Browsing Advanced Client :watch: :rewind: :repeat: :rocket:

WABAC.js proof-of-concept web archive replay system implemented entirely via Service Workers

It allows browsing web archives in WARC or HAR files directly in a modern browser without requiring a server component.

Usage

This repository itself is hosted as a static site at: https://wab.ac/ and provides all functionality.

To run locally, a simple http server, eg. python -m http.server 9990 should suffice, however, some browsers may not support service workers from localhost.

To use, select a WARC or HAR file to be loaded into WABAC. The file will not be uploaded anywhere and will be parsed in the browser.

To create a WARC file, you can use https://webrecorder.io/ and download the resulting file.

WABAC.js also supports loading HAR files, which can be created directly by any browser.

You can load multiple files with a different collection name. The collections are available only to you.

Dynamic Collections API

It's also possible to generate collections dynamically on the fly by linking to a WARC/HAR already hosted.

For example, the WARC examples/netpreserve-twitter.warc in this repository is available for download at https://wab.ac/examples/netpreserve-twitter.warc

The link:

https://wab.ac/?coll_example=examples/netpreserve-twitter.warc

can be used to automatically download the warc, index it, and add it as collection 'example'. If it works, you should see 3 pages available for replay.

It's also possible to automatically redirect to a url for replay:

https://wab.ac/?coll_example=examples/netpreserve-twitter.warc&url=example/https://twitter.com/netpreserve

The above link should load the collection and then redirect to one of the pages. If all goes well, you should be browsing an archive of IIPC's twitter page, entirely from github!

Mounted Archive API

WABAC.js also supports loading web archive data from an existing source, such as another archive. By embedding WABAC into an archive, WABAC.js can be used to improve its replay fidelity from inside. In this way, WABAC can blur the lines between a browser-based archive and an archived page

For example, WABAC.js running inside the Internet Archive web.archive.org can be accessed at:

https://web.archive.org/web/https://wab.ac/

This should provide an alternate web archive replay mechanism from inside an existing archive.

How it Works

The system consists of two main components, a service worker 'server' implementation based roughly on portions of pywb web archive replay system, and the page interface which controls the index page rendering and updates from the service worker. (The client-side wombat.js library from pywb is also used).

The service worker server uses:

A frame is used to wrap the replayed content and provide a banner. The banner provides a date range listing all resources on the page in an effort to provide increased replay transparency

The service worker is mounted at the root of the site and manages all collections. Local files are sent as blobs to the service worker for parsing.

Limitations

This repo is still an early prototype and should be used with caution. It has the following limitations:

Previous Work

The ipwb from @ibnesayeed and @machawk1 was the first project to use service workers for replay, focusing on retrieval from IPFS.

The Reconstructive project, separated out from ipwb, focuses on composite memento reconstruction from an existing web archive or memento aggregator and provides support for the memento protocol.