Ultimate Wappalyzer Cheat Sheet
Ultimate Wappalyzer Cheat Sheet
Technology stack detection. Identify web technologies, frameworks, CMS, analytics, and more on any website.
1. CLI Installation
Install and configure the Wappalyzer command-line interface.
Install via NPM
npm install -g wappalyzer
Install via Yarn
yarn global add wappalyzer
Install via Docker
docker pull wappalyzer/cli
Check Version
wappalyzer --version
Show Help
wappalyzer --help
Installation Methods
npm: Node.js packageyarn: Yarn packagedocker: Containerbinary: Pre-built binary
Dependencies
- Node.js 14+
- Chrome/Chromium
- Puppeteer
- Internet connection
2. Basic Usage
Scan Single URL
wappalyzer https://example.com
Scan with Pretty Output
wappalyzer https://example.com --pretty
Scan with JSON Output
wappalyzer https://example.com --json
Scan with Verbose Output
wappalyzer https://example.com --verbose
Scan with Timeout
wappalyzer https://example.com --timeout 30
Scan with User Agent
wappalyzer https://example.com --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
Basic Flags
--pretty: Formatted output--json: JSON output--verbose: Verbose mode--timeout <sec>: Set timeout--user-agent <ua>: Custom UA
Quick Examples
wappalyzer https://tesla.comwappalyzer https://google.com --prettywappalyzer https://apple.com --jsonwappalyzer https://amazon.com --timeout 60
3. Output Formats
Default Output
wappalyzer https://example.com
JSON Output
wappalyzer https://example.com --json
Pretty JSON
wappalyzer https://example.com --pretty
Save to File
wappalyzer https://example.com --json > results.json
Extract Technologies
wappalyzer https://example.com --json | jq -r '.technologies[].name'
Extract Categories
wappalyzer https://example.com --json | jq -r '.technologies[].categories[]' | sort -u
Processing Output
jq: JSON processinggrep: Filter resultssort -u: Deduplicatetee: Save and display
JSON Fields
urls: Target URLstechnologies: Detected techcategories: Tech categoriesversions: Version info
4. Batch Scanning
Multiple URLs
wappalyzer https://example.com https://example.org https://example.net
Scan from File
wappalyzer -i urls.txt
Batch with JSON Output
wappalyzer -i urls.txt --json > batch-results.json
Batch with Threads
wappalyzer -i urls.txt --max-threads 10
Batch with Delay
wappalyzer -i urls.txt --delay 1000
| Flag | Description | Example |
|---|---|---|
-i <file> | Input file with URLs | -i urls.txt |
--max-threads | Parallel scans | --max-threads 10 |
--delay <ms> | Delay between scans | --delay 1000 |
--recursive | Follow links | --recursive |
--max-depth | Recursion depth | --max-depth 3 |
Pro Tip: Batch Processing
Create URL list from subdomain enumeration:
Then batch scan:
Create URL list from subdomain enumeration:
cat subdomains.txt | sed 's/^/https:\/\//' > urls.txtThen batch scan:
wappalyzer -i urls.txt --json --max-threads 5
5. API Integration
Python Integration
#!/usr/bin/env python3
import subprocess
import json
def wappalyzer_scan(url):
"""Scan URL with Wappalyzer"""
try:
result = subprocess.run(
['wappalyzer', url, '--json'],
capture_output=True,
text=True,
timeout=30
)
return json.loads(result.stdout)
except Exception as e:
print(f"Error scanning {url}: {e}")
return None
# Scan single URL
results = wappalyzer_scan("https://example.com")
if results:
for tech in results.get('technologies', []):
print(f"Technology: {tech['name']}")
print(f"Version: {tech.get('version', 'N/A')}")
print(f"Categories: {', '.join(tech['categories'])}")
print("---")
Node.js Integration
#!/usr/bin/env node
const { exec } = require('child_process');
function wappalyzerScan(url) {
return new Promise((resolve, reject) => {
exec(`wappalyzer ${url} --json`, (error, stdout, stderr) => {
if (error) {
reject(error);
return;
}
resolve(JSON.parse(stdout));
});
});
}
async function main() {
try {
const results = await wappalyzerScan('https://example.com');
results.technologies.forEach(tech => {
console.log(`Technology: ${tech.name}`);
console.log(`Version: ${tech.version || 'N/A'}`);
console.log('---');
});
} catch (error) {
console.error('Error:', error);
}
}
main();
Bash Integration
#!/bin/bash
# wappalyzer-scan.sh - Scan and process results
URL=$1
echo "[+] Scanning $URL..."
wappalyzer "$URL" --json > results.json
echo "[+] Detected technologies:"
jq -r '.technologies[] | "\(.name) \(.version // "")"' results.json
echo "[+] Categories:"
jq -r '.technologies[].categories[]' results.json | sort -u
Docker Integration
# Scan with Docker
docker run --rm wappalyzer/cli https://example.com
# Batch scan with volume
docker run --rm -v $(pwd):/data wappalyzer/cli -i /data/urls.txt --json > results.json
Pro Tip: Technology Categories
Common categories detected by Wappalyzer:
Common categories detected by Wappalyzer:
CMS : WordPress, Drupal, JoomlaWeb Framework : React, Angular, Vue.jsAnalytics : Google Analytics, MatomoCDN : Cloudflare, AkamaiWeb Server : Apache, nginx, IIS6. Automation Scripts
Technology Stack Recon
#!/bin/bash
# tech-recon.sh - Technology stack reconnaissance
DOMAIN=$1
OUTPUT="tech-stack-$DOMAIN.txt"
echo "[+] Scanning $DOMAIN..."
wappalyzer "https://$DOMAIN" --json > results.json
echo "Technology Stack for $DOMAIN" > "$OUTPUT"
echo "============================" >> "$OUTPUT"
jq -r '.technologies[] | "\(.name) \(.version // "")"' results.json >> "$OUTPUT"
echo "[+] Results in $OUTPUT"
cat "$OUTPUT"
Bulk Technology Scanner
#!/bin/bash
# bulk-scan.sh - Scan multiple domains for technology stack
while read -r domain; do
echo "[+] Scanning $domain..."
wappalyzer "https://$domain" --json > "tech-$domain.json"
# Extract CMS and framework
cms=$(jq -r '.technologies[] | select(.categories[] | contains("CMS")) | .name' "tech-$domain.json" | head -1)
framework=$(jq -r '.technologies[] | select(.categories[] | contains("Web Framework")) | .name' "tech-$domain.json" | head -1)
echo "$domain: CMS=$cms, Framework=$framework"
done < domains.txt
CMS Detection Script
#!/bin/bash
# cms-detect.sh - Detect CMS on multiple sites
while read -r url; do
echo "[+] Checking $url..."
result=$(wappalyzer "$url" --json | jq -r '.technologies[] | select(.categories[] | contains("CMS")) | .name')
if [ -n "$result" ]; then
echo " CMS: $result"
else
echo " No CMS detected"
fi
done < urls.txt
Version Vulnerability Checker
#!/bin/bash
# version-check.sh - Check for outdated versions
URL=$1
echo "[+] Scanning $URL..."
wappalyzer "$URL" --json > results.json
echo "[+] Detected versions:"
jq -r '.technologies[] | select(.version != null) | "\(.name): \(.version)"' results.json
echo "[+] Check for vulnerabilities at:"
jq -r '.technologies[] | select(.version != null) | "https://www.cvedetails.com/version-search.php?name=\(.name)&version=\(.version)"' results.json
Continuous Monitoring
#!/bin/bash
# monitor.sh - Monitor technology changes
URL=$1
PREVIOUS="previous-tech.json"
CURRENT="current-tech.json"
while true; do
wappalyzer "$URL" --json > "$CURRENT"
if [ -f "$PREVIOUS" ]; then
echo "[+] Technology changes detected:"
diff <(jq -S . "$PREVIOUS") <(jq -S . "$CURRENT") | grep "^[<>]" | sed 's/^[<>] //'
fi
mv "$CURRENT" "$PREVIOUS"
sleep 86400
done
Pro Tip: Integration with Recon Pipeline
Combine Wappalyzer with subdomain enumeration:
subfinder -d example.com | httprobe | xargs -I{} wappalyzer {} --json > tech-stack.json
Then analyze results:
jq -r '.technologies[].name' tech-stack.json | sort | uniq -c | sort -rn
Post a Comment