Retour aux mises à jour
New releaseAug 19, 2026

wappalyzer-next v2.0.2

Détecter les technologies avec une alternative à Wappalyzer

Partager

Wappalyzer Next

Ce projet est un outil en ligne de commande et une bibliothèque Python qui utilise l'extension de navigateur Wappalyzer et ses empreintes numériques pour détecter les technologies. D'autres projets apparus après l'arrêt du projet open-source officiel utilisent des empreintes obsolètes et manquent de précision sur les applications web dynamiques. Ce projet contourne ces limitations en exécutant l'extension dans Chromium via Playwright.

demo

Installation

Après avoir installé le paquet Python, installez le navigateur Chromium de Playwright :

python -m playwright install chromium

Dans les conteneurs Linux minimaux, installez également les dépendances système de Chromium :

python -m playwright install-deps chromium

Installer comme outil en ligne de commande

pipx install wappalyzer
pipx run --spec playwright playwright install chromium

Installer comme bibliothèque

Pour l'utiliser comme bibliothèque, installez-la avec pip dans un conteneur isolé, par exemple venv ou docker. Vous pouvez aussi utiliser --break-system-packages pour une installation « normale », mais ce n'est pas recommandé.

pip install wappalyzer
python -m playwright install chromium

Installer avec Docker

Étapes
  1. Clonez le dépôt :
git clone https://github.com/s0md3v/wappalyzer-next.git
cd wappalyzer-next
  1. Construisez et exécutez avec Docker Compose :
docker compose build
  1. Pour analyser des URL avec le conteneur Docker :
  • Analyser une seule URL :
docker compose run --rm wappalyzer -i https://example.com
  • Analyser plusieurs URL à partir d'un fichier :
docker compose run --rm wappalyzer -i urls.txt -w 3 -oJ output.json

Pour les utilisateurs

Quelques exemples d'utilisation courante sont donnés ci-dessous, reportez-vous à la liste de toutes les options pour plus d'informations.

  • Analyser une seule URL : wappalyzer -i https://example.com
  • Analyser plusieurs URL à partir d'un fichier : wappalyzer -i urls.txt -w 3
  • Définir le délai d'attente de chargement de page pour les analyses complètes : wappalyzer -i urls.txt -t 15
  • Analyser avec authentification : wappalyzer -i https://example.com -c "sessionid=abc123; token=xyz789"
  • Exporter les résultats au format JSON : wappalyzer -i https://example.com -oJ results.json
  • Exporter le JSON vers stdout : wappalyzer -i https://example.com -oJ

Lorsqu'un indicateur de sortie est utilisé sans fichier, le rapport est écrit sur stdout. Les lignes de statut, le texte de bannière et les erreurs sont écrits sur stderr.

Options

Note : Pour la précision, utilisez le type d'analyse 'full' (par défaut). 'fast' et 'balanced' n'utilisent pas l'émulation de navigateur.

  • -i : URL d'entrée ou fichier contenant des URL (une par ligne)
  • --scan-type : Type d'analyse (par défaut : 'full')
    • fast : Analyse rapide basée sur HTTP (envoie 1 requête)
    • balanced : Analyse basée sur HTTP avec plus de requêtes
    • full : Analyse complète utilisant l'extension wappalyzer
  • -w, --workers : Nombre de workers simultanés (par défaut : 5 ; les analyses complètes sont limitées à 3)
  • -t, --timeout : Nombre maximal de secondes à attendre le chargement d'une page dans les analyses complètes (par défaut : 30)
  • -oJ [file] : Chemin du fichier de sortie JSON, ou stdout lorsque le fichier est omis ou défini sur -
  • -oC [file] : Chemin du fichier de sortie CSV, ou stdout lorsque le fichier est omis ou défini sur -
  • -oH [file] : Chemin du fichier de sortie HTML, ou stdout lorsque le fichier est omis ou défini sur -
  • -c, --cookie : Chaîne d'en-tête de cookie pour les analyses authentifiées

Pour les développeurs

La bibliothèque Python est disponible sur PyPI en tant que wappalyzer et peut être importée sous le même nom.

Utiliser la bibliothèque

Utilisez Wappalyzer lorsque vous analysez plus d'une URL. Le navigateur est démarré une fois, réutilisé et fermé à la sortie du bloc with.

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}")

Le même scanner peut également analyser une seule URL à la fois sans rouvrir Chromium :

from wappalyzer import Wappalyzer

with Wappalyzer(workers=3, timeout=30) as scanner:
    github = scanner.analyze('https://github.com')
    python = scanner.analyze('https://python.org')

Pour une seule URL, analyze() est plus court. Il crée son propre scanner, exécute une analyse et le ferme.

from wappalyzer import analyze

results = analyze(
    url='https://example.com',
    scan_type='full',  # 'fast', 'balanced', or 'full'
    cookie='sessionid=abc123',
    timeout=30
)

N'appelez pas la fonction analyze() de premier niveau dans une boucle pour les tâches volumineuses. Utilisez Wappalyzer.analyze_many() ou Wappalyzer.analyze() sur un scanner réutilisé afin que Chromium et l'extension Wappalyzer ne soient pas rechargés pour chaque URL.

Paramètres de la fonction analyze()

  • url (str) : L'URL à analyser
  • scan_type (str, optionnel) : Type d'analyse à effectuer
    • 'fast' : Analyse rapide basée sur HTTP
    • 'balanced' : Analyse basée sur HTTP avec plus de requêtes
    • 'full' : Analyse complète incluant l'exécution JavaScript (par défaut)
  • workers (int, optionnel) : Nombre de workers de navigateur à créer pour les analyses complètes (par défaut : 1)
  • cookie (str, optionnel) : Chaîne d'en-tête de cookie pour les analyses authentifiées
  • timeout (int, optionnel) : Nombre maximal de secondes à attendre le chargement d'une page dans les analyses complètes (par défaut : 30)

Valeur de retour

Renvoie un dictionnaire avec l'URL comme clé et les technologies détectées comme valeur :

{
  "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

Pourquoi Chromium et Playwright ?

Le scanner complet exécute l'extension Wappalyzer dans Chromium via Playwright. La prise en charge des extensions Chromium dans Playwright est directe et ne nécessite ni geckodriver ni Selenium.

Quelle est la différence entre les types d'analyse 'fast', 'balanced' et 'full' ?

  • fast : Envoie une seule requête HTTP à l'URL. N'utilise pas l'extension.
  • balanced : Envoie des requêtes HTTP supplémentaires vers des fichiers .js, /robots.txt et effectue des requêtes DNS. N'utilise pas l'extension.
  • full : Utilise l'extension officielle Wappalyzer pour analyser l'URL dans un navigateur sans tête.

Catégories