Hvad én række betyder i et VPN-datasæt, og hvorfor det er vigtigt
Udbyder, endepunkt, udgangsadresse og tilgængelighed er fire forskellige rækker. Vælg enheden, bevar proveniens, offentliggør hvad datasættet ikke dækker.
Spørg hvad én række i et VPN-datasæt repræsenterer, og svarene formerer sig: en virksomhed, en lytter, en offentlig udgangsadresse, et tilgængelighedsresultat. Hver er legitim, og at blande dem uden etiketter giver en sum, der lyder præcis og betyder intet. Enheden er en designbeslutning, og den skal træffes før den første optælling. Det meste af forvirringen i offentliggjort VPN-statistik kommer af at springe dette trin over.
En række er en påstand, ikke en ting
Hver række hævder noget om verden, og påstanden har et subjekt. Det er navngivningen af subjektet, der gør rækken sammenlignelig med en anden række.
En udbyderrække hævder, at en organisation tilbyder en tjeneste. En endepunktrække hævder, at en bestemt adresse og port taler en protokol. En udgangsrække hævder, at trafik forlod en adresse på et tidspunkt. En målerække hævder, at en sonde fra et sted observerede et resultat. Fire subjekter, fire skemaer, og et datasæt, der blander dem uden en diskriminator, kan slet ikke aggregeres.
Diskriminatoren er den billigste del af skemaet og den, der oftest udelades.
Vælg enheden før optællingen
Vælg den enhed, der besvarer det spørgsmål, du faktisk har. At tælle endepunkter besvarer, hvor mange lyttere der blev annonceret; at tælle udbydere besvarer, hvor mange organisationer der var involveret; at tælle udgangsadresser besvarer, hvor mange tilsyneladende oprindelser der findes.
Disse tal er ikke udskiftelige, og forskellene er store. Én udbyder kan drive tusinder af adresser, og én adresse kan huse flere protokol lyttere til forskellige tjenester. Et antal adresser er derfor hverken en øvre eller nedre grænse for et antal udbydere. Angiv enheden i samme sætning som tallet, hver gang. Et tal uden enhed er en mening med et decimalpunktum.
| Unit | The row asserts | What a count of it means |
|---|---|---|
| Provider | An organisation offers a service | How many operators appear |
| Endpoint | An address and port speak a protocol | How many listeners were advertised |
| Exit address | Traffic left from an address | How many apparent origins exist |
| Observation | A probe saw a result | How many tests ran, not how many servers |
En offentlig mappe leverer annoncerede deltagere i den tjeneste. Den er ikke en fortegnelse over enhver kommerciel, organisatorisk og privat udrulning i verden, og at behandle den som det oppuster enhver afledt statistik.
Proveniens hører til i skemaet
En række uden proveniens kan ikke efterprøves. Registrer kildeposten, indsamlingstiden med dens tidszone, observationsmetoden og en sidst-set-status.
Hold annoncerede attributter adskilt fra observerede, fordi de vejer forskelligt. En mappes landemærke er en annonceret påstand og ikke bevis på en servers fysiske placering. En IP-tildeling identificerer en netværksblok, ikke hver lejer indeni og ikke den nuværende operatør af en applikation ovenpå. To kolonner og en note slår altid ét sammenflettet felt.
{"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"}
En enkelt JSON-linje gør skemaet konkret og er lettere at diskutere end et afsnit beskrivelse. Bemærk, at tidsstemplet bærer en tidszone, og at metoden er navngivet snarere end underforstået.
Fjern dubletter efter spørgsmålet
Dubletter afhænger af enheden. Den samme adresse med to protokol lyttere er ét endepunktpar og to tjenester, og at slå den sammen i det stille ændrer antallet.
Fjern dubletter på det niveau, spørgsmålet handler om, og registrer hvor mange rå rækker der faldt sammen i hver bibeholdt række. Det forhold er i sig selv et fund, fordi en stor sammensmeltning normalt betyder, at kilden offentliggør poster pr. lytter. En udbyder med mange adresser giver det modsatte mønster. Begge er korrekte, og kun det registrerede forhold lader læseren skelne dem.
Behold så de rå rækker. En tabel uden dubletter er en visning, og evnen til at genopbygge den fra råinputtet er det, der gør resultatet reproducerbart.
Offentliggør dækningserklæringen
Angiv, hvordan kilder blev valgt, hvilke regioner eller netværk de dækker, og hvad der bevidst mangler.
Private virksomhedsendepunkter og ikke-annoncerede udrulninger optræder aldrig på offentlige lister, så fravær i en mappe beviser kun, at mappen ikke listede det. Kontrollér kildens vilkår og videristributionstilladelser før offentliggørelse, og fjern felter, der aldrig var nødvendige. En endepunktundersøgelse kræver sjældent abonnentidentiteter, legitimationsoplysninger eller browserhistorik. At offentliggøre dem ville være et andet projekt med en anden begrundelse.
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
Disse tre kommandoer giver et rækkeantal, en enhedsopdeling og en skitse af dækningen efter annonceret land. Behold daterede snapshots, når populationen ændrer sig, og skel mellem forældet og bekræftet fravær. Et afgrænset datasæt med en klar population slår en ubegrundet påstand om at indeholde enhver VPN på internettet.