Sherlock は、指定したユーザー名が 381 以上の SNS・Web サービス に存在するかを一括で並列検索する Python 製の CLI ツール。GitHub、Twitter/X、Instagram、Reddit、Qiita など多種多様なサイトに対応し、各サイトへの HTTP リクエスト結果(ステータスコード・レスポンス本文・リダイレクト先)を解析して「アカウントが存在するか否か」を判定する。
検出方式はサイトごとに 3 種類使い分けている:
| 方式 | 判定ロジック |
|---|---|
status_code |
404 等の特定ステータスコードで「不在」と判定 |
message |
レスポンス本文中のエラーメッセージの有無で判定 |
response_url |
リダイレクト先 URL で判定 |
| 観点 | 手動検索 / Google検索 | 類似ツール (Namechk等 Web版) | Sherlock |
|---|---|---|---|
| 対応サイト数 | 1つずつ手動 | 数十〜百程度 | 381+(随時更新) |
| 速度 | 非常に遅い | 中程度 | 20並列リクエストで高速 |
| プライバシー | — | 第三者サービスに依存 | ローカル実行、ログなし |
| カスタマイズ性 | なし | なし | プロキシ/Tor対応、サイト絞り込み、NSFW除外、独自サイト追加可 |
| 出力形式 | — | Web画面のみ | コンソール / TXT / CSV / XLSX |
| 自動化 | 困難 | API次第 | CLI でパイプライン連携容易 |
特に OSINT(公開情報調査) の文脈で、セキュリティ調査・ペネトレーションテスト・自分のデジタルフットプリント確認に重宝される。Kali Linux や BlackArch にも公式パッケージとして収録されている点が信頼性を裏付ける。
1. インストール
$ pipx install sherlock-project # または docker / brew / apt
2. 基本検索(ユーザー名を指定するだけ)
$ sherlock john_doe
→ 381サイトに並列リクエスト → 見つかったプロフィールURLをリアルタイム表示
3. よく使うオプション
$ sherlock john_doe jane_doe # 複数ユーザー名を同時検索
$ sherlock --site GitHub --site Twitter john_doe # 特定サイトに絞る
$ sherlock --csv --xlsx john_doe # CSV/Excelで結果を保存
$ sherlock --tor john_doe # Tor経由で匿名検索
$ sherlock --nsfw john_doe # NSFWサイトも含める
$ sherlock "john{?}doe" # john_doe, john-doe, john.doe を一括生成
4. 結果の確認
- コンソール: 色付きでリアルタイム表示(緑=発見、黄=不明、赤=未発見)
- ファイル: john_doe.txt に発見URLが一覧保存される
- --browse オプションで見つかったURLをブラウザで一括オープン
アーキテクチャ要点: サイト定義は resources/data.json に集約されており、デフォルトでは起動時に GitHub 上の最新版を取得する。これにより、ツール本体を更新しなくてもサイト対応状況が常に最新に保たれる設計になっている。