Usage

This section covers the basic usage of DeadFinder and provides examples for common use cases.

Basic Usage

Scan a Single URL

To scan a single URL for dead links:

deadfinder url https://www.example.com

Scan URLs from a File

Create a file with URLs (one per line) and scan them:

# Create urls.txt with URLs
echo "https://www.example.com" > urls.txt
echo "https://www.example.org" >> urls.txt

# Scan the file
deadfinder file urls.txt

Scan from Sitemap

Scan all URLs listed in a sitemap:

deadfinder sitemap https://www.example.com/sitemap.xml

Scan from STDIN (Pipe Mode)

You can pipe URLs from other commands:

cat urls.txt | deadfinder pipe

Or combine with other tools:

echo "https://www.example.com" | deadfinder pipe

Output Options

Save Results to File

Save the scan results to a file:

deadfinder url https://www.example.com -o results.json

Different Output Formats

DeadFinder supports JSON (default), YAML, and CSV output formats:

# JSON format (default)
deadfinder url https://www.example.com -f json -o results.json

# YAML format
deadfinder url https://www.example.com -f yaml -o results.yaml

# CSV format
deadfinder url https://www.example.com -f csv -o results.csv

Performance Options

Adjust Concurrency

Control the number of concurrent workers (default is 50):

deadfinder url https://www.example.com --concurrency=30

Set Timeout

Set the request timeout in seconds (default is 10):

deadfinder url https://www.example.com --timeout=15

Combine Options

deadfinder sitemap https://www.example.com/sitemap.xml \
  --concurrency=30 \
  --timeout=15 \
  -o results.json

Filtering Options

URL Pattern Matching

Match only URLs that match a specific pattern:

deadfinder url https://www.example.com --match="api|v1|graphql"

Ignore URL Patterns

Ignore URLs that match specific patterns:

deadfinder url https://www.example.com --ignore="static|images|css"

Include 30x Redirections

By default, redirects (30x) are not considered as dead links. To include them:

deadfinder url https://www.example.com --include30x

Network Options

Custom Headers

Add custom HTTP headers to the initial request:

deadfinder url https://www.example.com --headers "Authorization: Bearer token"

Add custom headers for worker requests:

deadfinder url https://www.example.com --worker-headers "User-Agent: CustomBot"

Custom User-Agent

Set a custom User-Agent string:

deadfinder url https://www.example.com --user-agent="MyBot/1.0"

Proxy Configuration

Use a proxy server for requests:

deadfinder url https://www.example.com --proxy="http://localhost:8080"

With authentication:

deadfinder url https://www.example.com \
  --proxy="http://localhost:8080" \
  --proxy-auth="username:password"

Coverage and Visualization

Enable Coverage Analysis

Get detailed statistics about your scan:

deadfinder url https://www.example.com --coverage

This will show:

  • Total URLs tested
  • Total dead links found
  • Coverage percentage

Visualize Results

Generate a visualization of the results:

deadfinder url https://www.example.com --visualize=report.png

Output Modes

Silent Mode

Suppress progress output during scanning:

deadfinder url https://www.example.com --silent

Verbose Mode

Enable detailed output for debugging:

deadfinder url https://www.example.com --verbose

Debug Mode

Enable debug output for troubleshooting:

deadfinder url https://www.example.com --debug

Advanced Examples

Complete Workflow

Here's a complete example combining multiple options:

deadfinder sitemap https://www.example.com/sitemap.xml \
  --concurrency=50 \
  --timeout=10 \
  --include30x \
  --match="blog|docs" \
  --ignore="static|cdn" \
  --headers "User-Agent: DeadFinderBot" \
  --coverage \
  --visualize=report.png \
  -f json \
  -o results.json

Monitoring Multiple Sites

Create a script to monitor multiple sites:

#!/bin/bash
for site in site1.com site2.com site3.com; do
  deadfinder url "https://$site" \
    --silent \
    -o "results-${site}.json"
done

Shell Completion

Generate shell completion scripts for bash, zsh, or fish:

# Bash
deadfinder completion bash > /etc/bash_completion.d/deadfinder

# Zsh
deadfinder completion zsh > ~/.zsh/completion/_deadfinder

# Fish
deadfinder completion fish > ~/.config/fish/completions/deadfinder.fish