Pergunte o que uma linha de um conjunto de dados de VPN representa, e as respostas multiplicam-se: uma empresa, um ouvinte, um endereço de saída público, um resultado de acessibilidade. Todas são legítimas, e misturá-las sem rótulos produz um total que soa preciso e não significa nada. A unidade é uma decisão de projeto, e tem de ser tomada antes da primeira contagem. A maior parte da confusão nas estatísticas de VPN publicadas vem de saltar esse passo.

Uma linha é uma afirmação, não uma coisa

Cada linha afirma algo sobre o mundo, e a afirmação tem um sujeito. É nomear o sujeito que torna a linha comparável a outra linha.

Uma linha de fornecedor afirma que uma organização oferece um serviço. Uma linha de endpoint afirma que um determinado endereço e porta falam um protocolo. Uma linha de saída afirma que o tráfego saiu de um endereço num dado momento. Uma linha de medição afirma que uma sonda de algum lugar observou um resultado. Quatro sujeitos, quatro esquemas, e um conjunto de dados que os mistura sem um discriminador não pode ser agregado de forma alguma.

O discriminador é a parte mais barata do esquema e a que mais frequentemente se omite.

Escolha a unidade antes da contagem

Escolha a unidade que responde à pergunta que realmente tem. Contar endpoints responde a quantos ouvintes foram anunciados; contar fornecedores responde a quantas organizações estiveram envolvidas; contar endereços de saída responde a quantas origens aparentes existem.

Esses números não são intermutáveis, e as diferenças são grandes. Um fornecedor pode operar milhares de endereços, e um endereço pode alojar vários ouvintes de protocolo para serviços diferentes. Uma contagem de endereços não é, portanto, nem limite superior nem inferior de uma contagem de fornecedores. Indique a unidade na mesma frase que o número, todas as vezes. Um número sem unidade é uma opinião com uma vírgula decimal.

UnitThe row assertsWhat a count of it means
ProviderAn organisation offers a serviceHow many operators appear
EndpointAn address and port speak a protocolHow many listeners were advertised
Exit addressTraffic left from an addressHow many apparent origins exist
ObservationA probe saw a resultHow many tests ran, not how many servers

Um diretório público fornece os participantes anunciados nesse serviço. Não é um inventário de todas as implementações comerciais, organizacionais e privadas do mundo, e tratá-lo como tal inflaciona todas as estatísticas derivadas.

A proveniência pertence ao esquema

Uma linha sem proveniência não pode ser reverificada. Registe o registo de origem, o momento de recolha com o seu fuso horário, o método de observação e um estado de última visualização.

Mantenha os atributos anunciados separados dos observados, porque têm peso diferente. A etiqueta de país de um diretório é uma afirmação anunciada, e não é prova da localização física de um servidor. Uma atribuição de IP identifica um bloco de rede, não cada inquilino dentro dele, nem o operador atual de uma aplicação por cima. Duas colunas e uma nota vencem um campo fundido todas as vezes.

{"endpoint": "203.0.113.10:1194/udp", "unit": "endpoint", "advertised_country": "NL",
 "observed_at": "2026-11-03T02:15:00Z", "method": "udp_probe", "last_seen": "2026-11-03"}

Uma única linha JSON torna o esquema concreto e é mais fácil de discutir do que um parágrafo de descrição. Repare que o carimbo temporal transporta um fuso horário e que o método é nomeado em vez de implícito.

Deduplique conforme a pergunta

Os duplicados dependem da unidade. O mesmo endereço com dois ouvintes de protocolo é um par de endpoints e dois serviços, e colapsá-lo em silêncio altera a contagem.

Deduplique ao nível sobre o qual a pergunta incide, e registe quantas linhas em bruto colapsaram em cada linha mantida. Essa proporção é em si um achado, porque um colapso grande costuma significar que a fonte publica registos por ouvinte. Um fornecedor que opera muitos endereços produz o padrão oposto. Ambos estão corretos, e só a proporção registada permite ao leitor distingui-los.

Depois guarde as linhas em bruto. Uma tabela sem duplicados é uma vista, e a capacidade de a reconstruir a partir da entrada em bruto é o que torna o resultado reproduzível.

Publique a declaração de cobertura

Indique como as fontes foram selecionadas, que regiões ou redes cobrem e o que está deliberadamente ausente.

Endpoints empresariais privados e implementações não anunciadas nunca aparecem em listas públicas, por isso a ausência num diretório prova apenas que o diretório não o listou. Verifique os termos da fonte e as permissões de redistribuição antes de publicar, e remova campos que nunca foram necessários. Um estudo de endpoints raramente exige identidades de assinantes, credenciais ou históricos de navegação. Publicá-los seria outro projeto com outra justificação.

wc -l vpn-endpoints.jsonl
jq -r '.unit' vpn-endpoints.jsonl | sort | uniq -c
jq -r '.advertised_country' vpn-endpoints.jsonl | sort | uniq -c | sort -rn | head

Esses três comandos dão uma contagem de linhas, uma repartição por unidade e um esboço de cobertura por país anunciado. Guarde instantâneos datados quando a população muda, e distinga o obsoleto da ausência confirmada. Um conjunto de dados delimitado com uma população clara supera uma afirmação não sustentada de conter todas as VPN da internet.

Artigos relacionados