Sobre o projeto

O rastreamento de visitantes é um sistema leve baseado em Cloudflare Pages + Workers + D1 + GitHub. A ideia central é registrar acessos por meio de um pixel de rastreamento disfarçado de imagem. A imagem e o front-end ficam hospedados na borda da Cloudflare, os logs são armazenados permanentemente no D1 e as notificações podem ser enviadas em tempo real via Telegram. As principais funções incluem upload e incorporação do pixel de rastreamento; registro detalhado de logs com horário, IP, localização, operadora, dispositivo, sistema, navegador e origem; escopo flexível de estatísticas com suporte a hoje, 7 dias, 30 dias, 3 meses e 1 ano, além de filtro por identificador; notificações em tempo real via Telegram com impressão digital do dispositivo e botões que apontam automaticamente para o domínio atual; gerenciamento de imagens na interface web com upload para o repositório Git e acionamento automático do deploy no Pages; ponto de rastreamento integrado _panel para monitorar o acesso ao painel de administração; proteção contra crawlers e testes de velocidade por meio de lista negra de User-Agent e intervalo de resfriamento por bloco /24; e armazenamento puramente no D1 para evitar problemas de cota de gravação. Na arquitetura, a solicitação do visitante GET /nezha.png é processada pelo Cloudflare Worker. O front-end lê os recursos estáticos do Git e retorna a imagem; o back-end grava no D1, via ctx.waitUntil, os logs detalhados e o resumo diário, além de enviar a notificação pelo Telegram. O administrador faz upload de imagens para o Worker pelo painel de administração; o Worker grava no repositório Git e aciona o Deploy Hook para reconstruir o Pages, e depois consulta o D1 para retornar estatísticas e logs. Os componentes incluem Cloudflare Pages para hospedar index.html e _worker.js, Cloudflare D1 para armazenar logs de acesso, resumo diário e índice de imagens, Cloudflare Workers para processar solicitações de API e de imagens, repositório GitHub para armazenar os binários das imagens em public/pic e a API do Bot do Telegram para enviar notificações. A implantação exige conta na Cloudflare, conta no GitHub, conta no Telegram e, opcionalmente, um domínio. É necessário preparar 7 variáveis de ambiente — PASSWORD, GITHUB_TOKEN, REPO_NAME, BRANCH, CF_DEPLOY_HOOK_URL, TG_ID, TG_TOKEN — e 1 binding do D1 chamado DB. O fluxo é: criar o repositório a partir do modelo, criar o banco de dados D1, criar o Bot do Telegram e obter token e chat_id, criar um PAT fino do GitHub, criar o projeto no Pages e desativar o deploy automático do Git para evitar desperdício de builds, criar o Deploy Hook, vincular o domínio personalizado, configurar uniformemente as variáveis de ambiente e o binding e executar manualmente o Retry deployment para concluir a primeira implantação. No primeiro login no painel de administração, as três tabelas visits, daily_summary e img_index são criadas automaticamente. No uso, adicione um identificador e faça upload da imagem no gerenciamento de imagens. Após salvar e implantar, você obtém o link de rastreamento, por exemplo https://seu-dominio/nezha.png, que pode ser incorporado em HTML ou e-mails para contabilizar acessos. A página de visão geral fornece resumos de hoje, ontem, últimos 7 dias e último ano, além de gráficos de curva. A página de logs detalhados permite filtrar e paginar por data, identificador e IP. O próprio acesso ao painel de administração é registrado pelo ponto de rastreamento _panel: acessos sem login disparam o registro, enquanto atualizações já autenticadas não disparam. Observações: a cota gratuita do D1 é de 5 GB de armazenamento, 100 mil gravações por dia e 5 milhões de leituras por dia. Recomenda-se manter o repositório GitHub abaixo de 1 GB e cada imagem abaixo de 8 MB. São suportados PNG, JPG, GIF, WebP e SVG. O identificador deve conter letras, números, sublinhados e hífens, com comprimento de 1 a 64; _panel é um identificador reservado. As notificações do Telegram para o mesmo IP são enviadas apenas uma vez a cada 60 segundos, e blocos /24 compartilham o mesmo resfriamento. User-Agents de crawlers e Referers de sites de teste de velocidade não geram notificações. Com o deploy automático do Git desativado, o upload de imagens precisa ser feito pelo painel de administração com salvar e implantar para acionar a atualização. Alterações nas variáveis de ambiente exigem nova implantação. Em segurança, recomenda-se usar senha forte, minimizar as permissões do PAT e não expor a URL do Deploy Hook. Os dados podem ser exportados para backup com wrangler d1 export. Em configurações avançadas, é possível modificar STATS_DAYS para o período de retenção e PUSH_COOLDOWN_SEC para o tempo de resfriamento no _worker.js, além de personalizar as expressões regulares da lista negra de User-Agent e Referer.