Sim, um site consegue ver quando você troca de aba, e também quando você copia ou cola. Não, ele não consegue ver um print, uma gravação de tela nem o que está nas suas outras abas. As duas metades dessa resposta são verdadeiras, e é por isso que todo tópico de fórum sobre o assunto tem uma resposta confiante no topo, seguida de outra igualmente confiante dizendo o contrário.
O widget desta página é um detector de troca de aba funcionando de verdade, e é a forma mais rápida de resolver a discussão no seu próprio navegador. Troque para outra aba, destaque e copie uma frase, aperte Ctrl+P e cancele, e depois leia o que ele registrou.
Um site percebe quando você troca de aba?
Sim. Quando uma página é ocultada ou exibida de novo, o navegador dispara um evento visibilitychange e alterna document.visibilityState entre visible e hidden. Um evento blur separado dispara na janela quando ela perde o foco. Os dois vêm com um timestamp, então a página sabe que você saiu e por quanto tempo. Scripts de analytics se apoiam nisso: uma aba oculta pode nunca mais voltar, então esse é o momento em que eles enviam o que coletaram com navigator.sendBeacon. Plataformas de prova usam os mesmos sinais. Nos Classic Quizzes com a auditoria do log do quiz ativada, o Canvas registra quando a página do quiz de um aluno perde e recupera o foco.
O que a página não recebe é um destino. Saia da aba no widget e volte, e o log mostra por quanto tempo você ficou fora e nada além disso. Os dois eventos também medem coisas diferentes:
- Trocar para outra abaAba oculta: informado Foco perdido: informado
- Minimizar a janelaAba oculta: informado Foco perdido: informado
- Clicar em outro app com o navegador ainda na telaAba oculta: silencioso Foco perdido: informado
- Pegar o celularAba oculta: silencioso Foco perdido: silencioso
Clique em uma janela de chat com o navegador ainda na tela e só o blur dispara, porque a aba continua visível. Troque de aba e os dois disparam. É assim que um site distingue uma aba oculta de uma janela que apenas perdeu o foco. O movimento do cursor é um evento à parte: o mouseleave dispara quando o ponteiro sai da janela, e é o que os popups de intenção de saída usam para pegar você a caminho da barra de abas.
Bots tendem a mostrar o padrão oposto. Navegadores automatizados muitas vezes nunca recebem eventos de foco, ou reportam uma página que está sempre em foco, e o monitor de comportamento ao vivo da nossa página inicial acompanha esse padrão. É o tipo de sinal que a pontuação comportamental pode pesar, a mesma pontuação por trás dos CAPTCHAs que não param de aparecer para você.
Um site consegue ver as suas outras abas?
Só as dele. Uma página não consegue listar suas abas, ler os títulos ou URLs delas, nem olhar dentro delas. A política de mesma origem isola os sites uns dos outros, e nenhuma API web enumera abas. O que uma página consegue é conversar com outras abas da mesma origem no mesmo perfil de navegador, por meio de um BroadcastChannel ou de eventos de armazenamento. É assim que um app percebe que você o abriu duas vezes e pergunta qual das duas manter. Abra esta página em uma segunda aba e a linha “Outras abas deste site” a conta.
A única coisa que uma página fica sabendo sobre sua navegação anterior é de onde você veio. Se você seguiu um link, document.referrer informa o site em que o link estava, e geralmente só o nome do site, não o endereço completo.
Um site vê o que você copia e cola?
Sim, com limites. Os eventos copy e cut disparam no documento quando você aperta Ctrl+C ou usa o menu, e um handler consegue ler exatamente o que estava selecionado. Ele também pode substituir o que foi copiado por outro texto, e é assim que alguns sites acrescentam “Leia mais em…” a tudo o que você copia, uma gentileza que ninguém pediu. O selectionchange dispara enquanto você arrasta o cursor sobre o texto, então a página sabe o que você destacou antes mesmo de você copiar qualquer coisa.
Colar funciona no sentido contrário. Colar na página dispara paste e entrega o texto da área de transferência, e o beforeinput informa se o texto foi digitado ou colado, de modo que um formulário percebe que a sua resposta de 400 palavras chegou de uma vez só. O que uma página não consegue é vasculhar a sua área de transferência. navigator.clipboard.readText() exige a sua permissão e uma página que você esteja usando ativamente, então o texto que você copiou em outro app continua privado até você colá-lo em algum lugar.
É disso que as pessoas mais perguntam quando se trata de texto colado do ChatGPT. A página vê que uma colagem aconteceu e quanto texto chegou. Ela não fica sabendo de qual app ou site você copiou, embora a formatação de rich text às vezes possa dar uma pista.
Um site percebe se você tira print ou grava a tela?
Não. Nenhuma API de navegador informa um print ou uma gravação da sua tela. Quem faz isso é o sistema operacional, fora do navegador, e nada é enviado à página, seja a ferramenta o OBS, a Ferramenta de Recorte ou os botões laterais do seu celular. O que parece detecção de print é uma entre três outras coisas, e a última nem é detecção:
- Um listener de teclado esperando pela PrintScreen. O widget mostra a peculiaridade: no Windows, a página normalmente recebe só o evento de tecla solta (keyup). No Mac, o sistema engole o atalho Cmd+Shift+4, então a página nunca o vê inteiro.
- Um listener de
beforeprint. Ele dispara com Ctrl+P e em “salvar como PDF”, então a página de fato percebe esse tipo de cópia. - Captura bloqueada. Serviços de streaming costumam mostrar um retângulo preto nos prints porque o vídeo trafega por um caminho protegido. Isso impede a captura sem detectá-la. Nosso post sobre o Widevine DRM explica como esses níveis de proteção funcionam.
Nos celulares, os eventos do navegador são os mesmos: uma página é ocultada quando você troca de app ou bloqueia a tela. A ideia de que os sites sabem dos prints provavelmente vem dos apps nativos. O iOS avisa um app quando você tira um print, e o Android tem um callback oficial de captura de tela para apps desde o Android 14, o que permite a um app de chat avisar a outra pessoa. Uma página web em um navegador de celular não é avisada de nada.
O Canvas ou uma prova online percebe que você trocou de aba?
Ele vê a perda de foco, com timestamps, e mostra ao professor que você saiu. Não vê para onde você foi. Esse é todo o mecanismo de um quiz que roda como página web, e é por isso que os relatórios costumam dizer “saiu da página” e nada mais específico.
Provas com supervisão são outra classe de software, e é ali que as afirmações ficam mais fortes:
- Que você trocou de aba ou de janelaPágina web: SimExtensão: SimApp nativo: Em parte
- Quais outros sites você tem abertosPágina web: NãoExtensão: SimApp nativo: Em parte
- O que está na sua área de transferênciaPágina web: Em parteExtensão: SimApp nativo: Sim
- Que você tirou uma captura de telaPágina web: NãoExtensão: NãoApp nativo: Em parte
- Que você está gravando a telaPágina web: NãoExtensão: NãoApp nativo: Em parte
O Respondus LockDown Browser é um programa instalado, e o Proctorio é uma extensão de navegador com permissão para ler as suas abas. Nenhum dos dois está limitado ao que uma página web consegue fazer. Se uma prova parece saber mais do que uma página poderia, olhe o que ela pediu para você instalar.
Dá para impedir que um site veja isso?
Não sem quebrar a página, e o contorno mais comum deixa a sua própria marca. Ferramentas que falsificam esses eventos funcionam substituindo funções nativas como o getter de document.hidden, e uma função nativa substituída se entrega do mesmo jeito que os patches de stealth na detecção de bots. Então o conselho realista é curto:
- Parta do princípio de que a página vê eventos de foco, visibilidade e área de transferência. Não tente suprimi-los. Usuários reais produzem os mesmos eventos, e falsificá-los é um indício por si só.
- Limpe a área de transferência antes de colar em um site. Uma colagem entrega à página o texto inteiro da área de transferência, então se você copiou uma senha ou uma frase de recuperação um minuto atrás, copie algo inofensivo por cima primeiro.
- Trate uma troca de aba como indício fraco. Ela diz que você desviou o olhar, que é o que as pessoas fazem o dia inteiro. Um site de quiz ou de prova que a penaliza está chutando a intenção.
Se você gerencia várias contas, troca de janela o dia todo, e a página de cada perfil registra cada troca. Isso não tem problema. O que faz contas serem marcadas é a contradição em outros pontos, como um perfil cujo idioma, relógio e GPU não batem entre si. O Incogniton dá a cada perfil o próprio navegador coerente, para que as suas trocas de janela pareçam o ruído comum que são. Se uma plataforma permite várias contas ou não depende das regras dela, então conheça-as antes de agir.
Quer ver o que mais uma página consegue ler sem pedir? O scan completo do navegador cobre o lado da rede, do hardware e do fingerprint.