dalfox scan url --sxss --sxss-url 'https://target.example/view'Stored XSS. v3 replaces v2's `sxss` subcommand with `--sxss` plus `--sxss-url` on a regular scan.
dalfox serverREST API server (separate subcommand). Default port 6664, bound to 127.0.0.1.
-X POSTHTTP method override. Default GET.
-d 'username=foo&password=bar'Request body. Pair with `-X POST` if the captured request is POST.
-p 'name:query'Restrict to specific parameter. v3 supports a `name:location` form; locations are query, body, json, cookie, header.
--max-payloads-per-param 100Cap payloads tested per parameter. 0 (default) means no cap.
-VPrint version (`--version`). Worth pinning in CI so reports are auditable.
dalfox is the XSS scanner I reach for first. It is fast, scriptable, and reads from stdin which makes it slot cleanly into a recon pipeline. This is the field reference for the flags that matter, grouped by the task I am trying to accomplish.
Heads-up on v3. Dalfox v3.0.0 (released 2026-05-25) is a complete Rust rewrite. The Go v2 codebase is preserved on the v2 branch for security backports. The most visible change: v2's url, file, pipe, sxss, and server subcommands are gone. v3 has four subcommands (scan, server, payload, mcp) and scan auto-detects the input shape (URL, file, stdin, raw HTTP). Every example below uses the v3 surface.
req.txt is a raw HTTP request: method line, headers, blank line, body. When the endpoint needs auth, custom headers, or a non-trivial POST body, -i raw-http req.txt is faster than packing every flag manually. Here is what it actually looks like:
code
GET /search?q=test HTTP/1.1
Host: target.example
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9
Cookie: session=eyJhbGciOiJIUzI1NiJ9...; PHPSESSID=q9k2...
Connection: close
POST requests look the same with the method and body added:
code
POST /comment HTTP/1.1
Host: target.example
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
Cookie: PHPSESSID=q9k2...
Connection: close
body=hello&author=me
Dalfox tests every parameter it finds in the request unless you restrict with --param. No special markers required.
Open DevTools (F12 on Windows/Linux, Cmd+Option+I on macOS), Network tab, enable Preserve log.
Trigger the target request in the page.
Right-click the request, Copy as cURL. Paste into a converter (curlconverter --language http <command> from npm) to get raw HTTP, or hand-translate: -H "Foo: bar" becomes a header line, --data 'x=y' becomes the body.
Save as req.txt. Use with dalfox scan -i raw-http req.txt in every example below.
A few command lines I use as starting points and adapt from.
Try it with your own values
Tune the common flags once. Every command below reads from this. Out-of-range values get a red border. The Googlebot UA usually gets you hard-blocked faster than the default; pick it only when you know the target trusts crawlers.
Simplest possible probe, just a URL with a query string. Good for a first sanity check:
--silence and -f jsonl are the two flags that matter most for pipeline use. Without them, banner noise and progress spinners corrupt the output stream.
Every flag above is dual use. The same blind callback that catches an admin's session in your bug bounty target is the one I run against my own lab apps weekly. Use these against systems you own or are explicitly authorised to test. See the legal-framing notes in the cross-site scripting deep dive.
v3 (released 2026-05-25) is a complete Rust rewrite of the Go v2 codebase. The biggest user-visible change is the subcommand surface: v2's `url`, `file`, `pipe`, and `sxss` subcommands are gone, replaced by a single `scan` subcommand that auto-detects the input shape. Stored XSS moves from `dalfox sxss` to `dalfox scan --sxss --sxss-url`. Raw HTTP request files are loaded via `-i raw-http req.txt` instead of `-r req.txt`. New output formats (SARIF, TOML, Markdown), a `payload` subcommand for inspecting built-in collections, an `mcp` subcommand for Model Context Protocol integration, and finer-grained WAF controls (`--waf-min-confidence`, `--waf-bypass`) round out the changes. The Go v2 codebase is preserved on the `v2` branch for security backports.
Both. Reflected detection is the default. For DOM-based XSS, v3 ships an AST analysis engine that runs without spawning a browser; it can be disabled with --skip-ast-analysis when you want a faster reflected-only pass. For a confirmation against runtime DOM mutation you can layer a headless browser on top, but the default AST pass catches the typical sinks on its own.
Use the -b flag with your callback URL. The standard pairing is interactsh (free, self-hostable, part of the ProjectDiscovery toolchain) or XSSHunter (hosted, browser-rendering payloads). Dalfox appends a beacon script to every payload it fires; when one lands in a context that executes, you get a notification with the request details. Combine with --skip-xss-scanning -b for stored/blind-only runs against inputs you cannot directly observe, and reach for --custom-blind-xss-payload when you want a richer template than the default beacon.
Most common causes in v3: parameter mining is off (--skip-mining was set or the parameter is dynamically added by JavaScript and only the AST pass would catch it), the payload set does not cover your context (use --custom-payload with a payload that matches the sink), the reflection is filtered in a way the built-in WAF handling misses (try --waf-evasion combined with hand-tuned payloads), or the response code is on --ignore-return. Run with --debug to see which payloads Dalfox actually fired.
Sources
Authoritative references this article was fact-checked against.
Systems and Network Architect · Chief Technology Officer
Systems and network architect and Chief Technology Officer with more than two decades designing, building, and running production software, cloud and network architecture, Linux systems, and the bare metal underneath them, and lately working AI into the stack. A US Army veteran who served in Operation Iraqi Freedom. What I write here is drawn from the full arc of that work, across architecture, engineering, and operations, not any single job.
A field-tested sqlmap reference: target specification, request shaping, detection tuning, DBMS fingerprinting, enumeration, dumping, file system access, OS command execution, evasion, and tamper scripts. Grouped by what you are actually trying to do.
A field-tested SSRFmap reference: target capture, the real module list (readfiles, portscan, redis, fastcgi, mysql, smtp, axfr, aws, gce, alibaba, digitalocean, github, zabbix, postgres, docker, socksproxy, smbhash, tomcat, memcache, networkscan, custom), handler setup, cloud metadata workflows, and where Burp Repeater is still the better tool.
A field-tested commix reference for OS command injection: targeting, request shaping, detection techniques, tamper scripts, enumeration, shell options, file operations, and evasion. Grouped by what you are actually trying to do.