
socid-extractor v0.1.1
⛏️ Движок извлечения данных, лежащий в основе Maigret: превратите любой URL профиля в структурированную OSINT-запись для более чем 150 сайтов
socid_extractor
Превратите любую публичную страницу профиля в структурированную запись аккаунта — имена пользователей, отображаемые имена, биографии, аватары, местоположения, даты регистрации, количество подписчиков, внешние ссылки и стабильные внутренние идентификаторы, которые однозначно закрепляют аккаунт при смене имени, редизайне и удалении.
socid_extractor разбирает HTML-страницы и ответы API из более чем 250 схем и возвращает плоский машиночитаемый словарь полей аккаунта. API-ключи не требуются, headless-браузер не нужен — достаточно одного вызова функции на тексте ответа.
Почему это полезно
- Стабильные межсервисные ID. Получайте GAIA ID (Google), Facebook UID, Yandex Public ID, Instagram pk и десятки других — значения, которые переживают смену имени пользователя и позволяют сопоставлять аккаунты по утечкам, архивам и индексам поисковых систем.
- Единый интерфейс. Один и тот же вызов
extract()для Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok — никакого платформенного кода-обвязки на вашей стороне. - Онтология полей. Нормализованные имена полей для всех платформ (
username,fullname,created_at,is_verified, …), так что последующим пайплайнам не нужны 130 маппингов. - Проверено на практике. Лежит в основе Maigret и ряда других OSINT-инструментов.
Установка
Python: 3.10+.
pip install socid-extractor
Для чистой установки CLI на рабочей станции:
pipx install socid-extractor
Последняя версия для разработки:
pip install -U git+https://github.com/soxoj/socid-extractor.git
Быстрый старт
Как 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...
Как библиотека Python:
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', ...]"}
Совет — пакетные запуски: передайте --skip-fetch-if-no-url-hint, чтобы пропустить HTTP-запрос, когда URL не соответствует ни одному известному подсказке сайта (быстрее, но может пропустить универсальные движки, такие как шаблоны форумов):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
Поддерживаемые сайты
Неполный список примеров:
- Крупные сети: Facebook (страницы пользователей и групп), Instagram, VK.com, OK.ru, Reddit, TikTok, Bluesky, Tumblr, Flickr
- Экосистема Google: вклад в Google docs/maps (требуются cookies), Google Play, YouTube
- Mail.ru: главная страница пользователя my.mail.ru, фото, видео
- Платформы для разработки и письма: GitHub, Stack Overflow (HTML + API), LeetCode, Hashnode, Medium, Substack, Paragraph, WordPress.org, Virgool
- Форумы (универсальные детекторы): Discourse, MediaWiki / вики Fandom, Mastodon
- Нишевые / вертикальные: 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)
…и многие другие.
Примеры данных см. в tests/test_e2e.py; логику парсинга см. в socid_extractor/schemes.py; онтологию полей см. в FIELDS.md.
Сценарии использования
- Переход от профиля ко всему, что можно увидеть. Один вызов возвращает видимую информацию плюс скрытые внутренние ID, которые платформа использует за кулисами. Для ознакомления: Week in OSINT — Getting a grasp on Google IDs.
- Отслеживание аккаунтов через переименования, редизайны и удаления. Стабильные ID (GAIA, FB UID, Yandex Public ID, Instagram pk, …) позволяют повторно идентифицировать одного и того же человека, даже когда все видимые поля изменились. Для ознакомления: Aware Online — User IDs in social-media investigations.
- Поиск по UID между сервисами. Получив стабильный идентификатор, можно перейти к:
- SQL / утёкшим базам данных (дампы форумов, данные утечек), где UID является ключом соединения,
- индексам Google / Yandex / archive.org, в которых сохранены URL, содержащие UID.
- Питание нижестоящих OSINT-инструментов. Нормализованную запись гораздо проще принимать, чем отдельные скраперы для каждого сайта — её используют Maigret и аналогичные инструменты для обогащения.
Коммерческое использование
Открытый socid_extractor распространяется по лицензии MIT и бесплатен для коммерческого использования без ограничений — но парсеры страниц со временем ломаются, поскольку платформы меняют свой HTML и API, и требуют активного сопровождения.
Для серьёзного коммерческого использования — размещённого API извлечения или сопровождения парсеров, от которых зависит ваш продукт — свяжитесь с нами: 📧 [email protected]
- API извлечения — интегрируйте
socid_extractorв свой продукт
Классификация SOWEL
Соответствует следующим техникам SOWEL:
Инструменты, использующие socid_extractor
- Maigret — мощный namechecker, который формирует отчёт со всей доступной информацией из аккаунтов, найденных на более чем 3000 сайтах.
- TheScrapper — собирает электронные письма, номера телефонов и аккаунты в социальных сетях с веб-сайта.
- InfoHunter — открытый OSINT-инструмент для поиска, сбора и анализа информации в интернете.
- YaSeeker — собирает всю доступную информацию об аккаунте Yandex по логину/email.
- Marple — собирает результаты поисковых систем по заданному имени пользователя.