Sherlock ユーザー名検索の仕組み
オープンソースの調査ツール「Sherlock」は、指定されたユーザー名が対象のWebサービスに登録されているかどうかを判定するために、主に次の3つの判定方式を組み合わせて使用しています。
| 判定方式(errorType) | 判定の仕組み | 代表的な採用サイト | 特徴と考慮点 |
|---|---|---|---|
| status_code | サーバーが返す HTTP ステータスコードを直接確認。200 なら存在、404 なら空きと判断。 | GitHub, Qiita, Zenn, note, connpass, npm, Docker Hub | 最も高速かつ確実。REST 原則に従った技術系サービスに多い。 |
| message | ページ自体は HTTP 200 で返すが、本文中に「ユーザーが存在しません」等の指定文言が含まれるかを検索。 | Reddit, Wikipedia, Medium, Hacker News | SPA(単一ページアプリ)や独自エラー画面を返すサイトに対応可能。 |
| response_url | 存在しないユーザー名にアクセスした際にログイン画面やトップページへリダイレクトされる挙動を検知。 | BOOTH, WordPress, Packagist 等 | 301/302 転送または転送先 URL(Location)で判別。 |
ウェブ版の使い方
このウェブツールは、手元の端末に環境を構築することなく、ブラウザ上から安全に Sherlock の調査ロジックを試すことができる標本ツールです。
- 高速モード(主要約36サイト):GitHub、Qiita、Zenn、note、YouTube、Reddit など、国内外で最も利用者の多い主要サービスに絞って数秒で一括調査します。日頃のアカウント開設前の空き確認に最適です。
- 詳細モード(全460超サイト):公式データベースと日本の主要サイトを合わせた全460超のサイトを15件ずつのバッチに分割して順次調査します。
{?}記号展開機能:入力欄にtaro{?}yamadaのように{?}を含めると、記号の揺らぎ(taro_yamada、taro-yamada、taro.yamada)の3パターンを主要36サイト(計108件)に対してまとめて自動調査します。- 結果の活用:「URLコピー」で発見されたプロフィールのリンクを一括取得できるほか、「CSV保存」で各サイトの判定結果・HTTPステータス・応答時間を手元に記録できます。
クラウド環境からの自動判定の限界と注意点
Web 上で動く本ツールと、手元のパソコン(CLI)で動かす Sherlock には、ネットワーク環境の違いによるいくつかの差異が存在します。
- 主要 SNS(X / Instagram / TikTok 等)のボット遮断:大手 SNS はクラウドサーバー(AWS、GCP、Vercel 等)の IP アドレスからのアクセスに対して Cloudflare などの高度な WAF(Web Application Firewall)を導入しており、自動判定リクエストを即座にブロックします。そのため本ツールでは、それらのサイトを「直接確認(manual)」ステータスとして扱い、外部通信を行わずにプロフィール確認リンクを案内する安全設計を採用しています。
- 同名の別人アカウントの可能性:ユーザー名が存在したとしても、それが同一人物のアカウントであるとは限りません。一般的な単語や短い英数字の場合、まったく別の第三者が取得している可能性が高いため、必ずリンク先の内容を確認してください。
- 悪用防止とレート制限:外部サーバーへの過度な連続リクエストを防ぐため、本ツールでは 1 回のバッチを最大 15 件に制限し、IP あたり 1 分間に最大 60 リクエストのレート制限を適用しています。
手元の Mac / PC(コマンドライン版 Sherlock)で動かす手順
すべてのサイトを自分の端末の固定回線から制限なく調査したい場合は、公式の Python コマンドラインツール「Sherlock」をローカル環境で動かすのが最も強力です。高速パッケージマネージャ uv を使うと、数行で安全に環境構築できます。
# 1. 作業用ディレクトリを作って仮想環境を作成
mkdir sherlock-search && cd sherlock-search
uv venv .venv
source .venv/bin/activate
# 2. Sherlock をインストール
uv pip install sherlock-project
# 3. ユーザー名を指定して検索を実行
sherlock TadFuji
# 4. 主要サイトのみを高速に調べる場合(タイムアウト指定)
sherlock --timeout 5 --print-found TadFuji
よくある質問(FAQ)
Q. 検索したユーザー名が外部に公開されたり記録されたりしますか?
A. 本ツールのサーバー側では、悪意ある DoS 攻撃防止のための直近 1 分間のリクエスト件数(IP アドレス)のみをインメモリで一時保持し、検索されたユーザー名の保存やログへの書き出しは一切行っていません。
Q. 日本独自のサイト(Qiita や Zenn)も調査できますか?
A. はい。本ツールでは、公式 Sherlock のデータベース(海外中心の約462件)に加え、日本の技術・クリエイターコミュニティで必須となる Qiita・Zenn・はてな・connpass を独自に追加しています。
Q. 関連する教材やツールはありますか?
A. サーバー側の安全な外部通信設計については Cloudflare & Workers 入門ガイド を、外部サービスと連携するための鍵の仕組みについては APIキーとは何か を、UI の設計については マークダウンデザインツール をご覧ください。