Co oznacza jeden wiersz w zbiorze danych VPN i dlaczego to ma znaczenie
Dostawca, punkt końcowy, adres wyjściowy i osiągalność to cztery różne wiersze. Wybierz jednostkę, zachowaj pochodzenie, opublikuj to, czego zbiór nie obejmuje.
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ą.
| 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 |
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.