
wappalyzer-next v2.0.2
Technologien mit einer Wappalyzer-Alternative erkennen
Wappalyzer Next
Dieses Projekt ist ein Kommandozeilenwerkzeug und eine Python-Bibliothek, die die Wappalyzer-Browsererweiterung und deren Fingerabdrücke nutzt, um Technologien zu erkennen. Andere Projekte, die nach der Einstellung des offiziellen Open-Source-Projekts entstanden sind, verwenden veraltete Fingerabdrücke und sind bei dynamischen Webanwendungen ungenau. Dieses Projekt umgeht diese Einschränkungen, indem es die Erweiterung in Chromium über Playwright ausführt.

Installation
Nach der Installation des Python-Pakets installieren Sie Playwrights Chromium-Browser:
python -m playwright install chromium
Installieren Sie in minimalen Linux-Containern auch die Systemabhängigkeiten von Chromium:
python -m playwright install-deps chromium
Als Kommandozeilenwerkzeug installieren
pipx install wappalyzer
pipx run --spec playwright playwright install chromium
Als Bibliothek installieren
Um es als Bibliothek zu verwenden, installieren Sie es mit pip in einem isolierten Container, z. B. venv oder docker. Sie können auch --break-system-packages verwenden, um eine 'normale' Installation durchzuführen, dies wird jedoch nicht empfohlen.
pip install wappalyzer
python -m playwright install chromium
Mit Docker installieren
Schritte
- Klonen Sie das Repository:
git clone https://github.com/s0md3v/wappalyzer-next.git
cd wappalyzer-next
- Mit Docker Compose erstellen und ausführen:
docker compose build
- URLs mit dem Docker-Container scannen:
- Einzelne URL scannen:
docker compose run --rm wappalyzer -i https://example.com
- Mehrere URLs aus einer Datei scannen:
docker compose run --rm wappalyzer -i urls.txt -w 3 -oJ output.json
Für Benutzer
Einige häufige Anwendungsbeispiele sind unten aufgeführt; für weitere Informationen siehe die Liste aller Optionen.
- Einzelne URL scannen:
wappalyzer -i https://example.com - Mehrere URLs aus einer Datei scannen:
wappalyzer -i urls.txt -w 3 - Seitenlade-Timeout für vollständige Scans festlegen:
wappalyzer -i urls.txt -t 15 - Mit Authentifizierung scannen:
wappalyzer -i https://example.com -c "sessionid=abc123; token=xyz789" - Ergebnisse als JSON exportieren:
wappalyzer -i https://example.com -oJ results.json - JSON nach stdout ausgeben:
wappalyzer -i https://example.com -oJ
Wenn ein Ausgabeflag ohne Datei verwendet wird, wird der Bericht nach stdout geschrieben. Statuszeilen, Bannertext und Fehler werden nach stderr geschrieben.
Optionen
Hinweis: Verwenden Sie für Genauigkeit den Scan-Typ 'full' (Standard). 'fast' und 'balanced' verwenden keine Browser-Emulation.
-i: Eingabe-URL oder Datei mit URLs (eine pro Zeile)--scan-type: Scan-Typ (Standard: 'full')fast: Schneller HTTP-basierter Scan (sendet 1 Anfrage)balanced: HTTP-basierter Scan mit mehreren Anfragenfull: Vollständiger Scan mit der Wappalyzer-Erweiterung
-w, --workers: Anzahl der gleichzeitigen Worker (Standard: 5; vollständige Scans sind auf 3 begrenzt)-t, --timeout: Maximale Sekunden, die auf das Laden einer Seite bei vollständigen Scans gewartet werden soll (Standard: 30)-oJ [datei]: JSON-Ausgabedateipfad oder stdout, wenn die Datei weggelassen oder auf-gesetzt wird-oC [datei]: CSV-Ausgabedateipfad oder stdout, wenn die Datei weggelassen oder auf-gesetzt wird-oH [datei]: HTML-Ausgabedateipfad oder stdout, wenn die Datei weggelassen oder auf-gesetzt wird-c, --cookie: Cookie-Header-Zeichenfolge für authentifizierte Scans
Für Entwickler
Die Python-Bibliothek ist auf pypi als wappalyzer verfügbar und kann unter demselben Namen importiert werden.
Die Bibliothek verwenden
Verwenden Sie Wappalyzer, wenn Sie mehr als eine URL scannen. Der Browser wird einmal gestartet, wiederverwendet und geschlossen, wenn der with-Block verlassen wird.
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
results = scanner.analyze_many([
'https://example.com',
'https://github.com',
'https://python.org',
])
for url, technologies in results.items():
print(url)
for name, data in technologies.items():
version = f" {data['version']}" if data['version'] else ""
print(f" {name}{version}")
Der gleiche Scanner kann auch eine URL nach der anderen scannen, ohne Chromium neu zu öffnen:
from wappalyzer import Wappalyzer
with Wappalyzer(workers=3, timeout=30) as scanner:
github = scanner.analyze('https://github.com')
python = scanner.analyze('https://python.org')
Für eine einzelne URL ist analyze() kürzer. Es erstellt einen eigenen Scanner, führt einen Scan durch und schließt ihn.
from wappalyzer import analyze
results = analyze(
url='https://example.com',
scan_type='full', # 'fast', 'balanced' oder 'full'
cookie='sessionid=abc123',
timeout=30
)
Rufen Sie die analyze()-Funktion der obersten Ebene nicht in einer Schleife für große Aufgaben auf. Verwenden Sie Wappalyzer.analyze_many() oder Wappalyzer.analyze() auf einem wiederverwendeten Scanner, damit Chromium und die Wappalyzer-Erweiterung nicht für jede URL neu geladen werden.
Parameter der Funktion analyze()
url(str): Die zu analysierende URLscan_type(str, optional): Art des durchzuführenden Scans'fast': Schneller HTTP-basierter Scan'balanced': HTTP-basierter Scan mit mehreren Anfragen'full': Vollständiger Scan einschließlich JavaScript-Ausführung (Standard)
workers(int, optional): Anzahl der Browser-Worker, die für vollständige Scans erstellt werden sollen (Standard: 1)cookie(str, optional): Cookie-Header-Zeichenfolge für authentifizierte Scanstimeout(int, optional): Maximale Sekunden, die auf das Laden einer Seite bei vollständigen Scans gewartet werden soll (Standard: 30)
Rückgabewert
Gibt ein Wörterbuch mit der URL als Schlüssel und den erkannten Technologien als Wert zurück:
{
"https://github.com": {
"Amazon S3": {
"version": "",
"confidence": 100,
"categories": ["CDN"],
"groups": ["Servers"]
},
"React Router": {
"version": "6",
"confidence": 100,
"categories": ["JavaScript frameworks"],
"groups": ["Web development"]
}
},
"https://example.com": {}
}
FAQ
Warum Chromium und Playwright?
Der vollständige Scanner führt die Wappalyzer-Erweiterung in Chromium über Playwright aus. Die Chromium-Erweiterungsunterstützung in Playwright ist direkt und erfordert weder geckodriver noch Selenium.
Was ist der Unterschied zwischen den Scan-Typen 'fast', 'balanced' und 'full'?
- fast: Sendet eine einzelne HTTP-Anfrage an die URL. Verwendet die Erweiterung nicht.
- balanced: Sendet zusätzliche HTTP-Anfragen an .js-Dateien, /robots.txt und führt DNS-Abfragen durch. Verwendet die Erweiterung nicht.
- full: Verwendet die offizielle Wappalyzer-Erweiterung, um die URL in einem Headless-Browser zu scannen.