Maigret – OSINTユーザー名検索ツール

Maigretにユーザー名を渡すと、その名前のアカウントを持つサイトを見つけ出し、見つかったプロフィールから氏名や所在地、他アカウントへのリンクを読み取ります。さらに、そのリンクから得たユーザー名も続けて検索します。READMEによると、対象は5,900サイトに及びます。ただし、デフォルトで調べるのは500サイトです。しかも、その対象リストは、ユーザーが何もインストールしなくても一晩で変わることがあります。結果をレポートに載せる場面では、この点が重要になります。

Image

Maigretとは

Maigretは、ユーザー名でアカウントを検索するオープンソースのOSINTツールです。Pythonで書かれ、MITライセンスで公開されています。指定した名前ごとに、確認対象の各サイトで該当するプロフィールURLにリクエストを送ります。見つかったアカウントを報告するとともに、ページから取得できた情報も併せて示します。具体的には、氏名、所在地、作成日、フォロワー数、他のプロフィールへのリンクなどです。リリース0.6.6は2026年9月18日に公開され、プロジェクトは10月にもコミットが続いていました。

単純なユーザー名チェッカーとの違いは再帰検索にあり、これは初期設定で有効です。プロフィールに別のアカウントへのリンクがあると、Maigretはそのリンクからユーザー名やIDを取り出し、新たに検索を始めます。公式ドキュメントの例では、GitHubのプロフィールからTwitterのハンドルを見つけ、さらにその2つ目の名前でTelegramのアカウントにたどり着いています。

特定の一人を調べるなら、これは望ましい動作です。ただ、同僚や元の勤務先、共同プロジェクトへのリンクがあるプロフィールでは、Maigretはそれらの名前も検索します。出力に含まれる名前のうち、自分が実際に指定したものがどれかは確認してください。--no-recursionを付けると無効にできます。

Maigretは何サイトを調べるのか

デフォルトでは500サイトです。0.6.6リリースのサイトデータベースには5,897件が登録されています。しかし、オプションなしで実行すると、Majestic Millionのランキング上位500サイトと、その上位500に含まれるプラットフォームに紐づくミラーサイトだけを調べます。-a(--all-sites)で500件の制限が外れます。--top-sitesで件数を変更でき、--tagsではカテゴリや国でサイトを選べます。

筆者が0.6.6のデータベースを数えたところ、5,897件のうち694件が無効(メンテナーがチェックを停止したもの)でした。有効なのは5,203件で、そのうちランキングが記録されているのは854件にとどまります。有効な5,203件は-aの上限ですが、実際の検索対象とは少し異なります。12件は通常のWebチェックではなく、Torサイト4件、I2Pサイト1件、DNSルックアップ7件です。これらは--tor-proxy、--i2p-proxy、--with-domainsを指定したときだけ実行されます。さらに25件は、SteamやVKのIDなど、ユーザー名以外の識別子を調べるものです。そのため、ユーザー名に対する通常の-a検索の対象は5,166件になります。無効のエントリは--use-disabled-sitesを付けたときだけ復活しますが、ドキュメントはこれが「多くの誤検知を招く可能性がある」と警告しています。有効なエントリのうち、2,664件にはforumタグが、1,114件にはruタグが付いています。

つまり、-aを付けても大手プラットフォームが増えるわけではありません。増えるのは、小規模なコミュニティ数千件です。有効なデータベースの約半数がフォーラムで、5分の1がロシア語圏のタグ付きです。調査対象がそこにいるなら価値がありますが、そうでなければノイズになります。

より的確なのはタグの利用です。--tags us,jpとすると、米国または日本のサイトに絞り込めます。--tags codingならソフトウェア開発系のサイトです。--exclude-tagsでカテゴリを除外することもできるため、--tags forum --exclude-tags ruと指定すれば、ロシア語圏を除いたフォーラムを検索できます。ただしドキュメントは、タグ付けが「まだ安定していない」と注意しています。タグはサイトの分類を示すだけで、その分類が網羅的であることまでは保証しません。

Maigretの検索はどのサイトデータベースを使ったのか

リリースに同梱されたものとは限らず、最新のものとも限りません。Maigretは起動時に、24時間に1回を上限として、新しいサイトデータベースが公開されていないか確認します。公開されていて、かつ使用中のバージョンと互換性があれば、~/.maigret/data.jsonにダウンロードし、リリース同梱のものに代えて使います。確認と確認の間は、前回キャッシュしたものを使用します。ダウンロードに失敗した場合や、新しいリストがバージョンに合わない場合は、同梱版にフォールバックします。このため、同じバージョンでも人によって検索するサイトのリストが異なる可能性があります。1週間後に同じ検索をやり直せば、自分自身でも異なる結果になりえます。

できるだけ多くのチェックを今日動かしたい人にとっては、適切な初期設定です。一方、後で再現や説明が必要になる調査では、バージョン番号だけでは何を検索したのか分かりません。ドキュメントによると、実行のたびに読み込んだデータベースが[+] Using sites database: <path> (<N> sites)という形式で表示されます。この行は結果と一緒に保管してください。その行が示すファイルも保管しましょう。そのデータベースをケースノートの横にコピーしてSHA-256を記録します。~/.maigret/data.jsonのキャッシュは、次の更新で上書きされるためです。

案件の調査では、リストを固定し、更新は意図的に行うことをお勧めします。--no-autoupdateを指定すると、キャッシュ済みまたは同梱のデータベースをそのまま使います。~/.maigret/settings.jsonに"no_autoupdate": trueと書けば、この設定が恒久化します。--force-updateは、利用者が決めたタイミングで新しいデータベースを取得します。--dbは指定したデータベースファイルを読み込み、更新確認自体を行いません。保管しておいたコピーを指定すれば、前回とまったく同じリストで検索をやり直せます。

ドキュメント自身も、Dockerコンテナ、CIパイプライン、エアギャップ環境のマシンでは更新を無効にするよう推奨しています。

Maigretの使い方

1つ以上のユーザー名を指定します。maigret usernameはデフォルトの500サイトを検索し、--htmlを付けるとHTMLレポートも出力されます。READMEには、よく使うバリエーションの例が載っています。

maigret username—html

maigret username—tags coding

maigret user1 user2 user3–a

レポートは、必要になりそうな形式のほとんどに対応しています。HTML、PDF(オプション機能で、pip install 'maigret[pdf]'でインストール)、XMind、CSV、プレーンテキストのほか、--json ndjsonによる改行区切りJSON、--graphによるインタラクティブなグラフ、--neo4jによるNeo4j Cypherスクリプトがあります。

--parseはプロフィールURLを受け取り、そこにあるIDやユーザー名を抽出して検索します。--permuteは2つ以上の名前から可能性の高い変形を作ります(john doeからjohndoeやj.doeなど)。そして、それらをすべて検索します。

ヒットはすべて、確認すべき手がかりとして扱い、確定した調査結果とは見なさないでください。プロジェクトの利用ガイドにも、サイトによっては「誤検知の結果を返す場合がある」と書かれています。結果に出てこない場合も同様の注意が必要です。サイトが出力に現れない理由は3つあります。その名前が存在しない場合、そもそもサイトが検索されていない場合(500件の対象外、無効化されている、Torプロキシ未設定の.onionサイトでMaigretが黙ってスキップした場合)、そしてタイムアウトやCAPTCHA、ブロックでチェックに失敗した場合です。--print-errorsを使うと、実行の背後にある接続エラー、CAPTCHA、国別ブロックのエラーが表示されます。--print-not-foundは「存在しない」と応答したサイトを一覧にします。「どこかにアカウントがない」と書く前に、これらで切り分けましょう。

誤検知への対処として利用ガイドが勧める--self-check --auto-disableは、データベースにある「取得済みと分かっているユーザー名」と「未取得と分かっているユーザー名」で各サイトをテストします。失敗したサイトは無効化されます。接続エラーも失敗に含まれるため、一時的に1分間つながらなかっただけのサイトも無効になってしまいます。まずは--self-checkだけを実行してください。これは報告のみを行います(--diagnoseで詳細も追加できます)。何を無効にするかを判断してから、変更の保存を求めるMaigretの確認に答えましょう。どちらにしても、サイトリストが他の人と異なる原因がまた一つ増えることになります。

リクエストの発信元についても考えておきましょう。Maigretのプライバシーページによると、テレメトリーはなく、メンテナーには何も送信されません。しかし、検索したユーザー名は、チェック対象のすべてのサイトへ自分のアドレスから送られます。チェックはそうした仕組みで動くためです。--proxyを使うと、実行全体をHTTPまたはSOCKSプロキシ(Torを含む)経由にできます。オプションの--aiによる要約機能は、プロフィールデータを含むレポート全体をOpenAI互換のAPIに送信します。ドキュメントは、そのデータを預けても問題ないと信頼できるプロバイダーとアカウントだけを使うよう求めています。

Windows、Kali、LinuxへのMaigretのインストール方法

Python 3.10以降があれば、pip3 install maigretがREADMEの示す1分でできる方法で、maigret usernameで実行できます。インストールガイドは注意を促しています。最近のDebian、Ubuntu、Fedoraでは、システムのPythonへのpipインストールがexternally-managed-environmentエラーで拒否されます。KaliはDebianをベースにしているため、同様になると考えてください。ガイドが示す解決策はpipxです。Maigret専用の仮想環境が作られ、maigretコマンドだけがパスに追加されます。

pipx install maigret

maigret username

Windowsでは、自分でインストールしたPythonにpipで導入しても問題ありません。

また、Windows向けにはPython不要のスタンドアロン版もあります。v0.6.6のリリースページにあるmaigret_standalone.exeです。ダブルクリックするとユーザー名の入力を求められ、デフォルトの検索を実行します。オプションを渡したい場合は、PowerShellから実行します。レポートは、exeと同じ場所にあるreportsフォルダーに出力されます。インストールガイドによると、Windowsのバイナリはまだコード署名されていません(プロジェクトは証明書を申請済み)。そのため、ダウンロードしたファイルは、GitHubがダウンロードの横に公開しているSHA-256と照合してください。

Get–FileHash.\maigret_standalone.exe–Algorithm SHA256

.\maigret_standalone.exe username—html

0.6.6のexeのハッシュは次のとおりです。

08D7450AF98AA29F3A28D3DC01940BB4335391D9B1361C68BA04DF0F75C77277

筆者がダウンロードしたファイルは、このハッシュと一致しました。なお、プロジェクトはコミットのたびに新しいexeを自動でビルドしています。プレリリースのnightly-mainもmainブランチから再ビルドされます。入手するファイルが意図したリリースのものか、必ず確認してください。

Linuxでは、sudo snap install maigretでPython不要のビルドを入手できます。amd64とarm64に対応しています。このsnapは厳格な隔離(strict confinement)で動作し、書き込めるのはホームディレクトリ内に限られるため、ホームディレクトリから実行してください。Dockerイメージは2種類あります。コマンドライン用のsoxoj/maigret:latestと、ポート5000のWebインターフェース用のsoxoj/maigret:webです。

docker run–v/mydir:/app/reports soxoj/maigret:latest username—html

docker run–p5000:5000soxoj/maigret:web

何もインストールせずに使う方法として、コミュニティが運営するTelegramボットや、READMEからリンクされているクラウドシェルとノートブックがあります。どちらも他人のマシンで検索を実行します。気になる名前を入力する前に、その点を考慮してください。

MaigretとSherlock、WhatsMyNameの比較

Sherlockは、最も分かりやすい代替ツールです。MITライセンスのPythonツールで、サイトリストを使ってユーザー名を調べ、どこに存在するかを教えてくれます。最新リリースの0.16.2は2026年9月に公開されました。Maigretも同じ役割を果たしますが、その先に進みます。見つけたプロフィールを読み、そこにあるリンクをたどります。しかも、はるかに大規模なデータベースを使います。名前がどこに存在するかだけを知りたいなら、どちらでも用は足ります。あるユーザー名から次のユーザー名へたどりたいなら、そのために作られたのはMaigretです。

WhatsMyNameは性質が異なります。コミュニティが管理する、サイトとそのチェック方法のデータセットで、Creative Commons BY-SAライセンスの下にあります。whatsmyname.appのWebアプリから検索でき、他のツールにも利用されています。インストールして使うWhatsMyNameのツールはないため、比較の対象はそのWebアプリと、自分で動かすMaigretになります。

当サイトのsocialscanの記事は、より限定的で正確な用途を扱っています。プロフィールページから判断するのではなく、いくつかのプラットフォームのサインアップフォームに、その名前やメールアドレスが使用済みかどうかを問い合わせるものです。今月この記事を更新した時点では、8つのプラットフォームのうち3つがまだ応答していました。

手元にあるのがユーザー名ではなくメールアドレスなら、より幅広く使えるのはholeheです。ただし、2024年9月以降コミットがありません。

Maigretは次のリンクからダウンロードできます。

GitHubのMaigret 0.6.6

詳細はこちらをご覧ください。

翻訳元: https://www.darknet.org.uk/2026/10/maigret-osint-username-search-tool/

本記事は darknet.org.uk の記事を翻訳・要約したものです。