Skip to content

Dominant-dev/vidbytok

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vidbytok

Vidbytok (Ukrainian відбиток — “imprint”) is a one-click desktop website copier. Paste any URL, press one button — get a complete, browsable offline mirror of the site.

No settings, no checkboxes, no depth sliders. Vidbytok probes the target, decides the strategy itself (fast static scraper vs. headless browser), picks a sensible crawl depth, pulls every asset, and hands you a zipped offline copy.

Vidbytok — idle screen


Why

Most site-rippers either drown you in options or break on modern sites (SPAs, Cloudflare, lazy-loaded media). Vidbytok hides all of that:

  • One input, one button. Paste a link, press COPY SITE. That’s the whole UI.
  • Self-deciding engine. It fetches the page once and analyses it:
    • plain server-rendered HTML → fast static scraper (website-scraper)
    • SPA / JS-rendered / Cloudflare / anti-bot challenge → headless browser engine (real Chromium: clicks cookie banners, triggers lazy-load, saves the rendered DOM)
  • Auto depth & scope. Root URL → broader crawl; a deep link → focused crawl. Internal links and sitemap.xml are followed automatically; off-site assets (CDN images/fonts/CSS/JS) are still pulled so the copy works offline.
  • Everything bundled. HTML, CSS, JS, images, fonts, media — re-pathed for offline navigation and packed into a .zip.
  • Ad/tracker stripping during render so the mirror is clean.
  • History & themes, out of the way. A two-icon toolbar opens a full download history (thumbnail, pages/size, re-copy, open/reveal/zip) and a theme picker — 5 CRT skins (phosphor green, amber, ice, mono, paper), persisted. The main screen stays a single input and one button.

Screenshots

Idle Copying Done
idle copying done
History Themes
history themes

How it works

URL ─▶ probe (1 lightweight request)
        ├─ HTTP 403/429/503, "Just a moment", cf-challenge   ─▶ headless browser
        ├─ framework root + little text (React/Next/Vue/Nuxt) ─▶ headless browser
        ├─ thin HTML, JS-driven                               ─▶ headless browser
        └─ normal server-rendered HTML                        ─▶ fast static scraper
                                                                     │
   auto: depth (root=2 / deep-link=1), recursive, sitemap, ad-block, │
         all asset types, zip, open folder ──────────────────────────┘

The heavy lifting:

  • Static enginewebsite-scraper with an expanded source map (lazy data-src, srcset, og:image, icons, fonts), domain-scoped recursion, assets sorted into css/ js/ images/ fonts/ media/.
  • Browser engine — a pool of offscreen Electron BrowserWindows. Each page: load → dismiss cookie banner → hydrate → auto-scroll for lazy content → savePage('HTMLComplete') → optional PDF/PNG → cross-page links rewritten to local files. sitemap.xml / sitemap_index.xml seed the queue.

Run from source

npm install
npm start

Requires Node.js 18+ and Windows (Electron 33, Windows x64 build target).

Build a Windows app

npm run dist

Produces a portable Vidbytok.exe and an NSIS installer in dist/. The installer registers a desktop/Start-menu shortcut named Vidbytok.

Note: building the NSIS installer needs symlink-creation rights for electron-builder’s signing cache — enable Windows Developer Mode or run the build from an elevated shell. The portable dist/win-unpacked/Vidbytok.exe builds without that.

Tech

  • Electron 33 — desktop shell, headless render engine, IPC
  • website-scraper — fast static mirroring
  • archiver — zip packaging
  • Zero telemetry. Config & history live in %APPDATA%/Vidbytok, not next to the binary.

License

MIT © Oleksandr Bilov (@Dominant-dev)

About

Vidbytok — one-click desktop website copier. Paste a URL, get a full offline mirror; auto-detects static vs headless-browser engine. Electron, CRT terminal UI.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors