Zum Inhalt springen

httprobe

httprobe is a lightweight Go utility that takes a list of domains and tests each one to see if it’s responding to HTTP or HTTPS requests. It’s particularly useful during the reconnaissance phase of penetration testing to identify which domains have active web servers. The tool is part of the ProjectDiscovery toolkit and is commonly found in Kali Linux.

httprobe efficiently handles large lists of domains and provides multiple options for customization, including support for custom ports, timeout configuration, and header injection.

# Using Go
go install -v github.com/tomnomnom/httprobe@latest

# On Kali Linux (pre-installed)
httprobe --version

# Or compile from source
git clone https://github.com/tomnomnom/httprobe
cd httprobe
go build -o httprobe
sudo mv httprobe /usr/local/bin/
CommandDescription
httprobe < domains.txtProbe domains from file (stdin)
echo "example.com" | httprobeProbe a single domain via pipe
httprobe -hDisplay help information
httprobe -vShow verbose output

httprobe expects one domain per line:

example.com
google.com
github.com
stackoverflow.com
# Probe domains from a file
cat domains.txt | httprobe

# Probe with verbose output
cat domains.txt | httprobe -v

# Probe single domain
echo "example.com" | httprobe

# Combine with other tools
subfinder -d example.com -silent | httprobe
OptionDescriptionExample
-pSpecify custom portshttprobe -p 8080,8443
-cConcurrency (threads)httprobe -c 50
--prefer-httpsPrioritize HTTPS resultshttprobe --prefer-https
OptionDescriptionExample
-tTimeout in millisecondshttprobe -t 5000
--skip-saveDon’t save resultshttprobe --skip-save
-sStdin mode (default)httprobe -s
# Probe with custom timeout (10 seconds)
cat domains.txt | httprobe -t 10000

# Probe with increased concurrency (100 threads)
cat domains.txt | httprobe -c 100

# Probe custom ports
cat domains.txt | httprobe -p 8080,8443,9000

# Probe with HTTPS preference and custom timeout
cat domains.txt | httprobe --prefer-https -t 5000

# Combine verbose and concurrency
cat domains.txt | httprobe -v -c 50
# Get subdomains and probe for HTTP/HTTPS
subfinder -d example.com -silent | httprobe

# Use with assetfinder
assetfinder example.com | httprobe

# Combine with amass for comprehensive discovery
amass enum -d example.com -silent | httprobe

# Multi-domain enumeration with httprobe
for domain in example.com test.com sample.com; do
  subfinder -d $domain -silent | httprobe
done
# Save results to file
cat domains.txt | httprobe > live_hosts.txt

# Count results
cat domains.txt | httprobe | wc -l

# Filter for HTTPS only
cat domains.txt | httprobe | grep "^https://"

# Filter for HTTP only
cat domains.txt | httprobe | grep "^http://" | grep -v "^https://"

# Check specific status codes with curl
cat live_hosts.txt | xargs -I {} curl -o /dev/null -s -w "{} -> %{http_code}\n" {}
# High concurrency for large lists
cat large_domain_list.txt | httprobe -c 200 -t 3000

# Store output with timestamp
cat domains.txt | httprobe > results_$(date +%Y%m%d_%H%M%S).txt

# Parallel processing with GNU parallel
cat domains.txt | parallel --pipe --block 10M httprobe -c 50

# Resume scanning if interrupted
comm -23 <(sort domains.txt) <(sort results.txt | cut -d: -f1 | sort) | httprobe >> results.txt
# Discover live web servers across target domain
subfinder -d target.com -silent | httprobe -c 100 -t 5000

# Identify web server versions
cat live_hosts.txt | while read url; do
  curl -I -s $url | grep -i "server:"
done

# Extract title tags
cat live_hosts.txt | while read url; do
  curl -s $url | grep -oP '<title>\K[^<]+' || echo "No title: $url"
done
# Enumerate all subdomains and probe
assetfinder -subs-only example.com | httprobe | tee -a scope.txt

# Verify live targets before testing
cat scope.txt | httprobe --prefer-https > verified_targets.txt

# Quick HTTP status check
while read url; do
  status=$(curl -o /dev/null -s -w "%{http_code}" $url)
  echo "$url -> $status"
done < scope.txt
# Probe internal domain list
cat internal_domains.txt | httprobe -c 50

# Identify web services on custom ports
cat hosts.txt | httprobe -p 8080,8443,9000,3000

# Log detailed discovery results
cat hosts.txt | httprobe -v > discovery_$(date +%s).log 2>&1

httprobe returns the full URL (including protocol) for accessible services:

http://example.com
https://example.com
http://subdomain.example.com
https://api.example.com
# Create domain list
echo -e "google.com\ngithub.com\nstackoverflow.com" > targets.txt

# Probe domains
httprobe < targets.txt

# Expected output:
# http://google.com
# https://google.com
# http://github.com
# https://github.com
# Full reconnaissance pipeline
subfinder -d target.com -silent | \
  httprobe -c 100 -t 5000 --prefer-https | \
  tee target_hosts.txt

# Count results
wc -l target_hosts.txt
# Test common development ports
cat hosts.txt | httprobe -p 8000,8080,8443,3000,5000,9000

# Results will include:
# http://host1:8080
# https://host1:8443
# Large-scale scanning with optimal settings
time cat 10000_domains.txt | \
  httprobe -c 200 -t 3000 > results.txt

# Monitor progress
cat 10000_domains.txt | httprobe -v -c 100 | tee progress.log
  • Concurrency: Increase with -c flag; 50-100 is typical, 200+ for very large lists
  • Timeout: Reduce timeout with -t for faster scanning; 3000-5000ms is reasonable
  • Output Buffering: Redirect to file to see results as they complete
  • Memory: httprobe is lightweight; suitable for resource-constrained environments
IssueSolution
No resultsIncrease timeout: httprobe -t 10000
Slow scanningIncrease concurrency: httprobe -c 100
Connection refusedCheck network connectivity and firewall rules
Empty inputVerify domain list format (one per line)
Port conflictsTry alternative ports with -p option
  • Authorization: Only probe domains/networks you own or have explicit permission to test
  • Rate Limiting: Respect server limits; use appropriate concurrency settings
  • Logging: Monitor and log all discovery activities for audit trails
  • False Positives: Verify results with manual inspection before further testing
  • subfinder: Subdomain enumeration
  • assetfinder: Asset discovery
  • amass: Advanced OSINT subdomain enumeration
  • curl/wget: HTTP client utilities for detailed investigation
  • nmap: Network scanning and port discovery