Pregunteu què representa una fila d’un conjunt de dades de VPN i les respostes es multipliquen: una empresa, un oient, una adreça de sortida pública, un resultat d’accessibilitat. Totes són legítimes, i barrejar-les sense etiquetes produeix un total que sona precís i no vol dir res. La unitat és una decisió de disseny i s’ha de prendre abans del primer recompte. La major part de la confusió en les estadístiques públiques de VPN ve de saltar-se aquest pas.

Una fila és una afirmació, no una cosa

Cada fila afirma alguna cosa sobre el món, i l’afirmació té un subjecte. Anomenar el subjecte és el que fa que la fila sigui comparable amb una altra fila.

Una fila de proveïdor afirma que una organització ofereix un servei. Una fila de punt final afirma que una adreça i un port concrets parlen un protocol. Una fila de sortida afirma que el trànsit va sortir d’una adreça en un moment donat. Una fila de mesura afirma que una sonda des d’algun lloc va observar un resultat. Quatre subjectes, quatre esquemes, i un conjunt de dades que els barreja sense un discriminador no es pot agregar de cap manera.

El discriminador és la part més barata de l’esquema i la que més sovint s’omet.

Trieu la unitat abans del recompte

Trieu la unitat que respon la pregunta que realment teniu. Comptar punts finals respon quants oients es van anunciar; comptar proveïdors respon quantes organitzacions hi van participar; comptar adreces de sortida respon quants orígens aparents existeixen.

Aquests números no són intercanviables, i les diferències són grans. Un proveïdor pot operar milers d’adreces, i una adreça pot allotjar diversos oients de protocol per a serveis diferents. Per tant, un recompte d’adreces no és ni un límit superior ni inferior d’un recompte de proveïdors. Digueu la unitat en la mateixa frase que el número, cada vegada. Un número sense unitat és una opinió amb un punt 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

Un directori públic proporciona els participants anunciats en aquell servei. No és un inventari de cada desplegament comercial, organitzatiu i privat del món, i tractar-lo com a tal infla totes les estadístiques derivades.

La procedència pertany a l’esquema

Una fila sense procedència no es pot tornar a comprovar. Enregistreu el registre d’origen, el moment de recollida amb la seva zona horària, el mètode d’observació i un estat d’última visualització.

Manteniu els atributs anunciats separats dels observats, perquè tenen un pes diferent. L’etiqueta de país d’un directori és una afirmació anunciada, i no és prova de la ubicació física d’un servidor. Una assignació d’IP identifica un bloc de xarxa, no cada llogater a dins seu, ni l’operador actual d’una aplicació al damunt. Dues columnes i una nota superen un camp fusionat cada vegada.

{"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"}

Una sola línia JSON fa concret l’esquema i és més fàcil de discutir que un paràgraf de descripció. Fixeu-vos que la marca de temps porta zona horària i que el mètode s’anomena en lloc d’implicar-se.

Elimineu duplicats segons la pregunta

Els duplicats depenen de la unitat. La mateixa adreça amb dos oients de protocol és una parella de punts finals i dos serveis, i col·lapsar-la en silenci canvia el recompte.

Elimineu duplicats al nivell pel qual pregunta la pregunta, i enregistreu quantes files brutes es van col·lapsar en cada fila conservada. Aquesta proporció és en si mateixa una troballa, perquè un col·lapse gran normalment significa que la font publica registres per oient. Un proveïdor que opera moltes adreces produeix el patró oposat. Tots dos són correctes, i només la proporció enregistrada permet al lector distingir-los.

Després conserveu les files brutes. Una taula sense duplicats és una vista, i la capacitat de reconstruir-la a partir de l’entrada bruta és el que fa reproduïble el resultat.

Publiqueu la declaració de cobertura

Indiqueu com es van seleccionar les fonts, quines regions o xarxes cobreixen i què hi falta deliberadament.

Els punts finals corporatius privats i els desplegaments no anunciats no apareixen mai a les llistes públiques, així que l’absència en un directori només prova que el directori no el va llistar. Reviseu els termes de la font i els permisos de redistribució abans de publicar, i elimineu els camps que mai no van caldre. Un estudi de punts finals poques vegades requereix identitats de subscriptors, credencials o historials de navegació. Publicar-los seria un altre projecte amb una altra justificació.

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

Aquestes tres ordres donen un recompte de files, un desglossament per unitat i un esbós de cobertura per país anunciat. Conserveu instantànies datades quan la població canvia, i distingiu entre obsolet i absència confirmada. Un conjunt de dades acotat amb una població clara supera una afirmació no secundada que conté cada VPN d’Internet.

Articles relacionats