A maioria das ferramentas OSINT envelhece rapidamente. A web muda constantemente, os sites alteram seus endpoints, os captchas evoluem e a ferramenta morre em dois anos. Maigret é a exceção. Ela funciona há anos, suporta mais de 3.000 sites, oferece um pacote Python, um bot de Telegram e uma interface web, e a engenharia por trás dela é uma pequena aula magistral sobre como construir um scanner que não quebra toda vez que um site muda.
Este guia é para engenheiros, não para consultas casuais. Ele descreve o que Maigret faz, os casos de uso legítimos de pesquisa e segurança que o justificam, a arquitetura que permite escalar para milhares de sites, e como os mesmos padrões de teste que Maigret usa (bancos de dados de assinaturas, detecção de desvios, verificação recursiva) se traduzem no trabalho de teste de API que você faz todos os dias com o Apidog.
Se você ainda não leu, nosso post Testes de API sem Postman em 2026 aborda ideias semelhantes de correspondência de padrões e detecção de desvios em um domínio mais amigável.
TL;DR
- Maigret coleta um dossiê público sobre uma pessoa apenas pelo nome de usuário, verificando mais de 3.000 sites em busca de contas e extraindo informações de perfil público.
- A engenharia é impressionante: um banco de dados de assinaturas de sites versionado, pesquisa recursiva, detecção automática de desvios, bypass de captcha e um modo de resumo opcional com IA.
- Usos legítimos incluem investigações OSINT por jornalistas, recuperação de contas, buscas por pessoas desaparecidas, auditorias de segurança e monitoramento de abuso de marca corporativa.
- Engajamentos autorizados de red-team dependem de ferramentas como Maigret para mapear a superfície de ataque pública de uma organização; usá-lo em pessoas sem seu consentimento cruza a linha do assédio e perseguição.
- As ideias arquitetônicas (detecção orientada por assinatura, verificação recursiva, alertas automatizados de desvio) se transferem diretamente para testes de API; mostramos como aplicá-las com o Apidog.
- Baixe o Apidog para projetar e testar asserções estilo assinatura em suas próprias APIs da mesma forma que Maigret testa sites.
O que Maigret é e o que não é
Maigret é uma ferramenta Python, com licença MIT, mantida por soxoj. A descrição no README: "coletar um dossiê sobre uma pessoa pelo nome de usuário de mais de 3.000 sites." Execute pip install maigret, forneça um nome de usuário, e ele consulta os sites em seu banco de dados, extrai qualquer informação de perfil público por trás de cada conta encontrada e produz um relatório.

Três coisas para deixar claras.
Ele usa apenas dados públicos. Sem login, sem abuso de credenciais, sem chaves de API. Se um site expõe um perfil a visitantes anônimos, Maigret o lê; caso contrário, ele retorna "nome de usuário não encontrado" ou uma página sinalizada.
É amplamente utilizado em contextos de pesquisa legítimos. Jornalistas em grandes veículos investigativos, voluntários de pessoas desaparecidas, equipes de fraude e proteção de marca, e equipes vermelhas autorizadas o usam diariamente. O próprio README de Maigret lista referências em currículos acadêmicos de OSINT.
Pode ser mal utilizado. Como qualquer ferramenta OSINT, executá-la em um indivíduo privado sem seu consentimento cruza linhas éticas e, em muitas jurisdições, legais. Leis de perseguição na UE, EUA e na maioria das outras regiões se aplicam. Leia suas regras locais antes de apontar isso para qualquer pessoa.
O restante deste artigo foca na engenharia e em padrões de teste transferíveis, não no fluxo de trabalho de direcionamento humano.
O banco de dados de assinaturas de sites
A melhor ideia de engenharia em Maigret é o banco de dados de assinaturas de sites. Cada entrada descreve um site com informações suficientes para que o scanner possa decidir:
- O nome de usuário existe neste site?
- Como é uma página "encontrada"?
- Como é uma página "não encontrada"?
- Que informações podemos extrair de uma página encontrada?
- Este site tem limite de taxa ou captcha?
O banco de dados é JSON, versionado no repositório e autoatualizado do GitHub uma vez a cada 24 horas quando a ferramenta é executada. Se os mantenedores atualizarem uma assinatura para um site que mudou recentemente, cada instalação de Maigret a obtém no dia seguinte sem reinstalação.
Este padrão é exatamente o que você deseja para um conjunto de testes de API. Seu projeto tem 50, 500 ou 5.000 endpoints. Cada endpoint tem uma assinatura: códigos de status esperados, formatos de resposta, envelopes de erro. Quando um fornecedor altera o formato, você deseja que o conjunto de testes falhe rapidamente com uma diferença útil. Abordamos a mesma ideia no desenvolvimento de API "contract-first" e no manual de testes de servidor MCP.
Como Maigret detecta "nome de usuário encontrado" vs "não encontrado"
Um scanner ingênuo faz um HTTP GET em https://example.com/user/<username> e verifica o código de status. Isso funciona para talvez 10% dos sites reais. Os outros 90% retornam 200 com uma página "usuário não encontrado", ou 200 com uma página inicial em cache, ou 200 com um desafio de captcha.
O banco de dados de Maigret descreve cada site com um conjunto mais rico de regras de detecção:
- Um
urlMaine um modelo deurl - Uma lista
presenseStrs(substrings que devem aparecer quando o usuário existe) - Uma lista
absenceStrs(substrings que confirmam que o usuário não existe) - Uma regex para extração do nome de usuário da página
- Cabeçalhos opcionais (alguns sites precisam de um user agent personalizado)
- Tags para categoria e país
Um veredito de "encontrado" exige que todas as presenseStrs estejam presentes na resposta e nenhuma das absenceStrs. Um veredito de "não encontrado" é o inverso. Qualquer outra coisa é um resultado "desconhecido" que o usuário pode investigar manualmente.
Este é o mesmo tipo de asserção multi-sinal que você deseja ao testar APIs complexas. Um status 200 não é suficiente; você precisa fazer asserções sobre o conteúdo do corpo também. O Apidog suporta asserções de código de status e conteúdo do corpo na mesma requisição, o que é o equivalente de teste de API das presenseStrs mais absenceStrs de Maigret.
Busca recursiva e extração de informações
Assim que Maigret encontra uma conta, ele faz mais duas coisas.
Ele extrai da página de perfil público identificadores adicionais: endereços de e-mail vinculados, números de telefone, nomes reais, outros nomes de usuário. As regras de extração também são orientadas por assinatura, definidas por site. Um perfil do LinkedIn produz campos diferentes de um perfil do GitHub.
Então ele recursa. Novos identificadores alimentam o loop de busca, expandindo o dossiê entre contas vinculadas. Um nome de usuário em um site pode levar a um nome real; esse nome pode desbloquear uma conta diferente em outro site; essa conta pode vincular a um identificador do Instagram; e assim por diante.
Para OSINT, esta é a diferença entre "encontrei uma conta do Twitter" e "rastreei esta pessoa em 12 serviços". Para um conjunto de testes de API, o mesmo padrão é valioso: quando você descobre um campo não documentado na resposta de um endpoint, siga-o. Muitas vezes aponta para um endpoint relacionado, um sistema downstream ou um caso de teste ausente.
Tratamento de Captcha e Limite de Taxa
Maigret parcialmente contorna captchas e detecta limites de taxa lendo o formato da resposta. As estratégias de bypass incluem:
- Rotação de user agents
- Respeitar cabeçalhos de repetição por site
- Recorrer ao domínio móvel ou simplificado do site
- Encaminhamento via Tor ou I2P quando o site permite
O README é honesto ao dizer que isso é parcial. Se um site possui anti-automação agressivo, Maigret registra "captcha detectado" e permite que o usuário investigue manualmente. A ferramenta não tenta derrotar defesas hostis; ela funciona com sites que permitem acesso anônimo básico.
O padrão se transfere: ao construir um cliente de API ou test runner, projete-o para detectar respostas de limite de taxa e recuar graciosamente, não para forçar a passagem. A mesma postura defensiva que mantém Maigret no lado certo dos termos do fornecedor impede que seus testes de API tenham o IP da equipe banido.
O problema do desvio de assinatura
Um banco de dados de 3.000 sites só é útil se permanecer atualizado. Os sites redesenham páginas de perfil, mudam padrões de URL, adicionam captchas ou são adquiridos e renomeados. Uma assinatura desatualizada retorna falsos negativos (sua pesquisa não encontra nada) ou falsos positivos (encontra contas que não existem).
Maigret resolve isso com três camadas:
- Atualização automática do repositório central do GitHub a cada 24 horas
- Solicitações de pull da comunidade que mantêm assinaturas de sites individuais
- Um sinalizador
--updateque força uma nova busca - Um sistema de teste integrado que valida cada assinatura contra um nome de usuário conhecido e existente antes de ser lançado
O terceiro item é o que a maioria das equipes de engenharia ignora. Maigret mantém um nome de usuário conhecido e existente para cada site (geralmente um desenvolvedor ou mantenedor que consentiu). O sistema consulta esse nome de usuário e confirma que a assinatura ainda funciona. Desvio detectado, assinatura sinalizada, colaboradores notificados.
Este é exatamente o tipo de suíte de regressão que você deseja para seus próprios contratos de API. O Apidog suporta o mesmo padrão: salve uma resposta conhecida e válida por endpoint, reproduza contra o endpoint ativo em um cronograma, compare o resultado e alerte sobre desvios. Nosso guia da API DeepSeek V4 aborda o lado manual disso para um fornecedor específico.
O modo opcional de resumo com IA
A flag --ai transforma os resultados brutos de Maigret em um breve resumo de investigação usando um endpoint LLM compatível com OpenAI. Você fornece a chave da API; Maigret estrutura o prompt e a chamada.
Este é um bom exemplo de LLM-como-pós-processador bem feito. O modelo nunca decide se um nome de usuário corresponde; isso é baseado em regras e determinístico. O modelo apenas resume, o que ele faz bem, e opera sobre uma entrada restrita. As alucinações são limitadas.
A mesma arquitetura funciona bem para monitoramento de API: asserções baseadas em regras determinísticas no Apidog, com um pós-processador LLM que transforma o relatório de execução em um resumo amigável para o Slack no final. Nosso post uso de computador vs. APIs estruturadas explica por que a camada estruturada deve sempre vir primeiro.
Casos de uso legítimos que valem a pena conhecer
Cinco contextos onde executar Maigret é inequivocamente apropriado.
Recuperação de conta para você mesmo. Encontre todas as contas antigas vinculadas a um nome de usuário que você usou em 2014. Útil antes de auditorias de privacidade ou ao encerrar uma pegada digital.
Monitoramento de abuso de marca. Empresas executam Maigret em seus nomes de marca ou produtos para detectar contas de impersonificação. A maioria das jurisdições incentiva este tipo de monitoramento; algumas o exigem.
Trabalho voluntário para pessoas desaparecidas. Organizações de busca e resgate e pessoas desaparecidas usam Maigret com consentimento da família para rastrear pegadas digitais. Sempre coordene com as autoridades; agir por conta própria aqui muitas vezes dificulta as investigações.
Engajamentos autorizados de red-team. Equipes de pentest sob contrato assinado usam Maigret para mapear a superfície de ataque pública de uma organização. O contrato define o escopo; a ferramenta é apenas a implementação.
Jornalismo investigativo. Repórteres que investigam fraudes, má conduta de figuras públicas ou crime organizado usam ferramentas OSINT sob revisão editorial e legal.
O que não está nesta lista: pesquisar um estranho por curiosidade, vigiar um ex-parceiro ou construir um conjunto de dados sobre pessoas que não consentiram. Esses usos cruzam linhas legais na maioria das jurisdições e linhas éticas em todos os lugares.
Padrões do Maigret que você pode aplicar aos testes de API
Cinco ideias de engenharia que se traduzem diretamente.
Bancos de dados de assinaturas em vez de verificações codificadas à mão. Defina o comportamento esperado de cada endpoint como dados, não como código. Novos fornecedores são adicionados sem recompilação.
Asserções multi-sinal. Código de status mais conteúdo do corpo mais verificação de cabeçalho, todos necessários. Reduz falsos positivos de respostas em cache ou páginas de erro genéricas.
Assinaturas com atualização automática. Puxe as asserções mais recentes de um repositório central em um cronograma. Os projetos do Apidog suportam sincronização na nuvem; use-a. Abordamos o fluxo de trabalho em Testes de API sem Postman.

Detecção de desvios. Programe uma reprodução periódica contra um conjunto de dados conhecidos e compare o resultado. Alerte sobre mudanças de formato antes que elas quebrem a produção.
LLM como pós-processador, não como juiz. Deixe as regras determinísticas decidirem aprovação/reprovação. Use o LLM apenas para transformar o relatório em algo legível.
Aplique isso e seu conjunto de testes de API ganhará a mesma longevidade que Maigret possui. A maioria dos conjuntos de testes morre porque foram escritos uma vez, codificados à mão e nunca atualizados. A arquitetura de Maigret é um modelo para um que sobrevive.
Armadilhas comuns ao executar Maigret
Para engenheiros experimentando a própria ferramenta.
Executar sem -a e assumir a completude. O padrão verifica os 500 principais sites por tráfego. Se sua investigação precisar da "cauda longa", passe -a para os mais de 3.000. Observe que a execução leva mais tempo.
Ignorar tags. A flag --tags restringe por categoria ou país. Um usuário na Rússia ou Japão será perdido por um padrão centrado nos EUA; a filtragem por tag os encontra.
Pular a atualização automática. Bancos de dados de assinaturas antigos produzem falsos positivos e falsos negativos. Deixe a atualização automática rodar, ou use --update manualmente antes de investigações sérias.
Executá-lo em Tor sem permissão do site alvo. Alguns sites bloqueiam nós de saída Tor; Maigret detecta isso. Não interprete um bloqueio de Tor como um sinal sobre o usuário.
Acreditar em campos extraídos sem verificar. A ferramenta extrai o que a página expõe. Páginas podem ser fabricadas. Trate os achados como pistas, não como evidências.
Casos de uso no mundo real
Uma consultoria de segurança utiliza Maigret como primeiro passo em cada engajamento de escopo de red-team. A saída é incluída no relatório de início para que o cliente veja sua superfície de ataque pública antes do engajamento começar.
Um investigador de fraude freelancer usa Maigret com a flag --ai para resumir uma varredura de 3.000 sites em um breve resumo de 200 palavras para clientes não técnicos. A busca determinística é o dado; o LLM é a camada legível.
Uma equipe de engenharia usa as mesmas ideias arquitetônicas (banco de dados de assinaturas, detecção de desvios, reprodução periódica) para manter seu conjunto de testes de API interno atualizado em 200 microsserviços. Eles o construíram no Apidog; os princípios são de Maigret.
Conclusão
Maigret é um exemplo prático de como construir uma ferramenta que escala para milhares de regras de detecção sem quebrar cada vez que as superfícies subjacentes mudam. A engenharia vale a pena estudar, mesmo que você nunca faça uma investigação OSINT: bancos de dados de assinaturas, asserções multi-sinal, dados auto-atualizáveis, detecção de desvios e pós-processamento de LLM são todos transferíveis para o trabalho de teste de API que você faz diariamente.
Cinco pontos chave:
- Maigret verifica mais de 3.000 sites em busca de um nome de usuário usando um banco de dados de assinaturas versionado e auto-atualizável.
- A detecção multi-sinal (strings de presença mais strings de ausência) supera as verificações simples de código de status em termos de confiabilidade.
- O desvio é o inimigo de qualquer suíte de testes de longa duração; a reprodução periódica contra dados conhecidos o detecta precocemente.
- LLM como pós-processador (a flag
--ai) é a arquitetura correta: regras determinísticas, saída resumida. - Os mesmos padrões funcionam para testes de API no Apidog; nós os aplicamos em todos os conjuntos de contratos de nossos clientes.
Próximo passo: leia o formato do banco de dados de sites do Maigret, então abra o Apidog e projete um endpoint em seu projeto da mesma forma: orientado por assinatura, multi-sinal, com um fixture salvo para detecção de desvios. A disciplina compensa na primeira vez que um fornecedor renomeia um campo às 2 da manhã e sua suíte o detecta antes que os usuários o façam.
FAQ
É legal usar Maigret?
Depende da jurisdição e do alvo. Usá-lo em você mesmo, em contas que você possui, em uma empresa que você tem autorização por escrito para testar, ou como parte de jornalismo autorizado geralmente é aceitável. Usá-lo em um indivíduo desavisado pode cruzar leis de assédio e perseguição na UE, EUA, Reino Unido e na maioria das outras regiões. Leia suas regras locais antes de qualquer uso que vise a terceiros.
Maigret funciona sem Python?
O pacote oficial é Python 3.10+. O autor mantém um bot do Telegram para consultas casuais e uma configuração de Cloud Shell para usuários que não desejam uma instalação local.
Quão precisa é a afirmação de 3.000 sites?
O banco de dados de sites no repositório lista mais de 3.000 entradas; nem todas estão ativas a qualquer momento. A atualização automática mantém um subconjunto funcional atualizado. A filtragem por tags ajuda você a focar nos sites que provavelmente importam para o seu escopo.
O que o modo IA adiciona?
A flag --ai usa um LLM compatível com OpenAI para resumir os resultados determinísticos em um relatório legível. Ela não altera a pesquisa em si; apenas pós-processa. Traga sua própria chave de API.
Posso usar Maigret em CI?
Para investigações OSINT, não; esse é um trabalho interativo. Os padrões arquitetônicos que Maigret usa (bancos de dados de assinaturas, detecção de desvios, reprodução programada) são exatamente o que pertence ao seu pipeline de CI para testes de API. O Apidog os implementa nativamente.
Como isso é diferente de Sherlock?
Sherlock é o ancestral mais antigo e simples. Maigret o estende com extração de informações, busca recursiva, tratamento de captcha, o modo de resumo com IA e um banco de dados de sites mais rico. Ambos são licenciados pelo MIT e valem a pena conhecer.
Onde reporto uma assinatura desatualizada?
O README aponta para as issues e pull requests do repositório Maigret no GitHub. As contribuições da comunidade mantêm o banco de dados atualizado; uma PR por site desatualizado é a norma.
