Zapytaj, co reprezentuje jeden wiersz zbioru danych VPN, a odpowiedzi się mnożą: firma, słuchacz, publiczny adres wyjściowy, wynik osiągalności. Każda jest uzasadniona, a mieszanie ich bez etykiet daje sumę, która brzmi precyzyjnie i nic nie znaczy. Jednostka to decyzja projektowa i trzeba ją podjąć przed pierwszym zliczaniem. Większość zamieszania w publikowanych statystykach VPN wynika z pominięcia tego kroku.

Wiersz to twierdzenie, nie rzecz

Każdy wiersz twierdzi coś o świecie, a twierdzenie ma podmiot. To nazwanie podmiotu czyni wiersz porównywalnym z innym wierszem.

Wiersz dostawcy twierdzi, że organizacja oferuje usługę. Wiersz punktu końcowego twierdzi, że określony adres i port mówią protokołem. Wiersz wyjścia twierdzi, że ruch w pewnym momencie opuścił adres. Wiersz pomiaru twierdzi, że sonda z jakiegoś miejsca zaobserwowała wynik. Cztery podmioty, cztery schematy, a zbioru danych, który miesza je bez wyróżnika, nie da się w ogóle agregować.

Wyróżnik jest najtańszą częścią schematu i najczęściej pomijaną.

Wybierz jednostkę przed zliczaniem

Wybierz jednostkę, która odpowiada na pytanie, które naprawdę masz. Liczenie punktów końcowych odpowiada, ilu słuchaczy ogłoszono; liczenie dostawców odpowiada, ile organizacji uczestniczyło; liczenie adresów wyjściowych odpowiada, ile pozornych źródeł istnieje.

Te liczby nie są wymienne, a różnice są duże. Jeden dostawca może obsługiwać tysiące adresów, a jeden adres może hostować kilka słuchaczy protokołu dla różnych usług. Liczba adresów nie jest więc ani górną, ani dolną granicą liczby dostawców. Za każdym razem podawaj jednostkę w tym samym zdaniu co liczbę. Liczba bez jednostki to opinia z kropką dziesiętną.

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

Publiczny katalog dostarcza ogłoszonych uczestników tej usługi. Nie jest inwentarzem każdego wdrożenia komercyjnego, organizacyjnego i prywatnego na świecie, a traktowanie go tak rozdyma każdą statystykę pochodną.

Pochodzenie należy do schematu

Wiersza bez pochodzenia nie można ponownie sprawdzić. Zapisz rekord źródłowy, czas zbierania ze strefą czasową, metodę obserwacji i status ostatniego widzenia.

Trzymaj atrybuty ogłoszone oddzielnie od zaobserwowanych, bo mają inną wagę. Etykieta kraju w katalogu jest twierdzeniem ogłoszonym, a nie dowodem fizycznej lokalizacji serwera. Przydział IP identyfikuje blok sieci, nie każdego najemcę w nim i nie obecnego operatora aplikacji na wierzchu. Dwie kolumny i notatka za każdym razem biją jedno scalone pole.

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

Jedna linia JSON czyni schemat konkretnym i łatwiej się o niej dyskutuje niż o akapicie opisu. Zauważ, że znacznik czasu niesie strefę czasową, a metoda jest nazwana, nie domniemana.

Usuwaj duplikaty zgodnie z pytaniem

Duplikaty zależą od jednostki. Ten sam adres z dwoma słuchaczami protokołu to jedna para punktów końcowych i dwie usługi, a ciche scalenie zmienia zliczanie.

Usuwaj duplikaty na poziomie, o który pyta pytanie, i zapisuj, ile surowych wierszy zlało się w każdy zachowany wiersz. Ten stosunek sam jest ustaleniem, bo duże zlanie zwykle oznacza, że źródło publikuje rekordy na słuchacza. Dostawca z wieloma adresami daje odwrotny wzorzec. Oba są poprawne i tylko zapisany stosunek pozwala czytelnikowi je rozróżnić.

Potem zachowaj surowe wiersze. Tabela bez duplikatów jest widokiem, a możliwość odtworzenia jej z surowego wejścia czyni wynik powtarzalnym.

Opublikuj oświadczenie o zasięgu

Podaj, jak wybrano źródła, jakie regiony lub sieci obejmują i czego celowo brakuje.

Prywatne punkty końcowe firm i nieogłoszone wdrożenia nigdy nie pojawiają się na publicznych listach, więc brak w katalogu dowodzi tylko, że katalog go nie wymienił. Sprawdź warunki źródła i uprawnienia do redystrybucji przed publikacją i usuń pola, które nigdy nie były potrzebne. Badanie punktów końcowych rzadko wymaga tożsamości abonentów, danych logowania czy historii przeglądania. Ich publikacja byłaby innym projektem z innym uzasadnieniem.

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

Te trzy polecenia dają liczbę wierszy, podział na jednostki i szkic zasięgu według ogłoszonego kraju. Zachowuj datowane migawki, gdy populacja się zmienia, i odróżniaj nieaktualne od potwierdzonego braku. Ograniczony zbiór z jasną populacją bije niepoparte twierdzenie, że zawiera każdy VPN w internecie.

Powiązane artykuły