Што азначае адзін радок у наборы даных пра VPN і чаму гэта важна
Правайдэр, канцавы пункт, адрас выхаду і дасяжнасць — гэта чатыры розныя радкі. Выберыце адзінку, захоўвайце паходжанне, публікуйце тое, што набор не ахоплівае.
Спытайце, што ўяўляе адзін радок набору даных пра VPN, і адказы пачнуць множыцца: кампанія, слухач, публічны адрас выхаду, вынік дасяжнасці. Кожны з іх слушны, а іх змешванне без пазнак дае суму, якая гучыць дакладна і не азначае нічога. Адзінка — гэта праектнае рашэнне, і яго трэба прыняць да першага падліку. Большасць блытаніны ў апублікаванай статыстыцы VPN паходзіць менавіта з пропуску гэтага кроку.
Радок — гэта сцвярджэнне, а не рэч
Кожны радок сцвярджае нешта пра свет, і ў сцвярджэння ёсць суб’ект. Менавіта называнне суб’екта робіць радок параўнальным з іншым радком.
Радок правайдэра сцвярджае, што арганізацыя прапануе паслугу. Радок канцавога пункта сцвярджае, што пэўны адрас і порт гавораць пратаколам. Радок выхаду сцвярджае, што трафік у нейкі момант пакінуў пэўны адрас. Радок вымярэння сцвярджае, што зонд з нейкага месца назіраў вынік. Чатыры суб’екты, чатыры схемы, і набор даных, які змешвае іх без адрознівальніка, немагчыма агрэгаваць зусім.
Адрознівальнік — самая таннасная частка схемы і тая, што найчасцей апускаецца.
Выберыце адзінку да падліку
Выберыце адзінку, якая адказвае на пытанне, што вы сапраўды маеце. Падлік канцавых пунктаў адказвае, колькі слухачоў было абвешчана; падлік правайдэраў адказвае, колькі арганізацый было задзейнічана; падлік адрасоў выхаду адказвае, колькі відавочных крыніц існуе.
Гэтыя лікі не ўзаемазаменныя, і розніца вялікая. Адзін правайдэр можа трымаць тысячы адрасоў, а адзін адрас можа размяшчаць некалькі пратакольных слухачоў для розных паслуг. Таму падлік адрасоў не з’яўляецца ні верхняй, ні ніжняй мяжой для падліку правайдэраў. Называйце адзінку ў тым жа сказе, што і лік, кожны раз. Лік без адзінкі — гэта думка з дзесятковай коскай.
| 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 |
Публічны каталог падае абвешчаных удзельнікаў у гэтай паслузе. Ён не з’яўляецца інвентаром кожнага камерцыйнага, арганізацыйнага і прыватнага разгортвання ў свеце, і стаўленне да яго як да такога раздзімае кожную вытворную статыстыку.
Паходжанне месціцца ў схеме
Радок без паходжання немагчыма пераправерыць. Запісвайце зыходны запіс, час збору з ягоным часавым поясам, метад назірання і статус апошняга бачання.
Трымайце абвешчаныя атрыбуты асобна ад наглядных, бо яны маюць розную вагу. Краінавая пазнака каталога — гэта абвешчанае сцвярджэнне, а не доказ фізічнага месцазнаходжання сервера. Размеркаванне 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 у інтэрнэце.