Was eine Zeile in einem VPN-Datensatz bedeutet und warum das zählt
Anbieter, Endpunkt, Ausgangsadresse und Erreichbarkeit sind vier verschiedene Zeilen. Wählen Sie die Einheit, bewahren Sie Herkunftsnachweise, veröffentlichen Sie, was der Datensatz nicht abdeckt.
Fragt man, was eine Zeile eines VPN-Datensatzes darstellt, vermehren sich die Antworten: ein Unternehmen, ein Listener, eine öffentliche Ausgangsadresse, ein Erreichbarkeitsergebnis. Jede ist legitim, und ihre Vermischung ohne Kennzeichnung erzeugt eine Summe, die präzise klingt und nichts bedeutet. Die Einheit ist eine Designentscheidung, und sie muss vor der ersten Zählung getroffen werden. Der meiste Wirrwarr in veröffentlichten VPN-Statistiken entsteht durch das Überspringen dieses Schritts.
Eine Zeile ist eine Behauptung, kein Ding
Jede Zeile behauptet etwas über die Welt, und die Behauptung hat ein Subjekt. Erst die Benennung des Subjekts macht die Zeile mit einer anderen Zeile vergleichbar.
Eine Anbieterzeile behauptet, dass eine Organisation einen Dienst anbietet. Eine Endpunktzeile behauptet, dass eine bestimmte Adresse und ein Port ein Protokoll sprechen. Eine Ausgangszeile behauptet, dass Verkehr zu einer Zeit eine Adresse verlassen hat. Eine Messzeile behauptet, dass eine Sonde von irgendwo ein Ergebnis beobachtet hat. Vier Subjekte, vier Schemata, und ein Datensatz, der sie ohne Unterscheidungsmerkmal vermischt, lässt sich überhaupt nicht aggregieren.
Das Unterscheidungsmerkmal ist der billigste Teil des Schemas und der am häufigsten ausgelassene.
Wählen Sie die Einheit vor der Zählung
Wählen Sie die Einheit, die die Frage beantwortet, die Sie tatsächlich haben. Endpunkte zu zählen beantwortet, wie viele Listener angekündigt wurden; Anbieter zu zählen beantwortet, wie viele Organisationen beteiligt waren; Ausgangsadressen zu zählen beantwortet, wie viele scheinbare Ursprünge existieren.
Diese Zahlen sind nicht austauschbar, und die Unterschiede sind groß. Ein Anbieter kann Tausende Adressen betreiben, und eine Adresse kann mehrere Protokoll-Listener für verschiedene Dienste beherbergen. Eine Adresszählung ist daher weder eine obere noch eine untere Schranke für eine Anbieterzählung. Nennen Sie die Einheit jedes Mal im selben Satz wie die Zahl. Eine Zahl ohne Einheit ist eine Meinung mit einem Dezimalpunkt.
| 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 |
Ein öffentliches Verzeichnis liefert angekündigte Teilnehmer an diesem Dienst. Es ist kein Inventar jeder kommerziellen, organisatorischen und privaten Bereitstellung weltweit, und es so zu behandeln bläht jede abgeleitete Statistik auf.
Herkunft gehört ins Schema
Eine Zeile ohne Herkunft lässt sich nicht nachprüfen. Halten Sie den Quellbeleg, die Erfassungszeit mit ihrer Zeitzone, die Beobachtungsmethode und einen Zuletzt-gesehen-Status fest.
Halten Sie angekündigte Attribute getrennt von beobachteten, weil sie unterschiedliches Gewicht tragen. Das Länderkürzel eines Verzeichnisses ist eine angekündigte Behauptung und kein Beweis für den physischen Standort eines Servers. Eine IP-Zuweisung benennt einen Netzblock, nicht jeden Mieter darin und nicht den aktuellen Betreiber einer Anwendung darüber. Zwei Spalten und eine Notiz schlagen jedes Mal ein zusammengeführtes Feld.
{"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"}
Eine einzelne JSON-Zeile macht das Schema konkret und ist leichter zu diskutieren als ein Beschreibungsabsatz. Beachten Sie, dass der Zeitstempel eine Zeitzone trägt und die Methode benannt statt angedeutet wird.
Duplikate nach der Frage entfernen
Duplikate hängen von der Einheit ab. Dieselbe Adresse mit zwei Protokoll-Listenern ist ein Endpunktpaar und zwei Dienste, und sie stillschweigend zusammenzufassen ändert die Zählung.
Entfernen Sie Duplikate auf der Ebene, nach der die Frage fragt, und halten Sie fest, wie viele Rohzeilen in jede behaltene Zeile gefallen sind. Dieses Verhältnis ist selbst ein Befund, denn ein großer Zusammenfall bedeutet meist, dass die Quelle Datensätze pro Listener veröffentlicht. Ein Anbieter mit vielen Adressen erzeugt das umgekehrte Muster. Beides ist richtig, und nur das festgehaltene Verhältnis erlaubt es dem Leser, sie zu unterscheiden.
Behalten Sie dann die Rohzeilen. Eine deduplizierte Tabelle ist eine Sicht, und die Fähigkeit, sie aus der Rohangabe neu zu bauen, macht das Ergebnis reproduzierbar.
Veröffentlichen Sie die Abdeckungserklärung
Geben Sie an, wie Quellen ausgewählt wurden, welche Regionen oder Netze sie abdecken und was bewusst fehlt.
Private Unternehmensendpunkte und nicht angekündigte Bereitstellungen erscheinen nie auf öffentlichen Listen, sodass Abwesenheit in einem Verzeichnis nur beweist, dass das Verzeichnis sie nicht gelistet hat. Prüfen Sie die Quellbedingungen und Weiterverbreitungsrechte vor der Veröffentlichung und entfernen Sie Felder, die nie nötig waren. Eine Endpunktstudie verlangt selten Teilnehmeridentitäten, Zugangsdaten oder Surfverläufe. Diese zu veröffentlichen wäre ein anderes Projekt mit einer anderen Rechtfertigung.
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
Diese drei Befehle liefern eine Zeilenzahl, eine Einheitenaufteilung und einen Abdeckungsumriss nach angekündigtem Land. Behalten Sie datierte Momentaufnahmen, wenn sich die Grundgesamtheit ändert, und unterscheiden Sie veraltet von bestätigter Abwesenheit. Ein begrenzter Datensatz mit klarer Grundgesamtheit schlägt eine unbelegte Behauptung, jeden VPN im Internet zu enthalten.