Use this before pushing a meaningful change, cutting a release, or handing the repo to another operator.
python -m patchright installhas been run on the machine that will execute scrapes.- Virtualenv / dependencies are installed and import cleanly.
git submodule update --init --recursivehas been run if--task vaptis expected to work.decaffeinator/blob-unpacker/run.pyexists locally.
Run:
python -m webvac --doctorIf you use VAPT, also run:
python -m webvac --doctor --task vapt --url https://example.comVerify:
- Patchright launches successfully
- output directory is writable
- proxy file loads
- dead proxies only warn if direct-IP fallback is acceptable
- CapSolver key behavior matches expectation
- De-Caffeinator root and
node/npxare available for VAPT
- If
capsolver.keyorCAPSOLVER_API_KEYis present, remember CapSolver is enabled by default. - If a run must not spend solver credits, pass:
python -m webvac --captcha-solver none --url https://example.com- Do not commit real API keys.
- Confirm whether
proxies.txtis intended to be used. - If proxies are dead, remember WebVac will continue on the real IP by design.
- If that is not acceptable for the target, fix or remove the proxy file before running.
auth_creds.json,capsolver.key,proxies.txt,sessions/, and.envremain local only.- If session encryption is required, set
WEBVAC_SESSION_KEY. - No screenshots, dumps, or session files with sensitive data are being committed.
Recommended minimums after meaningful runtime changes:
- single-page scrape against a known-good JS site
- small crawl (
--max-pages 3or5) - auth-wall detection sanity check
- one run with network debug enabled
Suggested commands:
python -m webvac --url https://example.com --mode single
python -m webvac --url https://example.com --mode crawl --depth 2 --max-pages 5If VAPT-related code or docs changed:
python -m webvac --task vapt --url https://example.com --vapt-profile quickVerify:
- output lands under
analysis/decaffeinator/ meta/meta.jsongetscompleted_atmeta/decaffeinator.jsonis written
- Root
README.mdstill matches actual defaults and flags. docs/references match current code behavior.CHANGELOG.mdmentions user-visible behavior changes.
- No local secrets staged
- No accidental screenshots / dumps staged
- No stale generated files staged unless intentional
- Submodule path is still
decaffeinator/
Quick checks:
git status --short
git submodule statusYou are in good shape when:
- doctor passes or only has understood warnings
- scrape path works
- VAPT path works if advertised
- docs match behavior
- secrets stay local