
⛏️ Движок извлечения данных, лежащий в основе Maigret: превратите любой URL профиля в структурированную OSINT-запись для более чем 150 сайтов
Превратите любую публичную страницу профиля в структурированную запись аккаунта — имена пользователей, отображаемые имена, биографии, аватары, местоположения, даты регистрации, количество подписчиков, внешние ссылки и стабильные внутренние идентификаторы, которые однозначно закрепляют аккаунт при смене имени, редизайне и удалении.
socid_extractor разбирает HTML-страницы и ответы API из более чем 250 схем и возвращает плоский машиночитаемый словарь полей аккаунта. API-ключи не требуются, headless-браузер не нужен — достаточно одного вызова функции на тексте ответа.
Почему это полезно
extract() для Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok — никакого платформенного кода-обвязки на вашей стороне.username, fullname, created_at, is_verified, …), так что последующим пайплайнам не нужны 130 маппингов.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
Неполный список примеров:
…и многие другие.
Примеры данных см. в tests/test_e2e.py; логику парсинга см. в socid_extractor/schemes.py; онтологию полей см. в FIELDS.md.
Открытый socid_extractor распространяется по лицензии MIT и бесплатен для коммерческого использования без ограничений — но парсеры страниц со временем ломаются, поскольку платформы меняют свой HTML и API, и требуют активного сопровождения.
Для серьёзного коммерческого использования — размещённого API извлечения или сопровождения парсеров, от которых зависит ваш продукт — свяжитесь с нами: 📧 [email protected]
socid_extractor в свой продуктСоответствует следующим техникам SOWEL: