Tanyakan apa yang diwakili satu baris kumpulan data VPN, dan jawabannya berlipat: sebuah perusahaan, sebuah pendengar, sebuah alamat keluar publik, sebuah hasil keterjangkauan. Semuanya sah, dan mencampurnya tanpa label menghasilkan total yang terdengar tepat dan tidak berarti apa pun. Satuan adalah keputusan desain, dan itu harus diambil sebelum penghitungan pertama. Sebagian besar kebingungan dalam statistik VPN yang diterbitkan berasal dari melewatkan langkah itu.

Baris adalah klaim, bukan benda

Setiap baris menyatakan sesuatu tentang dunia, dan pernyataan itu punya subjek. Menamai subjek itulah yang membuat baris dapat dibandingkan dengan baris lain.

Baris penyedia menyatakan bahwa suatu organisasi menawarkan layanan. Baris titik akhir menyatakan bahwa alamat dan port tertentu berbicara protokol. Baris keluar menyatakan bahwa lalu lintas meninggalkan sebuah alamat pada suatu waktu. Baris pengukuran menyatakan bahwa sebuah probe dari suatu tempat mengamati hasil. Empat subjek, empat skema, dan kumpulan data yang mencampurnya tanpa pembeda sama sekali tidak dapat diagregasi.

Pembeda adalah bagian termurah dari skema dan yang paling sering dihilangkan.

Pilih satuan sebelum menghitung

Pilih satuan yang menjawab pertanyaan yang benar-benar Anda miliki. Menghitung titik akhir menjawab berapa banyak pendengar yang diumumkan; menghitung penyedia menjawab berapa banyak organisasi yang terlibat; menghitung alamat keluar menjawab berapa banyak asal yang tampak ada.

Angka-angka itu tidak dapat dipertukarkan, dan selisihnya besar. Satu penyedia dapat mengoperasikan ribuan alamat, dan satu alamat dapat menampung beberapa pendengar protokol untuk layanan berbeda. Jadi jumlah alamat bukan batas atas maupun batas bawah bagi jumlah penyedia. Sebutkan satuan dalam kalimat yang sama dengan angkanya, setiap kali. Angka tanpa satuan adalah pendapat dengan titik desimal.

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 publik menyediakan peserta yang diumumkan dalam layanan itu. Itu bukan inventaris setiap penerapan komersial, organisasi, dan pribadi di dunia, dan memperlakukannya begitu menggelembungkan setiap statistik turunan.

Asal-usul masuk ke dalam skema

Baris tanpa asal-usul tidak dapat diperiksa ulang. Catat rekaman sumber, waktu pengumpulan beserta zona waktunya, metode pengamatan, dan status terakhir terlihat.

Pisahkan atribut yang diumumkan dari yang diamati, karena keduanya membawa bobot berbeda. Label negara direktori adalah klaim yang diumumkan, dan itu bukan bukti lokasi fisik server. Alokasi IP mengidentifikasi blok jaringan, bukan setiap penyewa di dalamnya, dan bukan operator aplikasi di atasnya saat ini. Dua kolom dan satu catatan selalu mengalahkan satu bidang gabungan.

{"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 membuat skema menjadi konkret dan lebih mudah diperdebatkan daripada satu paragraf deskripsi. Perhatikan bahwa stempel waktu membawa zona waktu dan metodenya disebutkan, bukan tersirat.

Hapus duplikat sesuai pertanyaan

Duplikat bergantung pada satuannya. Alamat yang sama dengan dua pendengar protokol adalah satu pasangan titik akhir dan dua layanan, dan menggabungkannya diam-diam mengubah hitungan.

Hapus duplikat pada tingkat yang ditanyakan pertanyaan, dan catat berapa banyak baris mentah yang melebur ke setiap baris yang dipertahankan. Rasio itu sendiri adalah temuan, karena peleburan besar biasanya berarti sumber menerbitkan catatan per pendengar. Penyedia yang mengoperasikan banyak alamat menghasilkan pola sebaliknya. Keduanya benar, dan hanya rasio yang tercatat memungkinkan pembaca membedakannya.

Lalu simpan baris mentahnya. Tabel tanpa duplikat adalah tampilan, dan kemampuan membangunnya kembali dari masukan mentah itulah yang membuat hasilnya dapat direproduksi.

Terbitkan pernyataan cakupan

Nyatakan bagaimana sumber dipilih, wilayah atau jaringan mana yang dicakup, dan apa yang sengaja tidak ada.

Titik akhir korporat privat dan penerapan yang tidak diumumkan tidak pernah muncul di daftar publik, jadi ketidakhadiran dalam direktori hanya membuktikan bahwa direktori tidak mendaftarkannya. Periksa ketentuan sumber dan izin redistribusi sebelum menerbitkan, dan hapus bidang yang tidak pernah diperlukan. Studi titik akhir jarang memerlukan identitas pelanggan, kredensial, atau riwayat penjelajahan. Menerbitkannya akan menjadi proyek 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 perintah itu memberi jumlah baris, rincian satuan, dan sketsa cakupan menurut negara yang diumumkan. Simpan cuplikan bertanggal ketika populasi berubah, dan bedakan yang usang dari ketidakhadiran yang terkonfirmasi. Kumpulan data terbatas dengan populasi yang jelas lebih baik daripada klaim tanpa dukungan bahwa ia memuat setiap VPN di internet.

Artikel terkait