Como verificar se uma ferramenta online envia seu arquivo

Abra as ferramentas de desenvolvedor do navegador com F12, mude para a aba Network (Rede) e limpe-a. Depois solte seu arquivo na ferramenta e inicie o processo. Observe as requisições que aparecem: se nenhuma delas carrega seu arquivo, e o tamanho de cada requisição é muito menor que o do arquivo, nada foi enviado.

Mais dois testes confirmam. Corte sua conexão depois que a ferramenta carregou uma vez e tente de novo: uma ferramenta local continua funcionando, uma baseada em servidor não. Depois veja com quais domínios a página conversa, porque um upload de arquivo é uma requisição a um endpoint específico e seu tamanho é proporcional ao seu documento. As seções abaixo dão os passos exatos, e as requisições que parecem alarmantes mas são apenas código ou rastreamento de página. Nenhuma dessas verificações precisa de qualquer software além do navegador que você já tem aberto.

Uma afirmação de privacidade em uma página de ferramenta vale exatamente o tanto quanto sua capacidade de verificá-la. A boa notícia é que a verificação é curta, não precisa de software especial e funciona em qualquer navegador. Você não está procurando uma promessa. Está procurando uma coisa específica: uma requisição que carregue o seu arquivo.

Compressor de imagem

Um bom objeto para o teste: carregue uma imagem, observe o painel, depois desconecte e comprima outra. Nada é enviado em nenhum dos casos.

Abra uma ferramenta local

Teste um: observe os bytes no painel de rede

Este é o método principal, e leva cerca de um minuto. Você está verificando se alguma requisição carrega um payload com aproximadamente o tamanho do seu arquivo.

  1. Abra as ferramentas de desenvolvedor. Pressione F12, ou use o menu do navegador e escolha Ferramentas de desenvolvedor. Mude para a aba Network (Rede).
  2. Limpe a lista. Clique no botão de limpar, geralmente um círculo com uma linha atravessada. Isso remove os recursos da página para que restem apenas as requisições da sua ação com o arquivo.
  3. Ative Preserve log se você quiser um panorama completo. Ele mantém as requisições visíveis durante um recarregamento de página, o que ajuda quando uma ferramenta navega ou atualiza no meio do processo.
  4. Solte seu arquivo e rode a ferramenta. Use um arquivo com um tamanho distinto, de preferência alguns megabytes, para que uma requisição correspondente seja óbvia.
  5. Observe a coluna de tamanho. Toda requisição é listada com seu tamanho transferido. Leia a maior. Se a maior requisição for um script, uma fonte ou uma pequena chamada de rastreamento, o arquivo nunca se moveu.
  6. Clique na maior requisição e leia seus detalhes. As abas Headers, Payload e Size dizem o que foi enviado. Um upload de verdade aparece como uma requisição cujo tamanho é aproximadamente o tamanho do seu arquivo.

O que você procura tem uma assinatura específica. Um upload geralmente é uma requisição POST para um endpoint como /upload ou /convert, e seu tamanho é próximo ao do arquivo. Se a requisição for um formulário, o content type provavelmente é multipart/form-data. Se o arquivo for enviado como bytes brutos ou base64, o content type é o próprio tipo do arquivo, ou o payload é um corpo JSON contendo os dados. Nos três casos o tamanho o denuncia, e é por isso que a coluna de tamanho é a primeira a ler.

Desbloquear PDF

Um caso sensível que vale a pena testar. O PDF e a senha são ambos lidos dentro da aba, então o painel não mostra nenhuma requisição carregando qualquer um dos dois.

Abrir a ferramenta de desbloqueio

Teste dois: desconecte e continue trabalhando

O teste offline responde a uma pergunta diferente, e é mais difícil de falsear. Se o processamento ainda é concluído sem nenhuma rede, então nenhum servidor pode estar envolvido no trabalho.

  1. Carregue a ferramenta e processe um arquivo primeiro. Isso armazena em cache o mecanismo de que precisa, o que é um download normal de código e não o seu arquivo.
  2. Desconecte-se da rede. Desligue o Wi-Fi, desconecte o cabo, ou use o menu de limitação de rede nas ferramentas de desenvolvedor e defina como Offline.
  3. Processe outro arquivo sem recarregar a página. Não recarregue, porque um recarregamento precisa buscar a própria página e vai falhar por motivos que não têm nada a ver com upload.
  4. Observe o resultado. Uma ferramenta local produz sua saída. Uma ferramenta baseada em servidor falha, geralmente com um erro de rede em sua linha de status.

A ordem desses passos é todo o truque. Se você desconectar primeiro e recarregar, está testando a busca da página, não o processamento. E se você nunca rodou a ferramenta antes de ficar offline, uma falha pode significar apenas que o mecanismo ainda não estava em cache. Rode uma tarefa online, corte a conexão, rode uma segunda tarefa.

Teste três: olhe os domínios e a política de segurança

Para onde uma página envia dados é tão revelador quanto quanto ela envia. No painel de rede você pode ordenar ou filtrar por domínio, e os domínios que uma ferramenta local toca são entediantes: seu próprio host, um host de fontes ou scripts e, possivelmente, um provedor de analytics. Um conversor que roda em um servidor precisa alcançar seu próprio endpoint de upload, e esse endpoint geralmente aparece no mesmo domínio do site.

Um sinal mais rigoroso é o cabeçalho Content-Security-Policy, que você pode ler na aba Headers da requisição do documento principal. Uma política com uma diretiva connect-src restrita nomeia as origens exatas que a página tem permissão de chamar, o que limita para onde um arquivo poderia ir mesmo em teoria. Sua ausência não prova nada, porque muitos sites simplesmente não definem uma. Combine-a com a evidência de rede em vez de tratá-la como um teste isolado.

O que parece suspeito mas não é

A maioria dos falsos alarmes vem de quatro tipos de requisição. Conhecê-los evita que você interprete um resultado limpo como vazamento.

  • Analytics e gerenciadores de tags. Uma visualização de página é reportada a um serviço de medição, e é por isso que você vê um script de um domínio de analytics. Ele carrega o fato de que uma página foi carregada, não o conteúdo do seu documento. Este site carrega o Google Tag Manager, então você verá exatamente essa requisição.
  • Downloads do mecanismo no primeiro carregamento. Uma ferramenta de navegador busca seu mecanismo de processamento na primeira vez que você a usa. Essa requisição é grande, o que a faz parecer um upload, mas é a mesma para todo visitante e não muda com o seu arquivo. O tamanho permanece constante enquanto sua entrada muda.
  • Fontes e ícones. Tipografias e sprites de ícones são arquivos separados e aparecem como requisições próprias. Geralmente são algumas centenas de kilobytes no máximo.
  • Cabeçalhos de isolamento de origem cruzada. Algumas ferramentas WebAssembly exigem cabeçalhos COOP e COEP para trabalho multithread. Vê-los é um sinal de que um mecanismo de verdade roda na página, não um sinal de que seu arquivo está se movendo. As ferramentas deste site usam um mecanismo de thread única e não precisam deles.

A linha divisória é simples. Código e recursos de página têm tamanhos que permanecem os mesmos não importa o que você envie. Seu arquivo tem um tamanho que aparece na rede apenas se ele for realmente enviado. Compare o total de bytes transferidos com o tamanho da sua entrada, e a resposta não é ambígua.

Onde este método tem limites

Os testes acima são fortes, e não são absolutos. Ser claro sobre as lacunas é o que torna o resto da página confiável.

  • O fatiamento esconde linhas individuais, não o total. Uma ferramenta poderia dividir um arquivo em muitas requisições pequenas. Somar o total de bytes transferidos derrota isso, e é por isso que a comparação de tamanho importa mais que qualquer linha isolada.
  • Um service worker pode mascarar uma falha offline. Se um site armazena em cache suas próprias páginas, um recarregamento offline pode ainda funcionar. O teste offline só é confiável quando você evita recarregar e confia em uma tarefa concluída.
  • O tráfego pode ser criptografado e opaco. Sobre HTTPS você não consegue ler o conteúdo de uma requisição, apenas seu tamanho e destino. O tamanho é suficiente para detectar um upload de arquivo, mas não vai dizer o que uma pequena requisição contém.
  • Local não significa automaticamente seguro. Processar na aba descarta um upload. Não diz nada sobre outros riscos, como uma página que lê mais do seu disco em uma etapa posterior. Verifique a afirmação específica feita em vez de presumir bom comportamento em tudo.
  • Algumas ferramentas realmente precisam de um servidor. Modelos grandes para remoção de fundo ou melhoramento generativo não cabem em um orçamento de download do navegador, e essas ferramentas dizem isso. O padrão honesto é uma página que informa quais recursos enviam e quais não enviam, como a seção Cloud AI faz aqui.

Se você quer a explicação por trás de por que uma aba consegue fazer esse trabalho, o guia complementar sobre como funcionam as ferramentas de arquivos no navegador percorre as camadas de mecanismo, Canvas e File API. Se você só quer uma ferramenta para testar, qualquer página no diretório de ferramentas funciona, e Combinar PDF é um bom segundo objeto porque os tamanhos de entrada e saída são fáceis de comparar.

Perguntas frequentes

Abra as ferramentas de desenvolvedor do navegador com F12, mude para a aba Network (Rede) e limpe-a. Depois solte seu arquivo na ferramenta e inicie o processo. Observe as requisições que aparecem: se nenhuma delas carrega seu arquivo, e o tamanho de cada requisição é muito menor que o do arquivo, nada foi enviado. O painel lista toda requisição que a página faz, incluindo as que ficam nos bastidores. Clique em uma requisição para abri-la e olhe as abas Headers, Payload e Size. Um upload de arquivo aparece como uma requisição cujo tamanho é aproximadamente o tamanho do seu arquivo, geralmente com um content type multipart/form-data ou um tipo de imagem ou documento. Se toda requisição for um script, uma folha de estilo, uma fonte ou um pequeno beacon de analytics, o arquivo permaneceu na sua máquina. Faça o teste em um arquivo com um tamanho distinto, porque uma requisição de algumas centenas de kilobytes é muito mais fácil de detectar que um arquivo de poucos bytes.
Ele prova que o caminho de processamento não depende de um servidor. Carregue a ferramenta e processe um arquivo para que o mecanismo fique em cache, depois desconecte-se da rede, ou desligue o Wi-Fi, e processe outro arquivo sem recarregar a página. Se ainda funcionar, seu arquivo está sendo processado localmente. A condição importa, porque uma página que nunca rodou antes ainda precisa do seu código. Carregue o mecanismo primeiro, depois fique offline, e então faça o trabalho. Se você recarregar enquanto offline e vir uma página de erro do navegador, isso é a busca da página falhando, não a ferramenta enviando algo. Da mesma forma, um service worker pode servir a página a partir do cache, então uma página offline que carrega não é prova por si só de que o processamento é local; o sinal real é uma tarefa concluída com a rede desligada. Uma ferramenta de navegador passa nesse teste. Uma ferramenta baseada em servidor não consegue, porque não há servidor para alcançar.
É possível em teoria e raro na prática, e a coluna de tamanho é como você o detecta. Some todas as requisições que a página faz enquanto um arquivo é processado e compare esse total com o tamanho do seu arquivo. Se a soma for aproximadamente o tamanho da entrada mais o tamanho da saída, os bytes saíram da máquina. O fatiamento é uma técnica real, e uma ferramenta que dividisse um arquivo em muitas requisições POST pequenas seria difícil de detectar linha a linha, e é por isso que o total importa. O painel de rede mostra o tamanho transferido de cada requisição e um total acumulado para a página. Uma ferramenta local move zero bytes de arquivo, então seu total fica na faixa do código, das fontes e do analytics que ela carregou. Uma ferramenta que envia um documento de 4 MB precisa mover pelo menos 4 MB para cima. Esse padrão é visível independentemente de em quantas requisições a transferência seja dividida.
Porque uma página carrega mais que a ferramenta. Analytics, fontes e o mecanismo de processamento são todos buscados pela rede, e essas requisições aparecem no painel junto com todo o resto. Elas carregam código e dados da página, não o arquivo que você está processando. A pista é o tamanho e o destino. Uma fonte geralmente tem menos de algumas centenas de kilobytes e vem de um host de fontes. Um script de analytics tem algumas dezenas de kilobytes e reporta uma visualização de página a um domínio de medição, o que é uma descrição da sua visita e não do seu documento. O mecanismo é o grande, e é o mesmo download para todo visitante: cerca de 30 MB para o mecanismo de vídeo, cerca de 6.7 MB para o de OCR e cerca de 1.3 MB para o de PDF. Nenhum desses números muda com o tamanho do seu arquivo, e é exatamente isso que separa código de conteúdo. A única requisição que seria proporcional ao seu arquivo é a que você está procurando.
Não de forma confiável, e isso não importa. O painel registra o tráfego abaixo da página, e não há forma confiável de um script saber se as ferramentas de desenvolvedor estão abertas. Mesmo que um site conseguisse detectar, esconder um upload é um ato muito mais grave do que ser visto fazendo um. Vale a pena saber por que o teste é robusto. O navegador encaminha toda chamada de rede pela mesma maquinaria, e as ferramentas de desenvolvedor observam essa maquinaria diretamente. Uma página poderia concebivelmente mudar seu comportamento quando suspeita de inspeção, mas isso não é uma transferência escondida, é uma transferência diferente, e é detectável comparando uma execução com o painel aberto com uma execução com ele fechado. A conclusão mais segura é mais simples: uma ferramenta que afirma processamento local não tem nada a esconder do painel, então deve se comportar de forma idêntica com o painel aberto ou não. Se o comportamento de um site muda quando você olha, trate isso como sua resposta.

Faça o teste em uma ferramenta de verdade

Grátis, privado e ilimitado. Não precisa de conta.

Abrir o Compressor de imagem