アップデート一覧に戻る
New releaseAug 19, 2026

wappalyzer-next v2.0.2

Wappalyzerの代替でテクノロジーを検出

共有

Wappalyzer Next

このプロジェクトは、Wappalyzerブラウザ拡張機能とそのフィンガープリントを使用して技術を検出するコマンドラインツールおよびPythonライブラリです。公式オープンソースプロジェクトの終了後に登場した他のプロジェクトは、古いフィンガープリントを使用しており、動的Webアプリでの精度が不足しています。このプロジェクトは、Playwrightを介してChromiumで拡張機能を実行することで、これらの制限を回避します。

demo

インストール

Pythonパッケージをインストールした後、PlaywrightのChromiumブラウザをインストールします:

python -m playwright install chromium

最小限のLinuxコンテナでは、Chromiumのシステム依存関係もインストールしてください:

python -m playwright install-deps chromium

コマンドラインツールとしてインストール

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

ライブラリとしてインストール

ライブラリとして使用するには、pip を隔離されたコンテナ(例:venvdocker)内でインストールしてください。通常のインストールのために --break-system-packages を使用することもできますが、推奨されません。

pip install wappalyzer
python -m playwright install chromium

Dockerでインストール

手順
  1. リポジトリをクローン:
git clone https://github.com/s0md3v/wappalyzer-next.git
cd wappalyzer-next
  1. Docker Composeでビルドして実行:
docker compose build
  1. Dockerコンテナを使用してURLをスキャンするには:
  • 単一のURLをスキャン:
docker compose run --rm wappalyzer -i https://example.com
  • ファイルから複数のURLをスキャン:
docker compose run --rm wappalyzer -i urls.txt -w 3 -oJ output.json

ユーザー向け

一般的な使用例を以下に示します。詳細は全オプションのリストを参照してください。

  • 単一のURLをスキャン: wappalyzer -i https://example.com
  • ファイルから複数のURLをスキャン: wappalyzer -i urls.txt -w 3
  • フルスキャンのページロードタイムアウトを設定: wappalyzer -i urls.txt -t 15
  • 認証付きでスキャン: wappalyzer -i https://example.com -c "sessionid=abc123; token=xyz789"
  • JSONに結果をエクスポート: wappalyzer -i https://example.com -oJ results.json
  • JSONをstdoutにエクスポート: wappalyzer -i https://example.com -oJ

出力フラグがファイルなしで使用されると、レポートはstdoutに書き込まれます。ステータス行、バナーテキスト、エラーはstderrに書き込まれます。

オプション

注: 正確性を重視する場合は'full'スキャンタイプ(デフォルト)を使用してください。'fast'および'balanced'はブラウザエミュレーションを使用しません。

  • -i: 入力URLまたはURLを含むファイル(1行に1つ)
  • --scan-type: スキャンタイプ(デフォルト: 'full')
    • fast: 高速HTTPベースのスキャン(1リクエスト送信)
    • balanced: より多くのリクエストを送信するHTTPベースのスキャン
    • full: wappalyzer拡張機能を使用した完全スキャン
  • -w, --workers: 同時ワーカー数(デフォルト: 5; フルスキャンは最大3)
  • -t, --timeout: フルスキャンでページロードを待機する最大秒数(デフォルト: 30)
  • -oJ [file]: JSON出力ファイルパス。ファイルを省略または-に設定した場合はstdout
  • -oC [file]: CSV出力ファイルパス。ファイルを省略または-に設定した場合はstdout
  • -oH [file]: HTML出力ファイルパス。ファイルを省略または-に設定した場合はstdout
  • -c, --cookie: 認証スキャン用のCookieヘッダー文字列

開発者向け

Pythonライブラリはpypiでwappalyzerとして利用可能で、同じ名前でインポートできます。

ライブラリの使用

複数のURLをスキャンする場合はWappalyzerを使用してください。ブラウザは一度起動され、再利用され、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}")

同じスキャナーを使用して、Chromiumを再起動せずに一度に1つのURLをスキャンすることもできます:

from wappalyzer import Wappalyzer

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

単一のURLの場合、analyze()の方が短くなります。自身のスキャナーを作成し、1回のスキャンを実行して閉じます。

from wappalyzer import analyze

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

大量のジョブでは、ループ内でトップレベルのanalyze()関数を呼び出さないでください。Wappalyzer.analyze_many()または再利用するスキャナーでWappalyzer.analyze()を使用することで、毎回ChromiumとWappalyzer拡張機能が再読み込みされるのを防ぎます。

analyze() 関数のパラメータ

  • url (str): 分析するURL
  • scan_type (str, オプション): 実行するスキャンの種類
    • 'fast': 高速HTTPベースのスキャン
    • 'balanced': より多くのリクエストを送信するHTTPベースのスキャン
    • 'full': JavaScript実行を含む完全スキャン(デフォルト)
  • workers (int, オプション): フルスキャン用に作成するブラウザワーカー数(デフォルト: 1)
  • cookie (str, オプション): 認証スキャン用のCookieヘッダー文字列
  • timeout (int, オプション): フルスキャンでページロードを待機する最大秒数(デフォルト: 30)

戻り値

URLをキー、検出された技術を値とする辞書を返します:

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

ChromiumとPlaywrightを使用する理由は?

フルスキャナーは、Playwrightを介してChromiumでWappalyzer拡張機能を実行します。PlaywrightでのChromium拡張機能のサポートは直接的であり、geckodriverやSeleniumは必要ありません。

'fast'、'balanced'、'full'の各スキャンタイプの違いは何ですか?

  • fast: URLに単一のHTTPリクエストを送信します。拡張機能は使用しません。
  • balanced: .jsファイルや/robots.txtへの追加HTTPリクエストを送信し、DNSクエリを実行します。拡張機能は使用しません。
  • full: 公式のWappalyzer拡張機能を使用して、ヘッドレスブラウザでURLをスキャンします。

カテゴリ