
⛏️ O motor de extração por trás do Maigret: transforme qualquer URL de perfil em um registro OSINT estruturado em mais de 150 sites
Transforme qualquer página de perfil público em um registro de conta estruturado — nomes de usuário, nomes de exibição, biografias, avatares, localizações, datas de adesão, contagens de seguidores, links externos e os identificadores internos estáveis que identificam exclusivamente uma conta através de renomeações, reformulações e exclusões.
socid_extractor analisa páginas HTML e respostas de API de mais de 130 plataformas e retorna um dicionário plano e legível por máquina dos campos da conta. Sem necessidade de chaves de API, sem navegador headless — apenas uma única chamada de função no texto da resposta.
Por que é útil
extract() para Instagram, GitHub, VK, Reddit, Substack, Bluesky, TikTok — sem código de integração por plataforma do seu lado.username, fullname, created_at, is_verified, …) para que pipelines downstream não precisem de 130 mapeamentos.Python: 3.10+.
pip install socid-extractor
Para uma instalação CLI limpa em uma estação de trabalho:
pipx install socid-extractor
A versão de desenvolvimento mais recente:
pip install -U git+https://github.com/soxoj/socid-extractor.git
Como 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...
Como biblioteca 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', ...]"}
Dica — execuções em lote: passe --skip-fetch-if-no-url-hint para pular a requisição HTTP quando a URL não corresponder a nenhuma dica de site conhecida (mais rápido, mas pode pular mecanismos genéricos como templates de fóruns):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
130+ esquemas — veja METHODS.md para a lista completa.
Uma amostra não exaustiva:
…e muitos outros.
Para exemplos de dados, veja tests/test_e2e.py; para a lógica de análise, veja socid_extractor/schemes.py; para a ontologia de campos, veja FIELDS.md.
O socid_extractor de código aberto é licenciado sob MIT e gratuito para uso comercial sem restrições — mas os analisadores de página quebram com o tempo à medida que as plataformas mudam seu HTML e APIs, e eles precisam de manutenção ativa.
Para uso comercial sério — com um pacote de plugins privados mantidos de analisadores extras ou uma API de extração hospedada — entre em contato: 📧 [email protected]
socid_extractor ao seu produtoMapeia para as seguintes técnicas SOWEL:
Instale os extras de teste de pyproject.toml, depois execute o pytest:
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'
Use pip install '.[dev]' se você também quiser flake8 / mypy / black (o conjunto completo usado pelo CI).
Cada novo esquema deve ter um teste e2e em tests/test_e2e.py acessando uma URL/API real. Testes de unidade com fixtures inline (tests/test_socid_improvements.py) também são necessários, mas não substituem a cobertura e2e. Veja docs/testing-and-ci.md para detalhes.
A documentação do desenvolvedor (arquitetura, módulos, CI) está em docs/.
Veja o guia de contribuição se você quiser adicionar um novo esquema ou corrigir algo.