siterip.w0wzahh.link

RIP SITES.
KEEP 'EM
OFFLINE.

Download entire websites — pages, assets & SPA routes — as self-contained, offline-browsable ZIP archives.

siterip site.zip sw.js injected --depth 2 --max-pages 150
$ siterip — quick_start.sh
# install & run the web UI $ git clone https://github.com/w0wzahh/siterip.git $ cd siterip && npm ci && npm run build $ npm start # → http://localhost:3000   # or the CLI $ npm run cli -- https://example.com -d 2 -o site.zip   # or Docker $ docker build -t siterip . $ docker run -p 7860:7860 siterip
EST. 2025
150page cap
6×parallel pages
0uploads needed
1zip out

WHY SITERIP

Capture

Real browser engine

Headless Chromium renders every page — the JS-built DOM is captured, not just raw HTML.

Replay

Works offline

An injected service worker maps URLs to files — SPA routes and captured API calls still work.

Speed

Parallel crawling

Configurable concurrency, sitemap discovery, and OOM-safe streaming to disk.

Safe

SSRF-hardened

DNS-validated public hosts on every hop, rate limits, and capped jobs by default.

HOW IT WORKS

how_it_works.txt
1

Chromium renders each page while a CDP session records every network response to disk.

2

Links are rewritten to local relative paths — the archive browses without a server.

3

sw.js is injected so JS-constructed URLs and client-side routes resolve offline.

4

Everything zips up with serve.js — run node serve.js and open localhost.

Want it online? One click deploys to Netlify — a serverless quick-rip mode (single page + assets, ~60s). For full multi-page crawls, run the Docker image on Render, Railway, Fly.io, or a VPS. Server-side logic can't be archived by any tool.