Tanya apa yang diwakili oleh satu baris set data VPN, dan jawapannya berganda: sebuah syarikat, sebuah pendengar, sebuah alamat keluar awam, satu keputusan kebolehcapaian. Setiap satu sah, dan mencampurkannya tanpa label menghasilkan jumlah yang kedengaran tepat dan tidak bermakna apa-apa. Unit ialah keputusan reka bentuk, dan ia mesti dibuat sebelum kiraan pertama. Sebahagian besar kekeliruan dalam statistik VPN yang diterbitkan datang daripada melangkau langkah itu.

Baris ialah dakwaan, bukan benda

Setiap baris mendakwa sesuatu tentang dunia, dan dakwaan itu mempunyai subjek. Menamakan subjek itulah yang menjadikan baris itu setanding dengan baris lain.

Baris penyedia mendakwa bahawa sesebuah organisasi menawarkan perkhidmatan. Baris titik akhir mendakwa bahawa alamat dan port tertentu bertutur dalam protokol. Baris keluar mendakwa bahawa trafik meninggalkan sesuatu alamat pada satu masa. Baris ukuran mendakwa bahawa satu probe dari sesuatu tempat memerhati keputusan. Empat subjek, empat skema, dan set data yang mencampurkannya tanpa pembeza tidak boleh diagregat sama sekali.

Pembeza ialah bahagian termurah dalam skema dan yang paling kerap ditinggalkan.

Pilih unit sebelum kiraan

Pilih unit yang menjawab soalan yang benar-benar anda ada. Mengira titik akhir menjawab berapa banyak pendengar diumumkan; mengira penyedia menjawab berapa banyak organisasi terlibat; mengira alamat keluar menjawab berapa banyak asal yang kelihatan wujud.

Nombor-nombor itu tidak boleh ditukar ganti, dan perbezaannya besar. Satu penyedia boleh mengendalikan beribu-ribu alamat, dan satu alamat boleh menempatkan beberapa pendengar protokol untuk perkhidmatan berbeza. Jadi kiraan alamat bukan had atas mahupun had bawah bagi kiraan penyedia. Nyatakan unit dalam ayat yang sama dengan nombor itu, setiap kali. Nombor tanpa unit ialah pendapat dengan titik perpuluhan.

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

Direktori awam menyediakan peserta yang diumumkan dalam perkhidmatan itu. Ia bukan inventori setiap penggunaan komersial, organisasi dan persendirian di dunia, dan memperlakukannya begitu mengembungkan setiap statistik terbitan.

Asal usul tergolong dalam skema

Baris tanpa asal usul tidak boleh disemak semula. Rekodkan rekod sumber, masa pengumpulan dengan zon masanya, kaedah pemerhatian dan status kali terakhir dilihat.

Asingkan atribut yang diumumkan daripada yang diperhati, kerana keduanya membawa berat berbeza. Label negara direktori ialah dakwaan yang diumumkan, dan ia bukan bukti lokasi fizikal pelayan. Peruntukan IP mengenal pasti blok rangkaian, bukan setiap penyewa di dalamnya, dan bukan pengendali semasa sesuatu aplikasi di atasnya. Dua lajur dan satu nota mengalahkan satu medan bergabung setiap kali.

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

Satu baris JSON menjadikan skema itu konkrit dan lebih mudah dihujahkan daripada satu perenggan penerangan. Perhatikan bahawa cap masa membawa zon masa dan kaedah itu dinamakan bukan tersirat.

Buang pendua mengikut soalan

Pendua bergantung pada unit. Alamat yang sama dengan dua pendengar protokol ialah satu pasangan titik akhir dan dua perkhidmatan, dan meruntuhkannya secara senyap mengubah kiraan.

Buang pendua pada tahap yang ditanya oleh soalan, dan rekodkan berapa banyak baris mentah runtuh ke dalam setiap baris yang disimpan. Nisbah itu sendiri ialah penemuan, kerana runtuhan besar biasanya bermakna sumber menerbitkan rekod bagi setiap pendengar. Penyedia yang mengendalikan banyak alamat menghasilkan corak sebaliknya. Kedua-duanya betul, dan hanya nisbah yang direkodkan membolehkan pembaca membezakannya.

Kemudian simpan baris mentah. Jadual tanpa pendua ialah satu paparan, dan keupayaan membinanya semula daripada input mentah itulah yang menjadikan hasilnya boleh dihasilkan semula.

Terbitkan pernyataan liputan

Nyatakan bagaimana sumber dipilih, wilayah atau rangkaian mana yang diliputi, dan apa yang sengaja tiada.

Titik akhir korporat persendirian dan penggunaan yang tidak diumumkan tidak pernah muncul dalam senarai awam, jadi ketiadaan dalam direktori hanya membuktikan bahawa direktori tidak menyenaraikannya. Semak terma sumber dan kebenaran pengagihan semula sebelum menerbitkan, dan buang medan yang tidak pernah diperlukan. Kajian titik akhir jarang memerlukan identiti pelanggan, kelayakan atau sejarah pelayaran. Menerbitkannya akan menjadi projek lain dengan justifikasi lain.

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

Ketiga-tiga arahan itu memberikan kiraan baris, pecahan unit dan lakaran liputan mengikut negara yang diumumkan. Simpan syot bertarikh apabila populasi berubah, dan bezakan yang lapuk daripada ketiadaan yang disahkan. Set data terbatas dengan populasi yang jelas lebih baik daripada dakwaan tanpa sokongan bahawa ia mengandungi setiap VPN di internet.

Artikel berkaitan