Basic Usage #
Crawling a Single URL #
bash Copy
katana -u https://example.com
katana -u https://example.com -v
katana -u https://example.com -debug
Crawling Multiple URLs #
bash Copy
katana -u https://example.com,https://test.com
katana -list urls.txt
cat urls.txt| katana
Output Options #
bash Copy
katana -u https://example.com -o results.txt
katana -u https://example.com -json -o results.json
katana -u https://example.com -silent
Crawling Options #
Crawling Depth and Scope #
bash Copy
katana -u https://example.com -depth 3
katana -u https://example.com -crawl-scope subs
katana -u https://example.com -crawl-scope out-of-scope
katana -u https://example.com -crawl-scope strict
Crawling Strategies #
bash Copy
katana -u https://example.com -crawler standard
katana -u https://example.com -crawler js
katana -u https://example.com -crawler sitemap
katana -u https://example.com -crawler robots
katana -u https://example.com -crawler standard,js,sitemap,robots
Field Selection #
bash Copy
katana -u https://example.com -field url,path,method
Advanced Usage #
URL Filtering #
bash Copy
katana -u https://example.com -match-regex "admin|login|dashboard"
katana -u https://example.com -filter-regex "logout|static|images"
katana -u https://example.com -field url -match-condition "contains('admin')"
Resource Filtering #
bash Copy
katana -u https://example.com -extension js,php,aspx
katana -u https://example.com -exclude-extension png,jpg,gif
katana -u https://example.com -mime-type application/json,text/html
bash Copy
katana -u https://example.com -form-fill
katana -u https://example.com -form-fill -field-name "username=admin&password=admin"
JavaScript Parsing #
bash Copy
katana -u https://example.com -js-crawl
katana -u https://example.com -js-crawl -headless-timeout 20
katana -u https://example.com -js-crawl -chrome-path /path/to/chrome
Concurrency and Rate Limiting #
bash Copy
katana -u https://example.com -concurrency 20
katana -u https://example.com -delay 100
katana -u https://example.com -rate-limit 50
Timeout Options #
bash Copy
katana -u https://example.com -timeout 10
katana -u https://example.com -js-crawl -headless-timeout 30
Optimization for Large Scans #
bash Copy
katana -u https://example.com -no-form-fill
katana -u https://example.com -no-js-crawl
katana -u https://example.com -max-urls 1000
Pipeline with Subfinder #
bash Copy
subfinder -d example.com -silent| katana -silent
subfinder -d example.com -silent| katana -silent -extension js
Pipeline with HTTPX #
bash Copy
httpx -l urls.txt -silent| katana -silent
katana -u https://example.com -silent| httpx -silent
Pipeline with Nuclei #
bash Copy
katana -u https://example.com -silent| nuclei -t cves/
katana -u https://example.com -silent -extension js| nuclei -t exposures/
Output Customization #
bash Copy
katana -u https://example.com -silent
katana -u https://example.com -field url,path,method -o results.txt
katana -u https://example.com -silent| wc -l
katana -u https://example.com -silent| sort
Filtering Output #
bash Copy
katana -u https://example.com -silent| grep "\.js$"
katana -u https://example.com -silent| grep "/api/"
katana -u https://example.com -silent| awk -F/ '\\\\{print $3\\\\}' | sort -u
Advanced Filtering #
URL Pattern Matching #
bash Copy
katana -u https://example.com -match-regex "^https://example.com/admin"
katana -u https://example.com -filter-regex "^https://example.com/static"
katana -u https://example.com -match-regex "id=[0-9]+"
Content Filtering #
bash Copy
katana -u https://example.com -match-condition "contains(body, 'admin')"
katana -u https://example.com -match-condition "status == 200"
katana -u https://example.com -match-condition "contains(content_type, 'application/json')"
Proxy and Network Options #
bash Copy
katana -u https://example.com -proxy http://127.0.0.1:8080
katana -u https://example.com -proxy socks5://127.0.0.1:1080
katana -u https://example.com -header "User-Agent: Mozilla/5.0" -header "Cookie: session=123456"
katana -u https://example.com -cookie "session=123456; user=admin"
Miscellaneous Features #
bash Copy
katana -u https://example.com -form-fill
katana -u https://example.com -form-fill -field-name "username=admin&password=admin"
Crawling Specific Paths #
bash Copy
katana -u https://example.com -paths /admin,/login,/dashboard
katana -u https://example.com -paths-file paths.txt
Storing Responses #
bash Copy
katana -u https://example.com -store-response
katana -u https://example.com -store-response -store-response-dir responses/
Troubleshooting #
Common Issues #
JavaScript Parsing Issues
bash Copy
katana -u https://example.com -js-crawl -headless-timeout 30
katana -u https://example.com -js-crawl -chrome-path /usr/bin/google-chrome
Rate Limiting by Target
bash Copy
katana -u https://example.com -concurrency 5
katana -u https://example.com -delay 500
Memory Issues
bash Copy
katana -u https://example.com -max-urls 500
katana -u https://example.com -no-js-crawl
Crawling Scope Issues
bash Copy
katana -u https://example.com -crawl-scope strict
katana -u https://example.com -crawl-scope subs
Debugging #
bash Copy
katana -u https://example.com -v
katana -u https://example.com -debug
katana -u https://example.com -debug -show-request -show-response
Configuration #
Configuration File #
Katana uses a configuration file located at $HOME/.config/katana/config.yaml. You can customize various settings in this file:
bash Copy
concurrency: 10
delay: 100
timeout: 10
max-depth: 3
crawl-scope: strict
crawl-duration: 0
field: url,path,method
extensions: js,php,aspx
Environment Variables #
bash Copy
export KATANA_CONCURRENCY = 10
export KATANA_DELAY = 100
export KATANA_TIMEOUT = 10
export KATANA_MAX_DEPTH = 3
Reference #
Command Line Options #
Flag
Description
-u, -url
Target URL to crawl
-list, -l
File containing list of URLs to crawl
-o, -output
File to write output to
-json
Write output in JSON format
-silent
Show only URLs in output
-v, -verbose
Show verbose output
-depth
Maximum depth to crawl (default: 2)
-crawl-scope
Crawling scope (strict, subs, out-of-scope)
-crawler
Crawler types to use (standard, js, sitemap, robots)
-field
Fields to display in output
-extension
File extensions to include
-exclude-extension
File extensions to exclude
-match-regex
Regex pattern to match URLs
-filter-regex
Regex pattern to filter URLs
-match-condition
Condition to match URLs
-form-fill
Enable automatic form filling
-js-crawl
Enable JavaScript parsing
-headless-timeout
Timeout for headless browser (seconds)
-chrome-path
Path to Chrome browser
-concurrency
Number of concurrent requests
-delay
Delay between requests (milliseconds)
-rate-limit
Maximum number of requests per second
-timeout
Timeout for HTTP requests (seconds)
-max-urls
Maximum number of URLs to crawl
-proxy
HTTP/SOCKS5 proxy to use
-header
Custom header to add to all requests
-cookie
Custom cookies to add to all requests
-paths
Specific paths to crawl
-paths-file
File containing paths to crawl
-store-response
Store all responses
-store-response-dir
Directory to store responses
-version
Show Katana version
Crawling Scopes #
Scope
Description
strict
Crawl only the exact domain provided
subs
Crawl the domain and its subdomains
out-of-scope
Crawl any domain, regardless of the initial domain
Crawler Types #
Type
Description
standard
Standard HTTP crawler
js
JavaScript parser using headless browser
sitemap
Sitemap-based crawler
robots
Robots.txt-based crawler
Field Options #
Field
Description
url
Full URL
path
URL path
method
HTTP method
host
Host part of URL
fqdn
Fully qualified domain name
scheme
URL scheme (http/https)
port
URL port
query
Query parameters
fragment
URL fragment
endpoint
URL endpoint