ほとんどのOSINTツールはすぐに古くなります。ウェブが変化し、サイトのエンドポイントが移動し、CAPTCHAが進化するため、ツールは2年で使えなくなってしまいます。Maigretは例外です。長年稼働しており、3,000以上のサイトに対応し、Pythonパッケージ、Telegramボット、ウェブUIを提供しています。その内部のエンジニアリングは、サイトが変更されるたびに壊れないスキャナーを構築する方法における小さな名作です。
このガイドは、ちょっとした調べ物をする人向けではなく、エンジニア向けです。Maigretが何をするのか、それを正当化する合法的な調査とセキュリティのユースケース、数千のサイトにスケールできるアーキテクチャ、そしてMaigretが使用するテストパターン(シグネチャデータベース、ドリフト検出、再帰的検証)が、皆様が日々Apidogで行うAPIテスト作業にどのように応用できるかを解説します。
まだお読みでない方は、当社の2026年版 PostmanなしのAPIテストという記事で、同様のパターンマッチングやドリフト検出のアイデアを、より分かりやすい分野で解説しています。
要約(TL;DR)
- Maigretは、ユーザー名のみで個人の公開情報を収集し、3,000以上のサイトでアカウントをチェックし、公開プロフィール情報を抽出します。
- そのエンジニアリングは印象的です。バージョン管理されたサイトシグネチャデータベース、再帰検索、自動ドリフト検出、CAPTCHAバイパス、オプションのAI要約モードを備えています。
- 正当な用途には、ジャーナリストによるOSINT調査、アカウント回復、行方不明者の捜索、セキュリティ監査、企業ブランドの悪用監視などがあります。
- 承認されたレッドチームの活動では、Maigretのようなツールを使って組織の公開されている攻撃対象領域をマッピングします。個人の同意なしに使用することは、ハラスメントやストーキング行為に該当します。
- そのアーキテクチャのアイデア(シグネチャ駆動型検出、再帰的検証、自動ドリフトアラート)はAPIテストに直接応用できます。Apidogでそれらを適用する方法を示します。
- Maigretがサイトをテストするのと同じ方法で、Apidogをダウンロードして独自のAPIにシグネチャスタイルのアサーションを設計し、テストしましょう。
Maigretとは何か、そして何ではないか
Maigretは、soxojによってメンテナンスされている、MITライセンスのPythonツールです。READMEの売り文句は「3,000以上のサイトからユーザー名で個人の情報を収集する」です。pip install maigretを実行し、ユーザー名を入力すると、データベース内のサイトを照会し、見つかった各アカウントの背後にある公開プロフィール情報をスクレイピングして、レポートを生成します。

明確にしておくべきことが3つあります。
これは公開データのみを使用します。ログイン、認証情報の悪用、APIキーは一切ありません。サイトが匿名訪問者にプロフィールを公開していれば、Maigretはそれを読み取ります。公開していなければ、「ユーザー名が見つかりません」またはフラグが立てられたページを返します。
これは正当な研究の文脈で広く使用されています。主要な調査機関のジャーナリスト、行方不明者の捜索ボランティア、詐欺対策およびブランド保護チーム、承認されたレッドチームが日常的に使用しています。MaigretのREADME自体にも、学術OSINTカリキュラムでの参照が記載されています。
悪用される可能性があります。他のOSINTツールと同様に、個人の同意なしに私的な個人に対して実行することは、倫理的、そして多くの法域で法的境界を越えます。EU、米国、その他のほとんどの地域でストーカー規制法が適用されます。誰かに向けてこれを使用する前に、現地の規則を読んでください。
この記事の残りの部分は、人間をターゲットにするワークフローではなく、エンジニアリングと応用可能なテストパターンに焦点を当てています。
サイトシグネチャデータベース
Maigretの最も優れたエンジニアリングアイデアは、サイトシグネチャデータベースです。各エントリは、スキャナーが判断できるよう、1つのサイトを十分な情報で記述します。
- このサイトにユーザー名は存在するか?
- 「発見された」ページはどのようなものか?
- 「見つからなかった」ページはどのようなものか?
- 発見されたページからどのような情報を抽出できるか?
- このサイトはレート制限やCAPTCHAを使用しているか?
このデータベースはJSON形式で、リポジトリでバージョン管理されており、ツールが実行されると24時間ごとにGitHubから自動更新されます。メンテナが最近変更されたサイトのシグネチャを更新した場合、すべてのMaigretインストールは翌日、再インストールなしでそれを取得します。
このパターンは、APIテストスイートにまさに求められるものです。あなたのプロジェクトには、50、500、または5,000のエンドポイントがあります。各エンドポイントには、期待されるステータスコード、レスポンスの形状、エラーエンベロープといったシグネチャがあります。ベンダーが形状を変更した場合、テストスイートは有用な差分を伴って迅速に失敗することが望ましいです。私たちはコントラクトファーストAPI開発およびMCPサーバーテストプレイブックで同じアイデアを扱いました。
Maigretが「ユーザー名が見つかった」と「見つからなかった」を検出する方法
素朴なスキャナーは、https://example.com/user/<username>に対してHTTP GETを行い、ステータスコードをチェックします。これは、実際のサイトのせいぜい10パーセントにしか通用しません。残りの90パーセントは、「そのようなユーザーはいません」というページや、キャッシュされたホームページ、あるいはCAPTCHAチャレンジとともに200を返します。
Maigretのデータベースは、より豊富な検出ルールセットで各サイトを記述しています。
urlMainとurlテンプレートpresenseStrsリスト(ユーザーが存在する場合に表示されなければならない部分文字列)absenceStrsリスト(ユーザーが存在しないことを確認する部分文字列)- ページからのユーザー名抽出のための正規表現
- オプションのヘッダー(一部のサイトではカスタムユーザーエージェントが必要)
- カテゴリと国のタグ
「見つかった」という判定には、応答にすべてのpresenseStrsが存在し、absenceStrsのいずれも存在しないことが必要です。「見つからなかった」という判定はその逆です。それ以外は、ユーザーが手動で調査できる「不明」な結果となります。
これは、複雑なAPIをテストする際に求められる多信号アサーションと同じ種類です。200ステータスだけでは十分ではありません。ボディコンテンツもアサートする必要があります。Apidogは、1つのリクエストでステータスコードとボディコンテンツの両方のアサーションをサポートしており、これはMaigretのpresenseStrsとabsenceStrsを合わせたAPIテストと同等です。
再帰的検索と情報抽出
Maigretはアカウントを見つけると、さらに2つのことを行います。
それは、リンクされたメールアドレス、電話番号、実名、その他のユーザー名など、追加の識別子を求めて公開プロフィールページをスクレイピングします。抽出ルールもシグネチャ駆動型で、サイトごとに定義されています。LinkedInのプロフィールは、GitHubのプロフィールとは異なるフィールドを生成します。
次に、再帰的に検索します。新しい識別子が検索ループにフィードバックされ、リンクされたアカウント全体で情報が拡大されます。あるサイトのユーザー名が実名につながり、その実名が別のサイトの別のアカウントを解除し、そのアカウントがInstagramのハンドルネームにリンクする、といった具合です。
OSINTの場合、これは「Twitterアカウントを1つ見つけた」と「この人物を12のサービスにわたって追跡した」との違いです。APIテストスイートにとっても同じパターンが価値を持ちます。あるエンドポイントの応答で文書化されていないフィールドを発見したら、それを追跡してください。それはしばしば関連するエンドポイント、ダウンストリームシステム、または欠落しているテストケースを指し示します。
CAPTCHAとレート制限の処理
Maigretは、応答の形状を読み取ることで、CAPTCHAを部分的にバイパスし、レート制限を検出します。バイパス戦略には以下が含まれます。
- ユーザーエージェントのローテーション
- サイトごとのリトライヘッダーの尊重
- サイトのモバイルまたは簡易ドメインへのフォールバック
- サイトが許可する場合のTorまたはI2P経由のルーティング
READMEには、これが部分的であることが正直に記載されています。サイトが積極的な自動化防止策を講じている場合、Maigretは「CAPTCHA検出」と記録し、ユーザーに手動での調査を促します。このツールは敵対的な防御策を打ち破ろうとはせず、基本的な匿名アクセスを許可するサイトと連携します。
このパターンは転用できます。APIクライアントやテストランナーを構築する際は、レート制限応答を検出し、ブルートフォースで突破しようとするのではなく、適切にバックオフするように設計してください。Maigretがベンダーの規約に適合するように保つ防御的な姿勢は、あなたのAPIテストがチームのIPアドレスをBANされるのを防ぎます。
シグネチャのドリフト問題
3,000のサイトデータベースは、最新の状態を維持している場合にのみ有用です。サイトはプロフィールページを再設計したり、URLパターンを変更したり、CAPTCHAを追加したり、買収されてブランド変更されたりします。古いシグネチャは、偽陰性(検索で何も見つからない)または偽陽性(存在しないアカウントを見つける)を返します。
Maigretはこれを3つのレイヤーで対処しています。
- 中央のGitHubリポジトリからの24時間ごとの自動更新
- 個々のサイトシグネチャを維持するコミュニティのプルリクエスト
- 強制的に新しいフェッチを行う
--updateフラグ - 出荷前に既知の存在するユーザー名に対して各シグネチャを検証する組み込みテストハーネス
3番目の項目は、ほとんどのエンジニアリングチームが見落としがちなものです。Maigretは各サイトの既知の存在するユーザー名(通常は同意を得た開発者またはメンテナー)を保持しています。ハーネスはそのユーザー名を照会し、シグネチャがまだ機能することを確認します。ドリフトが検出された場合、シグネチャにフラグが立てられ、貢献者に通知されます。
これは、独自のAPIコントラクトに求められるまさにその回帰テストスイートです。Apidogは同じパターンをサポートしています。エンドポイントごとに既知の良好な応答を保存し、スケジュールに基づいてライブエンドポイントに対してリプレイし、結果を比較し、ドリフトを警告します。当社のDeepSeek V4 APIガイドでは、特定のベンダー向けの手動による側面をカバーしています。
オプションのAI要約モード
--aiフラグは、Maigretの生の結果を、OpenAI互換のLLMエンドポイントを使用して短い調査要約に変換します。APIキーはユーザーが用意し、Maigretがプロンプトと呼び出しを構造化します。
これは、LLMを後処理として適切に利用した良い例です。モデルはユーザー名が一致するかどうかを決定することはありません。それはルールベースで決定論的です。モデルは要約のみを行い、それが得意であり、制約された入力に対して動作します。ハルシネーションは限定的です。
同じアーキテクチャはAPI監視にもうまく機能します。Apidogでの決定論的なルールベースのアサーションと、実行レポートを最終的にSlackに表示しやすい要約に変換するLLM後処理機能です。当社のコンピューター利用 vs 構造化APIの記事では、構造化レイヤーが常に最初に来るべき理由を説明しています。
知っておくべき正当なユースケース
Maigretの実行が明確に適切である5つの状況。
- ご自身のアカウント回復。 2014年に使用したユーザー名に関連付けられているすべての古いアカウントを見つけます。プライバシー監査の前やデジタルフットプリントを閉鎖する際に役立ちます。
- ブランド悪用監視。 企業はブランド名や製品名に対してMaigretを実行し、なりすましアカウントを検出します。ほとんどの法域でこの種の監視が推奨されており、一部では義務付けられています。
- 行方不明者の捜索ボランティア。 捜索救助団体や行方不明者捜索団体は、家族の同意を得てMaigretを使用し、デジタルフットプリントを追跡します。必ず法執行機関と連携してください。この分野での単独行動は、しばしば調査を困難にします。
- 承認されたレッドチームの活動。 契約範囲内で活動するペンテストチームは、Maigretを使用して組織の公開されている攻撃対象領域をマッピングします。契約が範囲を定義し、ツールは単なる実装です。
- 調査報道。 詐欺、公人の不正行為、組織犯罪を調査する記者は、編集上のおよび法的な審査の下でOSINTツールを使用します。
このリストにないもの:好奇心から見知らぬ人を調べること、元パートナーを監視すること、同意のない人々のデータセットを構築すること。これらの使用は、ほとんどの法域で法的境界を、そしてあらゆる場所で倫理的境界を越えます。
APIテストに適用できるMaigretのパターン
直接転用できる5つのエンジニアリングアイデア。
- 手書きチェックよりもシグネチャデータベース。 各エンドポイントの期待される動作をコードではなくデータとして定義します。これにより、再コンパイルなしで新しいベンダーを追加できます。
- 多信号アサーション。 ステータスコード、ボディコンテンツ、ヘッダーチェックのすべてを必須とします。これにより、キャッシュされた応答や汎用エラーページによる偽陽性を減らします。
- 自動更新シグネチャ。 スケジュールに基づいて中央リポジトリから最新のアサーションを取得します。Apidogプロジェクトはクラウド同期をサポートしています。それを活用してください。PostmanなしのAPIテストでこのワークフローを解説しました。

- ドリフト検出。 既知の良好なフィクスチャに対して定期的なリプレイをスケジュールし、結果を比較します。本番環境が破損する前に、形状の変化を警告します。
- LLMを判断者ではなく後処理器として使用。 合否の判断は決定論的なルールに任せます。LLMはレポートを読みやすいものに変換するためだけに使用します。
これらを適用することで、あなたのAPIテストスイートはMaigretと同じ寿命を獲得できます。ほとんどのテストスイートは、一度手書きで書かれ、決して更新されなかったために寿命を迎えます。Maigretのアーキテクチャは、生き残るためのモデルとなります。
Maigret実行時の一般的な落とし穴
ツール自体を試すエンジニア向けです。
-aなしで実行し、完全性を前提とすること。 デフォルトではトラフィック上位500サイトをスキャンします。調査でロングテールが必要な場合は、-aを渡して3,000以上の全サイトをスキャンしてください。実行には時間がかかります。- タグを無視すること。
--tagsフラグはカテゴリや国で絞り込みます。米国中心のデフォルトでは、ロシアや日本のユーザーは見落とされますが、タグフィルタリングで捕捉できます。 - 自動更新をスキップすること。 古いシグネチャデータベースは偽陽性や偽陰性を生成します。自動更新を実行させるか、本格的な調査の前に手動で
--updateを使用してください。 - ターゲットサイトの許可なくTorで実行すること。 一部のサイトはTorの出口ノードをブロックします。Maigretはこれを検出します。Torブロックをユーザーに関する信号として解釈しないでください。
- 抽出されたフィールドを検証せずに信じること。 このツールはページが公開しているものを抽出します。ページは偽造される可能性があります。発見は手がかりとして扱い、証拠として扱わないでください。
実際のユースケース
あるセキュリティコンサルタント会社は、すべてのレッドチームのスコープ設定において、最初のステップとしてMaigretを使用しています。その出力はキックオフレポートに組み込まれ、クライアントはエンゲージメント開始前に自社の公開攻撃対象領域を把握します。
フリーランスの詐欺調査官は、--aiフラグ付きのMaigretを使用して、3,000サイトのスキャン結果を200語の概要にまとめ、非技術系のクライアントに提供しています。決定論的な検索がデータであり、LLMが読みやすいレイヤーです。
あるエンジニアリングチームは、同じアーキテクチャのアイデア(シグネチャデータベース、ドリフト検出、定期的なリプレイ)を使用して、200のマイクロサービスにわたる内部APIテストスイートを最新の状態に保っています。彼らはそれをApidogで構築しましたが、その原則はMaigretのものです。
結論
Maigretは、基盤となるインターフェースが変更されるたびに破損することなく、数千の検出ルールにスケールできるツールを構築する方法を示す実例です。OSINT調査を行うことがなくても、そのエンジニアリングは学ぶ価値があります。シグネチャデータベース、多信号アサーション、自動更新データ、ドリフト検出、LLM後処理はすべて、日常的に行っているAPIテスト作業に転用可能です。
5つのポイント:
- Maigretは、バージョン管理された自動更新シグネチャデータベースを使用して、3,000以上のサイトでユーザー名をチェックします。
- 信頼性においては、多信号検出(存在文字列と不在文字列)が単純なステータスコードチェックを上回ります。
- ドリフトは、長期間稼働するテストスイートの敵です。既知のフィクスチャに対する定期的なリプレイは、早期にドリフトを検出します。
- LLMを後処理器として使用する(
--aiフラグ)のが正しいアーキテクチャです。決定論的なルール、要約された出力。 - 同じパターンはApidogでのAPIテストにも適用できます。私たちは顧客のコントラクトスイート全体でこれらを適用してきました。
次のステップ:Maigretのサイトデータベース形式を読み、次にApidogを開き、プロジェクトのエンドポイントを同じ方法で設計してください。シグネチャ駆動型、多信号、ドリフト検出のための保存済みフィクスチャを使用します。この規律は、ベンダーが午前2時にフィールド名を変更し、ユーザーが気付く前にあなたのスイートがそれを検出したときに報われます。
よくある質問
Maigretは合法的に使用できますか?
それは管轄区域と対象によります。ご自身、ご自身が所有するアカウント、テストの書面による許可を得ている企業、または承認されたジャーナリズムの一部として使用する場合は、一般的に問題ありません。無防備な個人に対して実行することは、EU、米国、英国、およびその他のほとんどの地域でストーカー行為やハラスメントに関する法律に抵触する可能性があります。第三者を対象とする使用を行う前に、現地の規則を読んでください。
MaigretはPythonなしで動作しますか?
公式パッケージはPython 3.10+です。作者は、手軽な検索のためのTelegramボットと、ローカルインストールを望まないユーザー向けのCloud Shell設定を維持しています。
3,000サイトという主張はどの程度正確ですか?
リポジトリ内のサイトデータベースには3,000以上のエントリがリストされていますが、常にすべてがアクティブであるわけではありません。自動更新により、動作するサブセットが最新に保たれます。タグフィルタリングは、対象範囲にとって重要と思われるサイトに焦点を当てるのに役立ちます。
AIモードは何を追加しますか?
--aiフラグは、OpenAI互換のLLMを使用して、決定論的な結果を読みやすいレポートに要約します。検索自体を変更するのではなく、後処理を行うだけです。APIキーはご自身で用意してください。
MaigretをCIで使用できますか?
OSINT調査ではできません。それは対話的な作業です。Maigretが使用するアーキテクチャパターン(シグネチャデータベース、ドリフト検出、スケジュールされたリプレイ)は、APIテストのCIパイプラインにまさに適しています。Apidogはこれらをネイティブに実装しています。
これはSherlockとどう異なりますか?
Sherlockはより古く、よりシンプルな祖先です。Maigretは、情報抽出、再帰検索、CAPTCHA処理、AI要約モード、より豊富なサイトデータベースでそれを拡張しています。どちらもMITライセンスであり、知っておく価値があります。
古いシグネチャはどこに報告すればよいですか?
READMEには、MaigretリポジトリのGitHub issueおよびプルリクエストが示されています。コミュニティの貢献によりデータベースは最新に保たれており、古いサイトごとに1つのプルリクエストが一般的です。
