Спытайце, што ўяўляе адзін радок набору даных пра VPN, і адказы пачнуць множыцца: кампанія, слухач, публічны адрас выхаду, вынік дасяжнасці. Кожны з іх слушны, а іх змешванне без пазнак дае суму, якая гучыць дакладна і не азначае нічога. Адзінка — гэта праектнае рашэнне, і яго трэба прыняць да першага падліку. Большасць блытаніны ў апублікаванай статыстыцы VPN паходзіць менавіта з пропуску гэтага кроку.

Радок — гэта сцвярджэнне, а не рэч

Кожны радок сцвярджае нешта пра свет, і ў сцвярджэння ёсць суб’ект. Менавіта называнне суб’екта робіць радок параўнальным з іншым радком.

Радок правайдэра сцвярджае, што арганізацыя прапануе паслугу. Радок канцавога пункта сцвярджае, што пэўны адрас і порт гавораць пратаколам. Радок выхаду сцвярджае, што трафік у нейкі момант пакінуў пэўны адрас. Радок вымярэння сцвярджае, што зонд з нейкага месца назіраў вынік. Чатыры суб’екты, чатыры схемы, і набор даных, які змешвае іх без адрознівальніка, немагчыма агрэгаваць зусім.

Адрознівальнік — самая таннасная частка схемы і тая, што найчасцей апускаецца.

Выберыце адзінку да падліку

Выберыце адзінку, якая адказвае на пытанне, што вы сапраўды маеце. Падлік канцавых пунктаў адказвае, колькі слухачоў было абвешчана; падлік правайдэраў адказвае, колькі арганізацый было задзейнічана; падлік адрасоў выхаду адказвае, колькі відавочных крыніц існуе.

Гэтыя лікі не ўзаемазаменныя, і розніца вялікая. Адзін правайдэр можа трымаць тысячы адрасоў, а адзін адрас можа размяшчаць некалькі пратакольных слухачоў для розных паслуг. Таму падлік адрасоў не з’яўляецца ні верхняй, ні ніжняй мяжой для падліку правайдэраў. Называйце адзінку ў тым жа сказе, што і лік, кожны раз. Лік без адзінкі — гэта думка з дзесятковай коскай.

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

Публічны каталог падае абвешчаных удзельнікаў у гэтай паслузе. Ён не з’яўляецца інвентаром кожнага камерцыйнага, арганізацыйнага і прыватнага разгортвання ў свеце, і стаўленне да яго як да такога раздзімае кожную вытворную статыстыку.

Паходжанне месціцца ў схеме

Радок без паходжання немагчыма пераправерыць. Запісвайце зыходны запіс, час збору з ягоным часавым поясам, метад назірання і статус апошняга бачання.

Трымайце абвешчаныя атрыбуты асобна ад наглядных, бо яны маюць розную вагу. Краінавая пазнака каталога — гэта абвешчанае сцвярджэнне, а не доказ фізічнага месцазнаходжання сервера. Размеркаванне IP вызначае сеткавы блок, а не кожнага арандатара ўнутры яго і не бягучага аператара праграмы зверху. Дзве калонкі і заўвага заўсёды перамагаюць адно злітае поле.

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

Адзін радок JSON робіць схему канкрэтнай, і яго прасцей абмяркоўваць, чым абзац апісання. Заўважце, што адзнака часу нясе часавы пояс, а метад названы, а не маецца на ўвазе.

Знішчайце дублікаты паводле пытання

Дублікаты залежаць ад адзінкі. Той самы адрас з двума пратакольнымі слухачамі — гэта адна пара канцавых пунктаў і дзве паслугі, і яго маўклівае зліццё змяняе падлік.

Знішчайце дублікаты на ўзроўні, пра які пытаецца пытанне, і запісвайце, колькі сырых радкоў злілося ў кожны пакінуты радок. Гэтая прапорцыя сама па сабе — знаходка, бо вялікае зліццё звычайна азначае, што крыніца публікуе запісы па кожным слухачы. Правайдэр з мноствам адрасоў дае процілеглы ўзор. Абодва правільныя, і толькі запісаная прапорцыя дазваляе чытачу іх адрозніць.

Затым захоўвайце сырыя радкі. Табліца без дублікатаў — гэта прадстаўленне, і магчымасць перабудаваць яе з сырога ўваходу робіць вынік узнаўляльным.

Апублікуйце заяву пра ахоп

Паведаміце, як адбіраліся крыніцы, якія рэгіёны ці сеткі яны ахопліваюць і што свядома адсутнічае.

Прыватныя карпаратыўныя канцавыя пункты і неабвешчаныя разгортванні ніколі не паяўляюцца ў публічных спісах, таму адсутнасць у каталозе даказвае толькі тое, што каталог яго не змясціў. Праверце ўмовы крыніцы і дазволы на пераразмеркаванне перад публікацыяй, і выдаліце палі, якія ніколі не былі патрэбныя. Даследаванне канцавых пунктаў рэдка патрабуе ідэнтычнасцей падпісчыкаў, уліковых даных ці гісторыі прагляду. Публікацыя такіх даных была б іншым праектам з іншым абгрунтаваннем.

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

Гэтыя тры каманды даюць падлік радкоў, разбіўку па адзінках і накід ахопу па абвешчаных краінах. Захоўвайце датаваныя здымкі, калі насельніцтва змяняецца, і адрознівайце састарэлае ад пацверджанай адсутнасці. Абмежаваны набор даных з ясным насельніцтвам лепш за непадмацаванае сцвярджэнне, што ён змяшчае кожны VPN у інтэрнэце.

Падобныя артыкулы