NT-2026.10.09 DOSSIÊ DFIR
CHANGEDETECTION.IO: MONITORAMENTO DE ALTERAÇÕES PARA OSINT
Aprenda a instalar e configurar o Changedetection.io com Docker, proteger o dashboard, criar monitoramentos, usar o Playwright para conteúdo dinâmico e integrar notificações em investigações OSINT.

Introdução
Em investigações OSINT, o sinal muitas vezes está na alteração, não no conteúdo estático. Uma mudança em uma página de golpe, a atualização de um perfil social ou a remoção de um documento público pode indicar atividade maliciosa ou movimentação de alvos. Verificar essas alterações manualmente não escala. O Changedetection.io resolve esse problema ao permitir o monitoramento automático de páginas web, notificando sempre que algo muda.
O que é Changedetection.io?
Changedetection.io é uma ferramenta de monitoramento auto-hospedada de alterações de sites que faz polling periódico das URLs configuradas, compara a captura atual com a última salva e notifica quando detecta diferenças. Ele suporta screenshots, diff visual, browser steps para conteúdo que requer interação (como login ou aceitação de cookies) e integração com diversos canais de notificação, incluindo webhooks, Telegram e email.
Por que o Changedetection.io importa para OSINT
Para OSINT, a ferramenta é valiosa porque:
- Permite monitorar sites que não expõem feeds RSS ou API, transformando qualquer URL em um feed observável.
- Lida com conteúdo renderizado por JavaScript através do container opcional Playwright, que roda um headless Chromium para capturar o DOM renderizado.
- Rastreia alterações por trás de autenticações usando browser steps, permitindo monitoramento em fóruns gated, páginas de produtos após aceitação de cookie banners e outros conteúdos dinâmicos.
- Isso amplia significativamente o alcance do investigador, tornando possível observar centenas de alvos sem inspeção manual.
Requisitos de instalação
Para implantar o Changedetection.io em modo de produção, os seguintes requisitos são necessários:
- Um VPS com pelo menos 2 GB de RAM (1 GB para o Changedetection, 1 GB de folga para o navegador Playwright ao buscar ativamente).
- Um domínio ou subdomínio apontando para o VPS (ex: watch.seudominio.com).
- Docker e Docker Compose instalados.
- Portas 80 e 443 abertas.
- Opcional: provedor de identidade para autenticação forte (Cloudflare Access, Authelia, Authentik) ou Tailscale/WireGuard.
Instalação com Docker Compose
A instalação segue os passos documentados oficialmente:
- Preparação do ambiente:
sudo mkdir -p /opt/changedetection
sudo chown -R $USER:$USER /opt/changedetection
cd /opt/changedetection
- Criação do arquivo docker-compose.yml:
services:
changedetection:
image: ghcr.io/dgtlmoon/changedetection.io:latest
container_name: changedetection
restart: unless-stopped
volumes:
- changedetection-data:/datastore
environment:
- BASE_URL=https://watch.yourdomain.com/
- PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000?stealth=1
ports:
- "127.0.0.1:5000:5000"
networks:
- watch
playwright-chrome:
image: dgtlmoon/sockpuppetbrowser:latest
container_name: playwright-chrome
restart: unless-stopped
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1024
- SCREEN_DEPTH=16
networks:
- watch
volumes:
changedetection-data:
networks:
watch:
- Inicialização:
docker compose up -d
- Verificação:
docker compose ps
Deve mostrar os contêineres (changedetection e playwright-chrome) em estado “Up”.
- Acesso inicial:
Abra um navegador e vá para https://watch.yourdomain.com/ (o Caddy fará o proxy reverso e terminará o TLS).

Configuração do Caddy (proxy reverso e TLS)
O Caddy fará o proxy reverso e terminará o TLS automaticamente via Let’s Encrypt. Se você não tiver o Caddy instalado:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install -y caddy
Crie ou estenda /etc/caddy/Caddyfile:
watch.yourdomain.com {
reverse_proxy 127.0.0.1:5000
encode gzip zstd
}
Valide e recarregue:
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
Agora o Changedetection estará acessível via HTTPS no seu domínio, com certificado válido gerenciado automaticamente pelo Caddy.
Configuração inicial e segurança do dashboard
Primeiro acesso: após o container subir, acesse o dashboard via https://watch.yourdomain.com. Você será solicitado a definir uma senha de admin. Após isso, é fundamental proteger o acesso ao dashboard com autenticação forte. Algumas opções:
- Cloudflare Access: se já usar Cloudflare DNS, crie uma policy para restringir o acesso ao subdomínio.
- IP allowlist em Caddy: se você acessa apenas de IPs fixos, configure o Caddy para permitir somente esses IPs.
- HTTP Basic Auth em Caddy: para uma senha compartilhada simples (menos segura, mas melhor que nada).
- Autenticação externa (Authelia, Authentik): para MFA e integração com provedores de identidade.
- Tailscale/WireGuard: para remover a superfície pública totalmente.
Lembre-se: sua lista de watches é informação sensível sobre o que você está investigando.
Criação de monitoramentos e configuração de alertas
Com o dashboard acessível e seguro, você pode criar suas primeiras watches:
- Clique no botão + Add Watch no canto superior esquerdo.
- Insira a URL que deseja monitorar.
- Defina o intervalo de verificação (ex: 1 hora, 30 minutos, 5 minutos). Intervalos muito curtos podem gerar carga desnecessária e aumentar a chance de bloqueio pelo site alvo.
- Opcionalmente, clique em Select Element para escolher um seletor CSS se você só se importa com uma parte da página (ex: um preço, um campo de bio).
- Na aba Notifications, configure um ou mais canais: webhook (com URL secreta), Telegram (bot token e chat ID), email (SMTP) ou outros.
- Salve a watch. O Changedetection fará a primeira captura imediatamente e começará o agendamento.
Você pode editar, pausar ou excluir watches a qualquer momento a partir da lista principal.

Monitoramento com navegador e Playwright
Muitos sites modernos renderizam seu conteúdo via JavaScript após o carregamento inicial HTML. Um simples fetcher HTTP vê apenas um “casco vazio”, enquanto o conteúdo real só aparece após a execução de scripts. Para esses casos, o Changedetection oferece um container opcional companion que roda o Playwright (headless Chromium).
Quando você habilita Use Browser nas settings de uma watch, o sistema:
- Instancia um navegador headless via o container Playwright.
- Carrega a página e aguarda o carregamento completo (incluindo execução de JS).
- Captura o DOM renderizado e, se solicitado, um screenshot.
- Executa o diff contra a última captura, tanto a nível de texto quanto visual (se screenshots estiverem ativados).
Isso permite monitorar single-page applications, dashboards dinâmicos, páginas protegidas por Cloudflare que exigem JS para exibir conteúdo, e qualquer site onde o conteúdo relevante só aparece após interação.
Configuração do Playwright como fetcher padrão:
Settings → General → Fetching → Default fetcher → Playwright. Salve.
Isso aplica a todos os novos watches automaticamente.


Casos práticos de investigação OSINT
Exemplos de como o Changedetection.io pode ser usado em investigações reais:
- Monitoramento de infraestrutura de golpes: acompanhe landing pages de esquemas de fraude para detectar quando eles trocam o endereço de carteira de criptomoedas, mudam o número de contato ou atualizam depoimentos falsos. Use seletores CSS para focar apenas no conteúdo relevante (ex:
.wallet-address,.contact-info) e ignorar menus de navegação e banners de cookies.
- Integridade de artigos: para fact-checking, faça watch no corpo de artigos de notícias ou relatórios para detectar edições stealth (quando uma saída é modificada sem aviso de correção). Um diff lateral é uma prova forte de que o conteúdo foi alterado. Defina um intervalo inicial de 30 minutos (a maioria das edições stealth ocorre nas primeiras horas) e aumente para 6 horas após o primeiro dia.
- Perfis sociais: monitoramento das páginas de perfil de alvos no Twitter/X, Telegram, LinkedIn ou Facebook para capturar mudanças na biografia, localização ou links destacados, que muitas vezes antecedem mudanças de conteúdo.
- Registro de empresas: monitorar páginas de consulta de CNPJ ou registros comerciais para observar quando uma empresa muda seu status, endereço ou representantes legais.
- Documentos públicos: watch em portais de transparência, diários oficiais ou repositórios de licitações para detectar publicação de novos editais ou alteração de valores.
- Marketplace e listagens: use a detecção nativa de preço e restock em páginas de produtos. Para OSINT contra mercados paralelos e mirrors de dark markets: monitore páginas de vendedores por novos anúncios (atividade operacional), itens específicos por quedas de preço ou remoção (urgência para liquidar ou possível apreensão), e páginas de reputação por avaliações negativas súbitas (frequentemente antecedem o vendedor desaparecer).
- Monitoramento com sock puppet: se você identificou contas alvo em uma plataforma, configure watches nas páginas de perfil. Use o fetcher Playwright com Browser Steps se necessário para logar via sock puppet primeiro. Monitore bio, contagem de seguidores, contagem de posts e indicadores de “última atividade”. Mudanças na bio são frequentemente o sinal antecedente de um alvo movendo operações para nova plataforma ou rebranding.
- Endpoints JSON como watches estruturados: se um site alvo possui uma API JSON (mesmo que não documentada, usada pelo próprio frontend), faça watch no endpoint diretamente com filtro JSONPath. Confiável, baixo consumo de banda, e você recebe dados estruturados em vez de diffs HTML. Particularmente útil para exploradores de blockchain, páginas de status de exchanges e qualquer site comercial com API de backend.
- Encadeamento de notificações via webhooks: conecte uma notificação webhook genérica ao n8n ou sua própria automação. Quando uma watch dispara, acione ações downstream: snapshot da página no ArchiveBox para registro permanente, consulta de domínio no VirusTotal, envio de resumo estruturado para suas anotações de caso. Isso transforma o Changedetection de um sistema de notificação em um pipeline OSINT orientado a eventos.




Manutenção e backup
A manutenção é mínima após a configuração inicial, mas alguns pontos merecem atenção:
- Atualização de contêineres: execute periodicamente
docker compose pull && docker compose up -d. A cada duas ou três semanas é suficiente. O projeto evolui em ritmo constante e atualizações raramente quebram watches existentes.
- Higiene de watches: revise periodicamente watches antigos. Alvos são arquivados, golpes desmontam, investigações terminam. Watches obsoletos ainda consomem slots de fetch e adicionam ruído ao dashboard.
- Memória do container do navegador: a memória do container Playwright tende a aumentar com uso intenso. Um
docker compose restart playwright-chromesemanal via cron reinicia o estado. Não é estritamente necessário, mas mantém o ambiente limpo.
- Backups: seu volume de dados do Changedetection (
changedetection-data) contém todo o histórico de watches, configurações e configurações de notificação. Vale a pena fazer snapshot para armazenamento fora do host periodicamente. O ponto de montagem dentro do container é/datastore, e todo o conteúdo é útil para backup.
- Verificação de logs:
docker compose logs --tail 100 changedetectionedocker compose logs --tail 100 playwright-chromepara diagnosticar falhas de fetch, erros de Playwright ou problemas de conectividade.
- Diagnóstico de problemas comuns:
– *Watch não atualiza*: verifique se o fetcher está correto (Playwright para sites JS), se o seletor CSS ainda existe na página, e se o site não está bloqueando o IP.
– *Screenshots falham*: confirme que o container playwright-chrome está saudável (docker compose ps) e que a memória não está esgotada.
– *Notificações não chegam*: valide a URL Apprise no dashboard (teste ntfy, Telegram, Discord) e verifique logs do Changedetection para erros de entrega.
– *TLS/SSL*: se o Caddy não renovar o certificado, verifique se a porta 80 está acessível para o desafio HTTP-01 do Let’s Encrypt, ou use certificado Cloudflare Origin com tls no Caddyfile (validade de 15 anos).
Limitações e boas práticas
Apesar de suas vantagens, algumas limitações devem ser observadas:
- Dependência da disponibilidade do site: se o alvo estiver fora do ar, nenhuma alteração será detectada até que ele volte online.
- Falsos positivos: alterações insignificantes como timestamps, contadores de acesso ou anúncios rotativos podem disparar alertas. Use seletores CSS para focar nas partes relevantes da página e considere ignorar elementos conhecidamente voláteis.
- Consumo de armazenamento: cada captura de tela e histórico de diff ocupa espaço. Em longos períodos, o diretório de storage pode crescer significativamente; implemente rotina de limpeza ou arquivamento.
- Complexidade de browser steps: configurar sequências de clique e preenchimento para conteúdo por trás de login ou formulários exige teste cuidadoso; mantenha documentação das etapas.
Boas práticas de uso seguro:
- Defina intervalos adequados ao tipo de alvo (ex: 1h para páginas estáticas, 15min para feeds ativos).
- Limite o número de watches simultâneas para evitar sobrecarga de recursos.
- Sempre proteja o dashboard com autenticação forte antes de expor em domínio público.
- Mantenha o Changedetection e o Docker atualizados para corrigir vulnerabilidades.
- Revise periodicamente as notificações para ajustar seletores e reduzir ruído.
- Nunca coloque credenciais reais nos campos de configuração; use variáveis de ambiente ou secrets externos se precisar autenticar dentro das browser steps.
Fontes e referências
Links oficiais e relevantes consultados na produção deste artigo:
- Documentação oficial Changedetection.io: https://docs.changedetection.io/
- Repositório oficial (GitHub): https://github.com/dgtlmoon/changedetection.io
- Documentação Caddy (proxy reverso): https://caddyserver.com/docs/
- Documentação Apprise (notificações): https://github.com/caronc/apprise
- Imagem sockpuppetbrowser (Playwright): https://github.com/dgtlmoon/sockpuppetbrowser
- Docker Compose reference: https://docs.docker.com/compose/
Conclusão
Changedetection.io traz o sinal de alteração para investigações OSINT de forma escalável, permitindo monitorar centenas de URLs com pouco esforço. Quando configurado com autenticação adequada e uso responsável, torna-se uma peça fundamental da caixa de ferramentas do investigador, complementando outras abordagens ao invés de substituí-las completamente.
Com configuração adequada, manutenção regular e compreensão de suas limitações, o Changedetection.io pode servir como uma base sólida para operações de monitoramento de mudanças em investigações OSINT.