# Traffic Radar: guia completo

> O Traffic Radar mostra em tempo real quem visita a sua loja PrestaShop e separa os visitantes reais dos robôs e dos crawlers de IA. O módulo instala um painel…

- Página: <https://www.datafirefly.com/pt/documentation/dftrafficradar/>
- Idioma: pt
- Atualizado em: 2026-09-09
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/dftrafficradar/index.md), [en](https://www.datafirefly.com/en/documentation/dftrafficradar/index.md), [es](https://www.datafirefly.com/es/documentation/dftrafficradar/index.md), [de](https://www.datafirefly.com/de/documentation/dftrafficradar/index.md), [it](https://www.datafirefly.com/it/documentation/dftrafficradar/index.md), [pl](https://www.datafirefly.com/pl/documentation/dftrafficradar/index.md), [nl](https://www.datafirefly.com/nl/documentation/dftrafficradar/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

O Traffic Radar mostra em tempo real quem visita a sua loja PrestaShop e separa os visitantes reais dos robôs e dos crawlers de IA. O módulo instala um painel dedicado em **Estatísticas → Traffic Radar**: contador de utilizadores em linha instantâneo (humanos face a robôs), gráficos de evolução, mapa de calor de afluência, principais crawlers de IA, fluxo de atividade em direto, controlo dos crawlers de IA através do robots.txt e exportação CSV. Este guia cobre a instalação, as definições, o funcionamento da deteção, cada vista do painel, a privacidade e a resolução de problemas.

## Instalação

1. Descarregue o arquivo `dftrafficradar.zip` a partir da sua conta DataFirefly.
2. Back-office do PrestaShop → **Módulos** → **Carregar um módulo** → envie o ZIP.
3. Na instalação, o módulo cria as suas duas tabelas (`df_traffic_visit` e `df_traffic_online`), regista os seus hooks e acrescenta o separador **Estatísticas → Traffic Radar**.

Compatível com PrestaShop 8.0 a 9.x, em PHP 7.4 a 8.3. Sem overrides do tema, sem dependências Composer e sem CDN (o Chart.js está embutido localmente). Compatível com multiloja e multi-idioma (FR, EN, ES, DE, IT).

## Configuração

Vá a **Módulos → DataFirefly Traffic Radar → Configurar**.

- **Ativar o seguimento**: interruptor principal. Se estiver desativado, não é registada qualquer visita.
- **Registar os robôs / crawlers de IA**: desative-o para acompanhar apenas as visitas humanas.
- **Anonimizar os endereços IP (RGPD)**: os IP são sempre convertidos em hash; esta opção mascara ainda o último octeto antes do hash.
- **Retenção dos dados (dias)**: as visitas mais antigas são eliminadas automaticamente. `0` significa conservação ilimitada. Valor predefinido: 90.
- **Intervalo do heartbeat (segundos)**: frequência com que um visitante em linha envia um sinal para continuar a ser contado. Valor predefinido: 15.
- **Janela «em linha» (segundos)**: um visitante é considerado «em linha agora» se tiver sido visto dentro desta janela. Valor predefinido: 90.
- **Endereços IP excluídos**: um por linha (ou separados por vírgulas). Ideal para ignorar o seu próprio tráfego e o da sua equipa.

Acrescente os IP do seu escritório aos IP excluídos logo na instalação, para que os seus próprios testes não inflacionem as estatísticas.

## Como funciona a deteção

O Traffic Radar combina dois sinais complementares, o que lhe permite separar realmente os humanos dos crawlers.

### Deteção do lado do servidor

Em cada página vista, através do hook `actionFrontControllerSetMedia`, o módulo classifica o User-Agent a partir de uma base com mais de 40 assinaturas (IA, motores de pesquisa, SEO, redes sociais, monitorização) e atribui-lhe um tipo. É isto que permite captar os crawlers de IA, que quase nunca executam JavaScript.

### Heartbeat do lado do cliente

Um pequeno script (`tracker.js`) envia periodicamente um sinal ao controlador de front `track`, para manter os visitantes reais contados como «em linha» entre duas páginas. Como os robôs não acionam esse sinal, o contador em tempo real dos humanos mantém-se limpo.

Os pedidos AJAX e os subpedidos de módulos (adição ao carrinho, lista de desejos, avaliações e o próprio heartbeat) não são contados como páginas vistas: só as verdadeiras páginas navegáveis são registadas.

## O painel

O separador **Estatísticas → Traffic Radar** reúne todas as vistas, filtráveis por **período** (hoje, 24 h, 7, 30 ou 90 dias, ou personalizado) e por **audiência** (todo o tráfego, humanos, todos os robôs, ou um tipo específico de robô).

- **Em linha agora**: contador em tempo real separado entre humanos e robôs, atualizado ao ritmo do heartbeat.
- **KPI**: visitas, sessões únicas, visitas humanas, visitas de robôs e acessos de IA / LLM. Cada KPI mostra a sua variação (▲ / ▼ em percentagem) face ao período anterior de igual duração.
- **Visitas ao longo do tempo**: curva de humanos face a robôs, com granularidade automática (horária ou diária, consoante o período).
- **Repartição da audiência**: gráfico em anel por tipo (humano, IA, motores, SEO, redes sociais, monitorização, outros).
- **Principais crawlers de IA**: barras horizontais com os crawlers de IA mais ativos (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bytespider, entre outros).
- **Mapa de calor de afluência**: grelha de hora por dia da semana.
- **Principais páginas, referências e países**: classificações em barras.
- **Fluxo de atividade em direto**: últimas visitas com tipo, identidade, página, dispositivo e país.

O mapa de calor é lido no fuso horário da loja. Confirme que está em Europe/Lisbon em Parâmetros da loja: se o servidor estiver em UTC, o pico das 21h aparece deslocado uma hora no verão, o que basta para tirar conclusões erradas sobre a melhor hora para enviar uma campanha.

## O contador em tempo real

O bloco «Em linha agora» apoia-se na tabela `df_traffic_online`, atualizada em cada página vista e em cada heartbeat. Um visitante desaparece do contador assim que deixa de ser visto durante o período definido pela **janela «em linha»**.

Se o contador ficar a zero apesar de haver visitantes, confirme que usa a versão 1.1.1 ou superior: uma diferença de fuso horário entre o PHP e o MySQL podia falsear a janela em tempo real nas versões anteriores. A correção alinha a leitura com o relógio da escrita.

## Radar de novos crawlers

O painel «Novos crawlers detetados» destaca os robôs cuja primeira visita registada cai no período analisado. É a ferramenta ideal para detetar de imediato a chegada de um novo crawler de IA ao seu catálogo: nome do robô, tipo, data da primeira aparição e número de acessos.

## Controlo dos crawlers de IA (robots.txt)

O centro de controlo lista 25 crawlers de IA conhecidos com o respetivo token oficial de robots.txt. Em cada um, escolhe «permitido» ou «bloqueado» através de uma caixa de seleção; os crawlers de treino estão pré-assinalados como bloqueados por predefinição, enquanto os agentes que respondem a um pedido do utilizador são deixados passar.

- Os crawlers **realmente vistos** na sua loja são assinalados com um emblema.
- Duas predefinições com um clique: «Bloquear tudo» e «Definições recomendadas».
- O módulo gera em direto um bloco de `robots.txt` pronto a colar, com um botão **Copiar**.

Nesta versão, a aplicação é propositadamente manual: copia o bloco gerado para o seu ficheiro `robots.txt`. O módulo nunca escreve o ficheiro automaticamente, o que garante que as suas diretivas existentes não são substituídas por surpresa.

Bloquear os crawlers de treino e deixar passar os agentes que respondem a pedidos do utilizador é a configuração que faz sentido se quer continuar a aparecer nas respostas do ChatGPT, do Perplexity ou do Claude quando alguém procura os seus produtos, sem alimentar os conjuntos de treino. Se o seu objetivo for a visibilidade nas IA, evite o preset «Bloquear tudo».

## Widget no painel inicial

O módulo acrescenta um cartão «Traffic Radar» à coluna da direita do painel inicial do back-office (hook `dashboardZoneTwo`): contador em linha em direto (humanos e robôs) e contadores do dia (visitas, humanos, robôs, IA / LLM), com um atalho para o painel completo.

## Exportação CSV

O botão **CSV** da barra de ferramentas exporta a totalidade do tráfego correspondente aos filtros ativos (período e audiência). O ficheiro é codificado em UTF-8 com BOM, para abrir corretamente no Excel, e contém uma linha por visita: data, tipo, nome do robô, dispositivo, página, referência, país, entre outros.

## Privacidade e RGPD

- Não é guardado qualquer endereço IP em bruto: apenas hashes SHA-1 com sal.
- A anonimização opcional mascara o último octeto (IPv4) ou os últimos grupos (IPv6) antes do hash.
- A retenção é configurável, com limpeza automática probabilística: não é necessário qualquer cron.
- A lista de IP excluídos permite ignorar o seu próprio tráfego.

A limpeza dos dados antigos é acionada de forma probabilística ao longo do tráfego. Se preferir uma limpeza determinística, pode chamar a purga a partir de um cron, mas não é necessário.

Em Portugal, o endereço IP é um dado pessoal, mesmo convertido em hash com sal, desde que permita distinguir um visitante. Ative a anonimização, mantenha uma retenção proporcionada (90 dias é um valor defensável) e inscreva esta medição de audiência no seu registo de atividades de tratamento, sob supervisão da CNPD. Como o módulo não usa cookies e se limita a medir a audiência do seu próprio sítio, dispensa em regra o consentimento prévio da Lei n.º 41/2004, mas confirme esse enquadramento com o seu jurista, sobretudo se cruzar estes dados com outras fontes.

## Compatibilidade e notas técnicas

- PrestaShop 8.0 a 9.x, multiloja e multi-idioma.
- Arquitetura PSR-4 no namespace `DataFirefly/TrafficRadar` (com barra invertida como separador) e autoloader embutido, sem Composer.
- Controlador de administração legacy (`ModuleAdminController`), para compatibilidade com PS8 e PS9.
- Endpoints AJAX de back-office através do 4.º argumento de `getAdminLink()`; respostas JSON emitidas por um método dedicado.
- Hooks utilizados: `actionFrontControllerSetMedia`, `displayHeader` e `dashboardZoneTwo`.
- Duas tabelas utf8mb4 indexadas: `df_traffic_visit` (registo das visitas) e `df_traffic_online` (presença, com chave única por sessão).
- Chart.js embutido localmente, sem chamadas a CDN.

## Perguntas frequentes e resolução de problemas

**«Em linha agora» fica a zero.** Certifique-se de que está na versão 1.1.1 ou superior (correção do fuso horário entre o PHP e o MySQL). Confirme também que o seguimento está ativo e que o seu próprio IP não consta da lista de IP excluídos.

**Apareciam entradas «module-...» no fluxo.** Corrigido na 1.1.1: os pedidos AJAX e os subpedidos de módulos deixaram de ser contados como páginas vistas.

**Os crawlers de IA são mesmo detetados?** Sim. A deteção do lado do servidor capta-os mesmo sem JavaScript. As assinaturas cobrem a OpenAI, a Anthropic, o Google-Extended, a Perplexity, a ByteDance, a Meta, a Mistral, a Cohere, a Amazon, a Common Crawl e outros.

**O módulo torna a loja mais lenta?** Não. A classificação do User-Agent é uma simples comparação de cadeias em memória, e o seguimento resume-se a uma inserção e a uma atualização indexadas por página vista.

**Uma cache de página completa falseia os números?** As páginas servidas a partir de uma cache de página completa não voltam a passar pelo PHP e, por isso, não são recontadas do lado do servidor. O heartbeat em JavaScript continua, ainda assim, a manter os visitantes humanos contados como em linha.

**Compatível com o PrestaShop 1.7?** Não, apenas com PrestaShop 8.0 a 9.x.
