
⛏️ Der Extraktionsmotor hinter Maigret: Wandeln Sie jede Profil-URL in einen strukturierten OSINT-Datensatz auf über 150 Websites um.
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
extract()-Aufruf für Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok – kein plattformspezifischer Klebecode auf deiner Seite.username, fullname, created_at, is_verified, …), sodass nachgelagerte Pipelines keine 130 Zuordnungen benötigen.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
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
130+ Schemata – die vollständige Liste findest du in METHODS.md.
Eine nicht vollständige Auswahl:
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.
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]
socid_extractor in dein ProduktEntspricht den folgenden SOWEL-Techniken:
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/.
Siehe den Mitwirkungsleitfaden, falls du ein neues Schema hinzufügen oder etwas reparieren möchtest.