Skip to content
rewget GitHub

← Back home · FAQ

Frequently asked questions

The questions people actually ask when wget stops getting through. Everything here reflects how rewget already works — see the about page and comparisons for detail.

wget gives me 403 or cannot download this file even with a user-agent — what can I use instead that still works like wget?
rewget is a drop-in wget replacement for exactly this case. Setting --user-agent does not help when a site fingerprints the TLS handshake rather than the header, so the request keeps failing. rewget keeps the wget command line unchanged and runs plain wget first; when it sees a 403, CAPTCHA, or rate-limit, it automatically retries with a browser-like TLS fingerprint (via rquest) and, if that is still not enough, a real headless browser. You keep your existing wget flags and scripts — the fallback happens for you.
How do I download a file from a Cloudflare or JS-challenge-protected site from the command line?
Plain wget and curl cannot solve a JavaScript challenge, which is why they return the challenge HTML instead of the file. rewget escalates to a real headless Chromium stage that executes the challenge, then downloads the file through the passed session — all from the same wget-style command. For sites that only fingerprint TLS (not a full JS challenge), the lighter browser-impersonating HTTP stage handles it without launching a browser at all.
Does rewget slow down downloads from sites that were never blocking me?
No. rewget always tries plain wget first, so unprotected downloads run at normal wget speed with no browser involved. It only escalates when it detects a block. It also caches the working stage per domain for seven days, so repeated mirror jobs against the same host skip straight to the stage that works instead of re-probing each time.
Is rewget really a drop-in replacement for wget?
Yes. The rewget CLI forwards every wget flag unchanged and only intercepts its own --rewget-* options, so aliasing wget=rewget keeps your existing scripts, Makefiles, and CI working. You can also point it at wget2 underneath if you want its HTTP/2 and parallel features. See the features page for the full compatibility list.
Which browser profiles ship today, and how are they updated?
Chrome 131 and 130, Firefox 136 and 133, Safari 18, and Edge 131. List what is installed with --rewget-list-profiles and pull the latest set with --rewget-update-profiles. Profiles are Ed25519-signed and verified before use, so updates cannot inject unverified fingerprints.
How do I stop rewget from escalating in CI?
Use --rewget-no-fallback. rewget then fails fast on a block instead of escalating to stage 2 or 3, which is the right behaviour when you want CI to flag a genuine regression or outage instead of hiding it. The quickstart covers the other flags you will use.
Does rewget bypass logins or authenticated access control?
No. rewget handles fingerprint-based blocks and JavaScript challenges — the cases where a real browser would succeed and a plain HTTP client would not. If a site requires you to log in or holds content behind a paywall, rewget does not change that.
What platforms and license does rewget use?
rewget runs on Linux and macOS today, per its release artifacts. It is written in Rust and dual-licensed MIT / Apache-2.0. Install via Homebrew, npm, PyPI, or cargo — each package includes both the rewget CLI and the rewgetd daemon.