注意: 本記事はドキュメント・公開情報をもとにした評価記事です。コード例はシミュレーションです。
3行要約
- 400以上の主要SNSを対象に、特定のユーザー名が使用されているかを一括で自動調査する
- HTTPレスポンス解析により、APIキー不要かつ高速(1分以内)に広範囲のサイトをスキャンできる
- OSINT調査や自社ブランドのなりすまし確認をしたいエンジニアには必須、単なる個人利用なら不要
📦 この記事に関連する商品(楽天メインで価格確認)
Beryl AX (Wi-Fi 6 Router)VPN/Torをルーターレベルで噛ませ、安全なOSINT調査環境を構築するのに最適
※アフィリエイトリンクを含みます
結論から: このツールは「買い」か
結論から言うと、セキュリティエンジニアやデジタルフォレンジック、あるいは自社サービスのブランド保護を担当する人にとって、Sherlockは「環境に常備しておくべき標準ツール」です。★5評価でいえば★4.5。オープンソース(MITライセンス)なので費用は一切かかりません。
Python環境さえあれば数分でセットアップが完了し、400以上のサイトを数秒から数十秒で走破するパフォーマンスは、手動での調査とは比較にならない効率をもたらします。ただし、単に「あの人のSNSを見つけたい」というライトな動機だけで使うには、プロキシの設定や偽陽性(False Positive)の判定など、ある程度のトラブルシューティング能力が求められます。汎用的な検索エンジンで事足りる人には不要ですが、特定のIDに紐づくデジタルフットプリントを網羅的に洗いたい実務者には、これ以上の選択肢はほぼありません。
このツールが解決する問題
従来、特定のユーザー名がどのプラットフォームで使われているかを調べるには、各サイトを個別に訪問して検索するか、Googleの「site:」検索を駆使するしかありませんでした。しかし、この方法ではTwitterやInstagramのような主要どころはカバーできても、新興のフォーラムやニッチな技術者コミュニティまで網羅するのは現実的に不可能です。また、各SNSによって「ユーザーが存在しないとき」の挙動(404を返すのか、リダイレクトするのか、特定のメッセージを出すのか)が異なるため、スクレイピングのロジックを自作するのは膨大な工数がかかります。
Sherlockは、400サイト以上の「ユーザー存在判定ロジック」をJSONデータ(data.json)として共通化し、それらを一並列でリクエスト投げることでこの問題を解決しています。ユーザーはコマンドを一つ打つだけで、世界中の主要なプラットフォームにそのIDが存在するかどうかのリストを手に入れることができます。これは単なる効率化ではなく、人力では見落としてしまう「過去に登録して忘れていたアカウント」や「第三者によるなりすましアカウント」を浮き彫りにする、防衛・調査の両面で強力な武器になります。
実際の使い方
インストール
Python 3.6以上が必須です。私はPython 3.10環境で検証しましたが、依存ライブラリが少ないため、環境構築でつまずくことはまずありません。
# リポジトリをクローン
git clone https://github.com/sherlock-project/sherlock.git
# ディレクトリへ移動
cd sherlock
# 依存パッケージのインストール
python3 -m pip install -r requirements.txt
パッケージ管理を汚したくない場合は、venvなどの仮想環境を使うのが鉄則です。インストールから動作確認まで、光回線なら2分もかかりません。
基本的な使用例
SherlockはCLI(コマンドラインインターフェース)での利用が基本です。
# 特定のユーザー名を検索
python3 sherlock.py user123
このコマンドを実行すると、標準出力に「[+] SiteName: URL」の形式で、存在するアカウントが次々と表示されます。実務で使うなら、結果をファイルに保存するのが一般的です。
# 複数のユーザー名を同時に検索し、結果をテキストファイルで保存
python3 sherlock.py user123 user456 --output results.txt
検索対象を特定のサイトに絞りたい場合は、--site オプションを使用します。無駄なリクエストを減らせるため、調査対象が明確な場合は重宝します。
応用: 実務で使うなら
実務、特にペネトレーションテストやブランド調査で利用する場合、対象サイトからの「IPブロック」を避けることが最優先事項になります。Sherlockは短時間に大量のリクエストを送るため、WAF(Web Application Firewall)に検知されやすいからです。
# Torプロキシを経由して匿名性を確保しつつ検索
python3 sherlock.py user123 --proxy socks5://127.0.0.1:9050
ローカルでTorを立ち上げておく必要はありますが、これにより自身のIPアドレスを隠匿しつつ、ブロックを回避しながら継続的な調査が可能になります。また、Sherlockの結果をJSON形式で出力し、後続のデータ分析基盤(Elasticsearchや独自DB)に流し込むことで、定期的な「なりすまし監視システム」のバックエンドとして活用することも可能です。
強みと弱み
強み:
- 圧倒的な網羅性: 400以上のプリセットサイトがあり、現在もコミュニティによって更新され続けている。
- 並列処理によるスピード: 100件のサイト確認に10秒もかからないレスポンス。
- ゼロ・コンフィギュレーション: APIキーの取得が不要で、インストール後すぐにフル機能が使える。
- 拡張性:
data.jsonを編集するだけで、新しい調査対象サイトを簡単に追加できる。
弱み:
- 偽陽性(False Positive): サイト側の仕様変更により、ユーザーが存在しなくても「存在する」と判定されるケースが稀にある。
- レートリミット: 短時間に叩きすぎると、Googleや一部のSNSから一時的に遮断される。
- UIの欠如: CUIに慣れていないユーザーには、結果の視認性が低く感じる可能性がある。
代替ツールとの比較
| 項目 | Sherlock | Maigret | Social-Analyzer |
|---|---|---|---|
| サイト数 | 400+ | 3000+ | 1000+ |
| 難易度 | 低(シンプル) | 中(高機能) | 中(Web UIあり) |
| 特徴 | OSINTのデファクト | 再帰的な検索が可能 | 可視化機能が強い |
| 推奨環境 | 汎用調査 | 深掘り調査 | レポート作成重視 |
Sherlockは「まず最初に投げる網」として最適です。より深く、例えばそのユーザーのプロフィール内容まで自動で取得したい場合はMaigretの方が向いていますが、動作の軽快さと安定性では依然としてSherlockに軍配が上がります。
料金・必要スペック・導入前の注意点
Sherlockは完全無料のオープンソースソフトウェアです。商用利用もMITライセンスの範囲内で可能ですが、取得したデータの取り扱いにはGDPRや各国のプライバシー法、各サイトの利用規約が関わってくるため、法務的な確認は必須です。
必要スペックについては、最新のMacBookやRTX搭載機である必要は全くありません。メモリ8GB程度の一般的なPCで十分動作します。ただし、大量の検索を行う場合は、CPUパワーよりも「クリーンなIPアドレス」と「安定したネットワーク帯域」が重要です。自宅サーバーで運用する場合は、固定IPよりも、VPNやプロキシを切り替えられる環境を整えるのが賢明です。私は検証時、ネットワークの遅延を抑えるために、有線LAN接続の環境で行っています。
私の評価
私の評価は「特定の目的があるなら必須、なければ好奇心を満たすための知的好奇心ツール」です。AI開発やデータサイエンスの現場では、学習データの出所調査や、特定の開発者のポートフォリオを追う際に非常に役立ちます。
特に、独自ドメインを取得してサービスを展開する際、主要SNSのアカウントが空いているかを一括チェックする用途にはこれ以上なく便利です。一方で、結果の中に「実際には存在しない(404の判定ミス)」が含まれることがあるため、クリティカルな調査では必ず目視によるダブルチェックが必要です。自動化ツールを盲信するのではなく、あくまで「当たりをつけるための高速スクリーニングツール」と割り切って使うのが、プロのエンジニアの作法と言えるでしょう。
よくある質問
Q1: 検索に失敗するサイトがあるのはなぜですか?
多くの原因はサイト側のボット対策(WAF)や仕様変更です。Sherlockはサイトごとに「エラー時の文字列」や「HTTPステータス」を見て判定していますが、UIが変わると判定ロジックが壊れます。最新版にアップデートするか、data.json を自分で修正する必要があります。
Q2: 実行していることが相手にバレる可能性はありますか?
原理上、相手のプロフィールページにアクセスしているだけなので、相手が「誰がページを見たか」を特定できる仕組み(足跡機能など)を持っていない限り、基本的にはバレません。ただし、APIではなく直接HTTPリクエストを送るため、サーバーログには足跡が残ります。
Q3: 日本国内のマイナーなサービスも検索できますか?
デフォルトではニコニコ動画などは含まれていますが、日本国内限定のマイナーな掲示板やSNSは網羅されていません。ただし、正規表現が分かれば data.json に追記するだけで簡単に対応させることが可能です。






