status: live · 16-lab benchmark · F1 1.0

A VAPT crawler that proves
what it finds.

General crawlers hand you HTML. valxcan-crawler hands you the attack surface others miss — JS-runtime endpoints, hidden routes, wasm strings — then verifies vulnerabilities instead of guessing, and emits LLM-ready markdown for the AI asking the harder questions.

// scope: self-contained, single binary · zero-dep HTTP + CDP browser · authorized testing only

vcrawl vapt — live run
$ vcrawl vapt https://target/ --token … --admin … --foreign doc-2 [crawl] pages=108 wsm=338-strings browser-runtime=38urls [grammar] synthesized 58 routes → 4 verified-live (canary oracle) [grammar] found hidden route: /rest/track-order/search — not in observed surface [timing] baseline 1ms → probes 2016ms → blind SQLi (MySQL) [oaST] token-armed callback hit in 0.0s — blind SSRF confirmed, pre-arm dropped [access] alice→doc-2 200 (should be 403) — BOLA/IDOR $
HIGH/rest/user/whoami· reflected-XSS — canary echoed in response
CRIT/fetch?url=· blind SSRF — OOB callback with token match
INFO/· missing CSP, X-Frame-Options, HSTS
f1: 1.0 · precision 1.0 · recall 1.0 · 0 FP
Measured, not marketing

A benchmark a marketing page would never risk.

Every row below is a run artifact — vulnerable lab + an identical secure twin, so every single result is a true positive or a true negative. There is no self-reported number on this page.

16 /16 labs
scorecard green — every seeded issue found, every secure twin left alone.
F1 1.0
precision 1.0 · recall 1.0 · 32 checks, 0 false positives, 0 missed.
108 vs 0
API endpoints vs katana on the same target — the general crawler it raced found none.
787 in 1.3s
sitemap-sourced endpoints on a real production site; the competitor timed out (0 in 90s).
✓also measured: hidden route /rest/track-order/search found via wordlist-free route synthesis + canary existence oracle · timing oracle 1ms → 2016ms blind-SQLi · OAST token-correlated blind SSRF
Why it beats a scraper

You don't need "the whole web."
You need the surface that matters.

Firecrawl-class extraction is the floor. The point of valxcan-crawler is what a scraper structurally cannot do.

Discovery

See past the HTML

Captures the JS-runtime surface a plain HTTP crawl is blind to — via a zero‑dep CDP browser — plus wasm strings, route-grammar synthesis and wordlist-free verification. Finds routes dictionaries never will.

→ /rest/track-order/search: found, not in any observed page
Verification

Prove it, don't guess

Statistical timing (Welch t, jitter-proof), self-hosted OAST with token correlation and stale-drop, two-account IDOR/BFLA, content-oracle LFI, offline JWT. A finding only counts when the evidence confirms it.

→ 0 false positives across every lab
Intake · for AI

LLM-ready by design

De-boilerplated markdown with absolute links — firecrawl-style extraction — plus findings as structured JSON. Built to feed an AI-VAPT layer, not just a report.

→ extract → markdown your reasoning model actually reads
quick startvcrawl
# discover the API surface
npx vcrawl crawl https://target/ --browser
# extract any page to LLM-ready markdown
npx vcrawl extract https://target/ --site --out docs/
# full battery → graded markdown report
npx vcrawl vapt https://target/ --token … --admin …
→ writes vapt-report.md
One binary, no orchestration

Zero-dep HTTP, a CDP browser, and 16 detection classes — one command.

No scanner daemon, no heavy runtime download, no saas key. Install once, point it at your authorized target, and the report + the markdown bundle are yours to run an agent on.

For AI-VAPT

The ingestion half of an autonomous pen-test.

What your agent needs: a mapped attack surface, the clean content around it, and findings that are provable — all in one tool.

01 · DISCOVER

Crawl + browser + wasm + grammar

The attack surface a general crawler misses.

→
02 · EXTRACT

Markdown, not markup

Clean page content + links your model can follow.

→
03 · VERIFY

Provable findings

Timing, OAST, two-account access — each with evidence.

extract → markdown findings → structured JSON timing oracle (Welch t) OAST token-correlated BOLA · BFLA · SQLi · XSS · LFI · SSRF isAdmin mass-assignment candidate