Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

website-rescue-kit

Two small, dependency-free Python scripts for rescuing websites — the dead ones and the not-yet-dead ones. Extracted from building websites through the years, a museum of five sites recovered this way; the method is narrated in its restoration lab.

Your site is dead (host gone) → rescue-wayback.py

If the Wayback Machine photographed your site while it lived, it can come back.

  1. Find one good capture of your front page on web.archive.org and copy the 14-digit timestamp from the snapshot URL — this is your anchor.
  2. Run:
python3 rescue-wayback.py 20040130074500 http://members.fortunecity.com/atakee1/ ./rescued-site

The crawler fetches original bytes (the archive's id_ flag — no Wayback toolbar, no rewritten links), follows internal links, and takes each URL's capture nearest to your anchor, so the whole site stays era-coherent. It is polite (~1 req/s with backoff) and resumable — re-run it after an interruption and it continues. An optional fourth argument caps how many new files to fetch (handy for a test run).

What it can't do: recover pages the archive never captured (they're gone), or un-inject the ads your free host baked into the HTML — that part is hand-surgery; see the restoration lab for what it looks like. It also doesn't parse external CSS for url() references, and treats www. and bare-domain as different hosts — check the output for gaps.

Your site is alive but hostage (Blogger) → rescue-blogger.py

Free platforms don't last forever (ask GeoCities, or FortuneCity). This crawls a live Blogger blog into a static copy you own:

python3 rescue-blogger.py https://yourblog.blogspot.com ./rescued-blog

It captures posts, year/month archives, label pages and the "older posts" pagination chains; downloads images and theme assets out of Google's blog CDNs (Google-Fonts <link>s are part of the manual pass) into a local blog-assets/ folder; strips Blogger's JS-injected chrome; and rewrites internal links to relative paths. The result opens from a plain folder or any static host.

What it doesn't do by itself: disarm outbound links and every last Google reference (a "hermetic seal"). That final pass is deliberate manual work — the restoration lab documents it. Also grab a Google Takeout export of your blog as the lossless canonical backup; mind that its settings CSV contains a mail-to-Blogger posting address — treat it as a secret.

Notes that will save you an evening

  • Wayback rate limits are real. The scripts sleep between requests and retry with backoff; if you hammer archive.org it will drop your connections.
  • Old URLs contain old encodings. A Turkish "ç" in a 2002 filename is windows-1254 percent-encoding, not UTF-8; rescue-wayback.py quotes URLs safely.
  • Don't transcode unless your host makes you. Files come back byte-for-byte in their original encodings. GitHub Pages, for one, forces a charset=utf-8 header that overrides <meta> tags — if you host there, transcode once, deliberately, and keep the original bytes in git history.
  • Commit the raw crawl first, clean up second. Your git history then documents every restoration decision — that's the provenance.

License

MIT — © 2026 Ercan Atak (@atakee72)

About

Rescue your old websites: Wayback Machine recovery + live-Blogger rescue, dependency-free Python

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages