
socid-extractor v0.1.1
⛏️ Der Extraktionsmotor hinter Maigret: Wandeln Sie jede Profil-URL in einen strukturierten OSINT-Datensatz auf über 150 Websites um.
socid_extractor
Verwandle jede öffentliche Profilseite in einen strukturierten Kontoeintrag – Benutzernamen, Anzeigenamen, Biografien, Avatare, Standorte, Beitrittsdaten, Follower-Zahlen, externe Links und die stabilen internen Identifikatoren, die ein Konto auch bei Umbenennungen, Neugestaltungen und Löschungen eindeutig identifizieren.
socid_extractor analysiert HTML-Seiten und API-Antworten von über 130 Plattformen und gibt ein flaches, maschinenlesbares Wörterbuch mit Kontofeldern zurück. Kein API-Schlüssel erforderlich, kein Headless-Browser – nur ein einziger Funktionsaufruf auf den Antworttext.
Warum es nützlich ist
- Stabile plattformübergreifende IDs. Erhalte die GAIA-ID (Google), Facebook-UID, Yandex Public ID, Instagram pk und Dutzende weitere – Werte, die Benutzernamensänderungen überleben und es dir ermöglichen, Konten über Leaks, Archive und Suchmaschinenindizes hinweg zu korrelieren.
- Einheitliche Schnittstelle. Derselbe
extract()-Aufruf für Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok – kein plattformspezifischer Klebecode auf deiner Seite. - Feld-Ontologie. Normalisierte Feldnamen über Plattformen hinweg (
username,fullname,created_at,is_verified, …), sodass nachgelagerte Pipelines keine 130 Zuordnungen benötigen. - Kampferprobt. Betreibt Maigret und eine Reihe anderer OSINT-Tools.
Installation
Python: 3.10+.
pip install socid-extractor
Für eine saubere CLI-Installation auf einem Arbeitsrechner:
pipx install socid-extractor
Die neueste Entwicklungsversion:
pip install -U git+https://github.com/soxoj/socid-extractor.git
Schnellstart
Als CLI:
$ socid_extractor --url https://www.deviantart.com/muse1908
country: France
created_at: 2005-06-16 18:17:41
gender: female
username: Muse1908
website: www.patreon.com/musemercier
links: ['https://www.facebook.com/musemercier', 'https://www.instagram.com/muse.mercier/', 'https://www.patreon.com/musemercier']
tagline: Nothing worth having is easy...
Als Python-Bibliothek:
import requests
import socid_extractor
r = requests.get('https://www.patreon.com/annetlovart')
print(socid_extractor.extract(r.text))
# {'patreon_id': '33913189', 'patreon_username': 'annetlovart',
# 'fullname': 'Annet Lovart',
# 'links': "['https://www.facebook.com/322598031832479', ...]"}
Tipp – Stapelverarbeitung: Übergib --skip-fetch-if-no-url-hint, um die HTTP-Anfrage zu überspringen, wenn die URL zu keinem bekannten Website-Hinweis passt (schneller, kann aber generische Engines wie Forenvorlagen überspringen):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
Unterstützte Seiten
130+ Schemata – die vollständige Liste findest du in METHODS.md.
Eine nicht vollständige Auswahl:
- Große Netzwerke: Facebook (Benutzer- und Gruppenseiten), Instagram, VK.com, OK.ru, Reddit, TikTok, Bluesky, Tumblr, Flickr
- Google-Ökosystem: Google Docs/Maps-Beiträge (Cookies erforderlich), Google Play, YouTube
- Mail.ru: my.mail.ru Benutzer-Hauptseite, Foto, Video
- Entwickler-/Schreibplattformen: GitHub, Stack Overflow (HTML + API), LeetCode, Hashnode, Medium, Substack, Paragraph, WordPress.org, Virgool
- Foren (universelle Detektoren): Discourse, MediaWiki / Fandom-Wikis, Mastodon
- Nischen / Vertikale: Chess.com, Roblox, MyAnimeList, Scratch, Wikipedia, DailyMotion, SlideShare, Weebly, Calendly, Amazon Author, Boosty, Warpcast (Farcaster), Fragment (TON/Telegram), Rarible, CSSBattle, lnk.bio, Spatial, TwitchTracker, Max (max.ru)
- …und viele weitere.
Für Datenbeispiele siehe tests/test_e2e.py; für die Parsing-Logik siehe socid_extractor/schemes.py; für die Feld-Ontologie siehe FIELDS.md.
Anwendungsfälle
- Von einem Profil zu allem, was du sehen kannst, abzweigen. Ein einziger Aufruf gibt die sichtbaren Informationen sowie die versteckten internen IDs zurück, die die Plattform hinter den Kulissen verwendet. Hintergrundlektüre: Week in OSINT — Getting a grasp on Google IDs.
- Konten über Umbenennungen, Neugestaltungen und Löschungen hinweg verfolgen. Stabile IDs (GAIA, FB UID, Yandex Public ID, Instagram pk, …) ermöglichen es, dieselbe Person wiederzuerkennen, selbst wenn jedes sichtbare Feld geändert wurde. Hintergrund: Aware Online — User IDs in social-media investigations.
- Suche nach plattformübergreifender UID. Sobald du einen stabilen Identifikator hast, kannst du abzweigen in:
- SQL-/geleakte Datenbanken (Foren-Dumps, Leak-Daten), in denen die UID der Join-Schlüssel ist,
- Google-/Yandex-/archive.org-Indizes, die URLs mit der UID erfasst haben.
- Nachgelagerte OSINT-Tools füttern. Ein normalisierter Datensatz ist viel einfacher zu verarbeiten als seitenweise Scraper – verwendet von Maigret und ähnlichen Tools zur Anreicherung.
Kommerzielle Nutzung
Der quelloffene socid_extractor ist MIT-lizenziert und kann ohne Einschränkungen kommerziell genutzt werden – aber Seiten-Parser brechen mit der Zeit, da Plattformen ihr HTML und ihre APIs ändern, und sie benötigen aktive Wartung.
Für ernsthafte kommerzielle Nutzung – mit einem gewarteten privaten Plugin-Paket mit zusätzlichen Parsern oder einer gehosteten Extraktions-API – nimm Kontakt auf: 📧 [email protected]
- Privates Parser-Plugin – über 100 zusätzliche Prüfungen zusätzlich zu den öffentlichen 150+ Seiten, stets aktuell gehalten, wenn sich Plattformen ändern (getrennt von der öffentlichen Open-Source-Datenbank)
- Extraktions-API – integriere
socid_extractorin dein Produkt
SOWEL-Klassifizierung
Entspricht den folgenden SOWEL-Techniken:
- SOTL-1.4. Analyse interner Identifikatoren
- SOTL-11.1. Prüfung veralteter und ungenutzter Funktionalität
Tools, die socid_extractor verwenden
- Maigret – Leistungsstarker Name-Checker, der einen Bericht mit allen verfügbaren Informationen aus gefundenen Konten auf über 3000 Seiten erstellt.
- TheScrapper – Scraping von E-Mails, Telefonnummern und Social-Media-Konten von einer Website.
- InfoHunter – Open-Source-OSINT-Tool zum Suchen, Sammeln und Analysieren von Informationen im Internet.
- YaSeeker – Sammle alle verfügbaren Informationen über ein Yandex-Konto per Login/E-Mail.
- Marple – Scraping von Suchergebnissen für einen bestimmten Benutzernamen.
Testen
Installiere die Test-Zusatzpakete aus pyproject.toml und führe dann pytest aus:
pip install '.[test]' # pytest, pytest-rerunfailures, pytest-xdist
python3 -m pytest tests/test_e2e.py -n 10 -k 'not cookies' -m 'not github_failed and not rate_limited'
Verwende stattdessen pip install '.[dev]', wenn du auch flake8 / mypy / black möchtest (der vollständige Satz, der von CI verwendet wird).
Jedes neue Schema muss einen E2E-Test in tests/test_e2e.py haben, der eine echte URL/API aufruft. Unit-Tests mit Inline-Fixtures (tests/test_socid_improvements.py) sind ebenfalls erforderlich, ersetzen aber nicht die E2E-Abdeckung. Siehe docs/testing-and-ci.md für Details.
Die Entwicklerdokumentation (Architektur, Module, CI) befindet sich in docs/.
Mitwirken
Siehe den Mitwirkungsleitfaden, falls du ein neues Schema hinzufügen oder etwas reparieren möchtest.