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 package
  • yarn : Yarn package
  • docker : Container
  • binary : 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.com
  • wappalyzer https://google.com --pretty
  • wappalyzer https://apple.com --json
  • wappalyzer 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 processing
  • grep : Filter results
  • sort -u : Deduplicate
  • tee : Save and display

JSON Fields

  • urls : Target URLs
  • technologies : Detected tech
  • categories : Tech categories
  • versions : 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
FlagDescriptionExample
-i <file>Input file with URLs-i urls.txt
--max-threadsParallel scans--max-threads 10
--delay <ms>Delay between scans--delay 1000
--recursiveFollow links--recursive
--max-depthRecursion depth--max-depth 3
Pro Tip: Batch Processing
Create URL list from subdomain enumeration:
cat subdomains.txt | sed 's/^/https:\/\//' > urls.txt
Then 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:
CMS : WordPress, Drupal, Joomla
Web Framework : React, Angular, Vue.js
Analytics : Google Analytics, Matomo
CDN : Cloudflare, Akamai
Web Server : Apache, nginx, IIS

6. 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