DEV Community

Cover image for Maigret: OSINT-Scanner, der funktioniert
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

Maigret: OSINT-Scanner, der funktioniert

Die meisten OSINT-Tools veralten schnell: Websites ändern Endpunkte, Captchas werden strenger, HTML-Strukturen brechen, und nach zwei Jahren ist das Tool oft unbrauchbar. Maigret ist eine interessante Ausnahme. Es wird seit Jahren gepflegt, unterstützt über 3.000 Websites, bietet ein Python-Paket, einen Telegram-Bot und eine Weboberfläche — und zeigt technisch sehr gut, wie man Scanner baut, die nicht bei jeder Website-Änderung zerfallen.

Probieren Sie Apidog noch heute aus

Dieser Leitfaden richtet sich an Entwickler und Security-Teams. Er erklärt, was Maigret tut, wo legitime Einsatzbereiche liegen, wie die Architektur funktioniert und welche Muster Sie direkt auf API-Tests mit Apidog übertragen können: Signaturdatenbanken, Multi-Signal-Assertions, Drift-Erkennung und deterministische Verifikation.

Falls Sie es noch nicht gelesen haben: Unser Beitrag API-Tests ohne Postman im Jahr 2026 behandelt ähnliche Ideen zur Mustererkennung und Drift-Erkennung in einem API-Kontext.

TL;DR

  • Maigret erstellt anhand eines Benutzernamens ein öffentliches Dossier, indem es über 3.000 Websites auf Profile prüft.
  • Die Architektur basiert auf einer versionierten Site-Signaturdatenbank, rekursiver Suche, Drift-Erkennung und optionaler KI-Zusammenfassung.
  • Legitime Einsatzfälle sind u. a. eigene Kontowiederherstellung, Markenschutz, autorisierte Red-Team-Einsätze, Journalismus und Suche nach vermissten Personen mit Zustimmung.
  • Die Nutzung gegen Privatpersonen ohne Zustimmung kann Belästigung oder Stalking darstellen und rechtlich problematisch sein.
  • Die technischen Muster lassen sich direkt auf API-Tests übertragen: definierte Signaturen, mehrere Prüfsignale, gespeicherte Fixtures und geplante Replays.
  • Mit Apidog können Sie ähnliche Assertions und Drift-Prüfungen für APIs modellieren.

Was Maigret ist und was nicht

Maigret ist ein MIT-lizenziertes Python-Tool, gepflegt von soxoj. Der README-Slogan lautet sinngemäß: „Sammeln Sie ein Dossier über eine Person anhand eines Benutzernamens von über 3.000 Websites.“

Installation:

pip install maigret
Enter fullscreen mode Exit fullscreen mode

Ein einfacher Lauf:

maigret username
Enter fullscreen mode Exit fullscreen mode

Mit vollständiger Site-Datenbank:

maigret username -a
Enter fullscreen mode Exit fullscreen mode

Maigret Screenshot

Wichtig sind drei Grenzen:

  1. Maigret nutzt öffentliche Daten.

    Kein Login, keine gestohlenen Zugangsdaten, keine privaten API-Schlüssel. Wenn ein Profil anonym öffentlich erreichbar ist, kann Maigret es prüfen.

  2. Maigret hat legitime Einsatzbereiche.

    Dazu gehören OSINT-Recherche, Markenschutz, autorisierte Security-Tests, Kontowiederherstellung und Ermittlungen unter rechtlicher oder redaktioneller Aufsicht.

  3. Maigret kann missbraucht werden.

    Die Anwendung gegen Privatpersonen ohne Zustimmung kann ethische und rechtliche Grenzen überschreiten. Prüfen Sie lokale Gesetze, bevor Sie OSINT-Tools auf Dritte anwenden.

Der Rest dieses Artikels konzentriert sich auf die technische Architektur und übertragbare Testmuster — nicht auf Workflows zur Personenidentifizierung.

Die Site-Signaturdatenbank

Der Kern von Maigret ist die Site-Signaturdatenbank. Jeder Eintrag beschreibt, wie eine Website geprüft wird:

  • Welche URL wird abgefragt?
  • Wie sieht eine gefundene Profilseite aus?
  • Wie sieht eine „nicht gefunden“-Seite aus?
  • Welche Felder lassen sich extrahieren?
  • Gibt es Rate Limits, Captchas oder besondere Header?

Vereinfacht sieht das Prinzip so aus:

{
  "name": "Example",
  "urlMain": "https://example.com",
  "url": "https://example.com/{username}",
  "presenceStrs": ["Profile", "@{username}"],
  "absenceStrs": ["User not found"],
  "headers": {
    "User-Agent": "Mozilla/5.0"
  },
  "tags": ["social", "global"]
}
Enter fullscreen mode Exit fullscreen mode

Die Datenbank liegt als JSON im Repository, ist versioniert und kann automatisch aktualisiert werden. Dadurch muss nicht jede Maigret-Installation neu veröffentlicht werden, wenn sich eine einzelne Website ändert.

Das ist auch für API-Tests relevant. Ein API-Projekt mit 50, 500 oder 5.000 Endpunkten braucht ebenfalls Signaturen:

  • erwarteter Statuscode
  • erwartete Felder
  • erwartete Header
  • erlaubte Fehlermodelle
  • Schema- und Contract-Regeln

Genau dieses Denken steckt auch in Contract-First-API-Entwicklung und im MCP-Server-Test-Playbook.

Wie Maigret „gefunden“ und „nicht gefunden“ erkennt

Ein naiver Scanner würde einfach prüfen:

GET https://example.com/user/<username>
Enter fullscreen mode Exit fullscreen mode

Dann würde er den Statuscode auswerten:

200 = gefunden
404 = nicht gefunden
Enter fullscreen mode Exit fullscreen mode

Das funktioniert in der Praxis nur selten. Viele Websites liefern auch bei fehlenden Benutzern 200 OK, zeigen aber eine „User not found“-Seite. Andere liefern eine Homepage, eine Suchseite oder eine Captcha-Seite.

Maigret nutzt deshalb mehrere Signale:

  • URL-Template
  • Presence-Strings
  • Absence-Strings
  • optionale Regex-Regeln
  • optionale Header
  • site-spezifische Tags

Ein Treffer gilt nur dann als belastbar, wenn die erwarteten Presence-Strings vorhanden sind und keine Absence-Strings gefunden werden.

Das gleiche Muster sollten Sie für API-Tests verwenden. Ein 200 OK reicht nicht.

Beispiel für eine robustere API-Assertion:

Statuscode: 200
Header: Content-Type enthält application/json
Body: $.id existiert
Body: $.status == "active"
Body: $.error existiert nicht
Enter fullscreen mode Exit fullscreen mode

Mit Apidog können Sie Statuscode-, Header- und Body-Assertions in derselben Anfrage definieren. Das entspricht dem API-Test-Äquivalent von Maigrets Presence- und Absence-Regeln.

Rekursive Suche und Informationsgewinnung

Wenn Maigret ein Profil findet, endet der Prozess nicht automatisch. Das Tool kann weitere öffentliche Identifikatoren extrahieren:

  • andere Benutzernamen
  • angezeigte Namen
  • öffentliche E-Mail-Adressen
  • Telefonnummern, falls öffentlich sichtbar
  • verlinkte Profile
  • weitere Handles

Diese Extraktionsregeln sind ebenfalls site-spezifisch. Ein GitHub-Profil hat andere Felder als ein LinkedIn-, Reddit- oder Instagram-Profil.

Danach kann Maigret rekursiv weiterarbeiten: Neue Identifikatoren werden wieder in den Suchprozess eingespeist.

Für OSINT ist das der Unterschied zwischen:

Ein Profil wurde gefunden.
Enter fullscreen mode Exit fullscreen mode

und:

Mehrere verknüpfte öffentliche Profile wurden über gemeinsame Identifier korreliert.
Enter fullscreen mode Exit fullscreen mode

Für API-Tests gibt es ein ähnliches Muster. Wenn ein Endpunkt ein Feld zurückgibt, das auf ein anderes Objekt verweist, sollten Tests diesem Feld folgen.

Beispiel:

{
  "userId": "u_123",
  "organizationId": "org_456",
  "billingProfileId": "bp_789"
}
Enter fullscreen mode Exit fullscreen mode

Daraus entstehen Folgeprüfungen:

GET /users/u_123
GET /organizations/org_456
GET /billing-profiles/bp_789
Enter fullscreen mode Exit fullscreen mode

So finden Sie fehlende Verträge, inkonsistente Datenmodelle und nicht dokumentierte Abhängigkeiten.

Captcha- und Rate-Limit-Handling

Maigret versucht nicht, aggressive Schutzmechanismen zu „brechen“. Es erkennt Rate Limits und Captchas und reagiert defensiv.

Typische Strategien sind:

  • angepasste User Agents
  • Beachtung site-spezifischer Retry-Header
  • Fallback auf mobile oder vereinfachte Domains
  • optionales Routing über Tor oder I2P, wenn die Website dies erlaubt
  • Markierung als „Captcha erkannt“, wenn keine sichere automatische Prüfung möglich ist

Das ist wichtig: Maigret ist kein Tool zum Überwinden feindlicher Abwehrmaßnahmen. Es arbeitet mit öffentlich erreichbaren Oberflächen und markiert unklare Ergebnisse.

Für API-Test-Runner gilt dasselbe Prinzip. Wenn Ihre Tests auf ein Rate Limit treffen, sollten sie nicht aggressiv weiterfeuern.

Robustes Verhalten:

HTTP 429 erkannt
Retry-After auslesen
Testlauf pausieren oder abbrechen
Ergebnis als Rate-Limit-Ereignis melden
Enter fullscreen mode Exit fullscreen mode

Schlechtes Verhalten:

429 ignorieren
Requests weiter senden
IP sperren lassen
falsche Fehlermeldungen erzeugen
Enter fullscreen mode Exit fullscreen mode

Das Problem der Signaturdrift

Eine Datenbank mit über 3.000 Websites ist nur nützlich, wenn sie aktuell bleibt. Websites ändern:

  • URL-Strukturen
  • HTML-Klassen
  • Fehlermeldungen
  • Captcha-Verhalten
  • Profilfelder
  • Weiterleitungen
  • Marken- oder Domainnamen

Eine alte Signatur erzeugt zwei Probleme:

  • False Negative: Ein existierendes Profil wird nicht gefunden.
  • False Positive: Ein nicht existierendes Profil wird fälschlich als Treffer erkannt.

Maigret begegnet diesem Problem mit mehreren Schichten:

  • automatisches Update aus dem zentralen GitHub-Repository
  • Community-Pull-Requests für einzelne Signaturen
  • --update-Flag für manuelle Aktualisierung
  • Test-Harness gegen bekannte existierende Benutzernamen

Beispiel:

maigret --update
maigret username -a
Enter fullscreen mode Exit fullscreen mode

Der entscheidende Punkt ist das Test-Harness. Für viele Sites kann ein bekannter, existierender Benutzername verwendet werden, um zu prüfen, ob die Signatur noch funktioniert. Wenn ein bekannter Account nicht mehr erkannt wird, ist wahrscheinlich die Signatur kaputt.

Das ist exakt das Muster, das API-Teams brauchen:

  1. Speichern Sie pro Endpunkt ein bekannt gutes Fixture.
  2. Wiederholen Sie Requests regelmäßig gegen eine Test- oder Staging-Umgebung.
  3. Vergleichen Sie Statuscode, Header und Body.
  4. Melden Sie Drift, bevor produktive Clients brechen.

Mit Apidog können Sie solche bekannten Antworten und Assertions als Teil Ihrer API-Tests pflegen. Der DeepSeek V4 API-Leitfaden zeigt die manuelle Seite solcher Anbieterprüfungen.

Der optionale KI-Zusammenfassungsmodus

Maigrets --ai-Flag nutzt einen OpenAI-kompatiblen LLM-Endpunkt, um Rohergebnisse in eine kurze Zusammenfassung zu verwandeln. Der Nutzer stellt den API-Schlüssel bereit; Maigret übernimmt Prompt-Struktur und Aufruf.

Wichtig: Das Modell entscheidet nicht, ob ein Benutzername gefunden wurde. Diese Entscheidung bleibt regelbasiert und deterministisch. Das LLM fasst nur zusammen.

Das ist eine gute Architektur:

Deterministische Regeln → strukturierte Ergebnisse → LLM-Zusammenfassung
Enter fullscreen mode Exit fullscreen mode

Nicht:

LLM entscheidet, ob der Test bestanden wurde
Enter fullscreen mode Exit fullscreen mode

Dasselbe Muster funktioniert für API-Monitoring:

  1. Assertions entscheiden über Pass/Fail.
  2. Testergebnisse werden strukturiert gespeichert.
  3. Ein LLM fasst den Laufbericht für Slack, E-Mail oder Tickets zusammen.

Warum die strukturierte Ebene zuerst kommen sollte, erklären wir auch in Computernutzung vs. strukturierte APIs.

Legitime Anwendungsfälle

Es gibt klare Kontexte, in denen Maigret sinnvoll und angemessen eingesetzt werden kann.

1. Eigene Kontowiederherstellung

Sie können alte Konten suchen, die mit einem früheren Benutzernamen verknüpft sind. Das ist hilfreich für:

  • Datenschutzprüfungen
  • Löschen alter Profile
  • Reduzierung des digitalen Fußabdrucks
  • Account-Inventarisierung

2. Markenschutz

Unternehmen können nach Marken-, Produkt- oder Projektnamen suchen, um Nachahmerprofile zu erkennen.

Beispiele:

maigret yourbrand -a
maigret yourproduct --tags social
Enter fullscreen mode Exit fullscreen mode

3. Suche nach vermissten Personen

Such- und Rettungsorganisationen oder spezialisierte Gruppen können Maigret mit Zustimmung der Familie und in Abstimmung mit Behörden einsetzen.

Wichtig: Eigenständige, unkoordinierte Ermittlungen können offizielle Untersuchungen stören.

4. Autorisierte Red-Team-Einsätze

Pentest- und Red-Team-Teams nutzen OSINT-Tools, um die öffentliche Angriffsfläche einer Organisation zu kartieren. Entscheidend ist ein schriftlicher Auftrag mit definiertem Scope.

Beispiel-Scope:

Ziel: example-corp.com
Erlaubt: öffentliche Profile, Markenhandles, Unternehmensaccounts
Nicht erlaubt: Privatpersonen außerhalb des Scopes
Enter fullscreen mode Exit fullscreen mode

5. Investigativer Journalismus

Reporter können OSINT-Tools im Rahmen redaktioneller und rechtlicher Prüfung einsetzen, etwa bei Betrug, organisierter Kriminalität oder öffentlichem Fehlverhalten.

Nicht legitim sind neugierige Abfragen über Fremde, Überwachung von Ex-Partnern oder das Erstellen von Profilen über Personen ohne Zustimmung.

Muster von Maigret für API-Tests

Die spannendsten Teile von Maigret sind nicht OSINT-spezifisch. Sie sind allgemeine Engineering-Muster.

1. Signaturdatenbanken statt handgeschriebener Prüfungen

Definieren Sie erwartetes Verhalten als Daten, nicht nur als Code.

Beispiel:

{
  "endpoint": "GET /users/{id}",
  "expectedStatus": 200,
  "requiredFields": ["id", "email", "status"],
  "forbiddenFields": ["password", "internalToken"]
}
Enter fullscreen mode Exit fullscreen mode

Das ist leichter zu versionieren, zu reviewen und zu erweitern.

2. Multi-Signal-Assertions

Prüfen Sie nicht nur den Statuscode.

Besser:

Statuscode == 200
Content-Type enthält application/json
$.id existiert
$.email ist String
$.password existiert nicht
Enter fullscreen mode Exit fullscreen mode

3. Automatisch aktualisierte Signaturen

Wenn Ihre API-Contracts zentral verwaltet werden, sollten Tests regelmäßig die aktuelle Version nutzen. Apidog-Projekte unterstützen Cloud-Synchronisierung; nutzen Sie sie, wenn Teams parallel an Endpunkten arbeiten.

Der Workflow wird in API-Tests ohne Postman ausführlicher beschrieben.

Apidog API Testing Screenshot

4. Drift-Erkennung

Planen Sie Wiederholungen gegen bekannte Fixtures.

Beispiel-Checkliste:

[ ] Request gegen bekannten Datensatz ausführen
[ ] Statuscode vergleichen
[ ] Header vergleichen
[ ] JSON-Schema vergleichen
[ ] kritische Felder vergleichen
[ ] Diff im Fehlerfall speichern
Enter fullscreen mode Exit fullscreen mode

5. LLM als Postprozessor, nicht als Richter

Lassen Sie deterministische Tests entscheiden. Verwenden Sie LLMs nur für Zusammenfassungen:

10 Tests fehlgeschlagen
3 Endpunkte mit Schema-Drift
1 Endpunkt liefert unerwartet 500
Zusammenfassung für Incident-Kanal generieren
Enter fullscreen mode Exit fullscreen mode

So bleibt die Testentscheidung nachvollziehbar.

Häufige Fallstricke bei Maigret

Wenn Sie Maigret technisch evaluieren, vermeiden Sie diese Fehler.

Ohne -a ausführen und Vollständigkeit erwarten

Standardmäßig scannt Maigret nicht zwingend alle Sites. Für vollständige Läufe:

maigret username -a
Enter fullscreen mode Exit fullscreen mode

Der Lauf dauert entsprechend länger.

Tags ignorieren

Mit Tags können Sie den Suchraum eingrenzen:

maigret username --tags social
maigret username --tags jp
maigret username --tags ru
Enter fullscreen mode Exit fullscreen mode

Das ist nützlich, wenn bestimmte Regionen oder Plattformtypen relevant sind.

Updates überspringen

Alte Signaturen erzeugen schlechte Ergebnisse.

maigret --update
Enter fullscreen mode Exit fullscreen mode

Führen Sie Updates vor ernsthaften Untersuchungen aus.

Tor-Ergebnisse falsch interpretieren

Einige Websites blockieren Tor-Exit-Knoten. Das ist kein Signal über den Benutzer, sondern über die Zugriffsumgebung.

Extrahierte Felder ungeprüft übernehmen

Maigret extrahiert, was öffentlich sichtbar ist. Profile können falsch, satirisch, gekapert oder absichtlich irreführend sein. Behandeln Sie Ergebnisse als Hinweise, nicht als Beweise.

Praktische Anwendungsszenarien

Red-Team-Scoping

Eine Sicherheitsberatung kann Maigret als ersten Schritt in einem autorisierten Red-Team-Engagement verwenden. Das Ergebnis fließt in den Kickoff-Bericht ein und zeigt dem Kunden, welche öffentlichen Profile, Handles oder Markenvarianten sichtbar sind.

Betrugsermittlung

Ein Ermittler kann einen vollständigen Scan ausführen und den optionalen KI-Modus nutzen, um aus vielen Treffern eine kurze, lesbare Zusammenfassung für nicht-technische Stakeholder zu erstellen.

maigret username -a --ai
Enter fullscreen mode Exit fullscreen mode

Die Suche bleibt deterministisch; das LLM erzeugt nur die Zusammenfassung.

API-Testarchitektur

Ein Engineering-Team kann dieselben Prinzipien auf interne APIs anwenden:

  • Signaturen pro Endpunkt
  • gespeicherte Fixtures
  • geplante Wiederholungen
  • Drift-Erkennung
  • lesbare Reports

Diese Patterns lassen sich in Apidog für API-Projekte modellieren.

Fazit

Maigret ist ein gutes Beispiel dafür, wie man ein langlebiges, signaturbasiertes Erkennungssystem baut. Auch wenn Sie nie OSINT-Recherchen durchführen, lohnt sich die technische Analyse.

Die wichtigsten Learnings:

  • Maigret nutzt eine versionierte, aktualisierbare Signaturdatenbank für über 3.000 Websites.
  • Multi-Signal-Erkennung ist zuverlässiger als reine Statuscode-Prüfung.
  • Drift ist der Hauptfeind langlebiger Scanner und Testsuites.
  • Bekannte Fixtures helfen, kaputte Signaturen früh zu erkennen.
  • LLMs eignen sich gut für Zusammenfassungen, nicht für deterministische Entscheidungen.
  • Dieselben Muster funktionieren für API-Tests mit Apidog.

Nächster praktischer Schritt: Lesen Sie das Maigret-Site-Datenbankformat, öffnen Sie dann Apidog und modellieren Sie einen Endpunkt nach demselben Prinzip: signaturgesteuert, mit Multi-Signal-Assertions und einem bekannten Fixture zur Drift-Erkennung.

FAQ

Ist die Verwendung von Maigret legal?

Das hängt von Gerichtsbarkeit, Ziel und Kontext ab. Die Anwendung auf eigene Konten, eigene Marken, autorisierte Unternehmensziele oder journalistische Arbeit unter rechtlicher Prüfung ist in der Regel unproblematischer. Die Anwendung gegen ahnungslose Privatpersonen kann Stalking- oder Belästigungsgesetze verletzen.

Funktioniert Maigret ohne Python?

Das offizielle Paket benötigt Python 3.10+. Zusätzlich gibt es einen Telegram-Bot und Cloud-Shell-Optionen für gelegentliche Nutzung ohne lokale Installation.

Wie genau ist die Angabe „über 3.000 Websites“?

Die Site-Datenbank enthält über 3.000 Einträge. Nicht alle sind jederzeit aktiv oder erreichbar. Updates, Community-Beiträge und Tags helfen, eine funktionierende und relevante Teilmenge zu nutzen.

Was macht der KI-Modus?

Das --ai-Flag verwendet einen OpenAI-kompatiblen LLM-Endpunkt, um deterministische Ergebnisse in einem lesbaren Bericht zusammenzufassen. Es verändert nicht die eigentliche Suche.

Kann ich Maigret in CI verwenden?

Für OSINT-Untersuchungen ist Maigret eher ein interaktives Werkzeug. Die Architektur dahinter — Signaturen, Fixtures, geplantes Replay und Drift-Erkennung — gehört dagegen direkt in CI-Pipelines für API-Tests. Apidog eignet sich dafür als API-Test- und Contract-Workflow.

Worin unterscheidet sich Maigret von Sherlock?

Sherlock ist der ältere und einfachere Vorgänger. Maigret erweitert den Ansatz um Informationsgewinnung, rekursive Suche, Captcha-Handling, KI-Zusammenfassungen und eine umfangreichere Site-Datenbank. Beide Projekte sind MIT-lizenziert.

Wo melde ich eine veraltete Signatur?

Im Maigret-Repository über GitHub-Issues oder Pull Requests. Üblich ist ein fokussierter PR pro veralteter oder korrigierter Website-Signatur.

Top comments (0)