Mengapa Alamat Keluar VPN dan Bahasa Peramban Anda Tidak Sepakat
Accept-Language meminta bahasa respons; VPN mengubah alamat sumber. Ketika sebuah situs tampak dilokalkan, tiga masukan menentukan mana yang menang.
Buka alat pengembang, muat halaman, dan baca header permintaan sebelum Anda menyimpulkan apa pun tentang VPN. Biasanya Anda akan menemukan baris Accept-Language yang meminta kumpulan bahasa tertentu, dan baris itu berasal dari pengaturan peramban Anda, bukan dari alamat keluar. Penutur bahasa Prancis di keluar Tokyo tetap mengirim bahasa Prancis, dan situs yang menjawab dalam bahasa Prancis menjawab header tersebut. Terowongan tidak bocor hanya karena halaman datang dalam bahasa yang familier.
Baca header sebelum hal lain
Di peramban desktop, buka panel Jaringan, muat ulang, klik permintaan dokumen dan lihat di bawah header permintaan. Dari terminal Anda dapat melihat hal yang sama tanpa peramban, dan Anda dapat menimpa nilainya untuk menguji perilaku situs:
curl -sS -D /tmp/h1 -o /tmp/b1 https://example.com
curl -sS -D /tmp/h2 -o /tmp/b2 -H 'Accept-Language: fr,en;q=0.6' https://example.com
grep -o 'lang="[^"]*"' /tmp/b1 /tmp/b2
diff /tmp/b1 /tmp/b2 | head -40
Sekarang isi ada di disk, jadi perbandingannya tentang halaman, bukan tentang header yang mungkin tidak pernah dikirim. Perhatikan atribut lang pada tag html dan teks yang terlihat, karena Content-Language bersifat opsional dan banyak server menghilangkannya. Karena itu situs yang mengganti seluruh halaman dari Inggris ke Prancis pada URL yang sama bisa tampak tidak berubah dalam perbandingan yang hanya melihat header. Jika bahasa dokumen mengikuti header sementara alamat keluar tetap, header-lah masukan yang menentukan dan VPN tidak ada hubungannya dengan pengamatan itu.
Gunakan profil peramban kedua alih-alih pengalih bahasa milik situs untuk uji ini. Pengalih biasanya menulis cookie, yang merupakan masukan lain, dan pada akhirnya Anda mengukur cookie alih-alih header.
Apa arti nilai q, dan apa yang bukan
RFC 9110 bagian 12.5.4 mendefinisikan Accept-Language sebagai daftar bahasa alami yang disukai untuk respons. Setiap entri dapat membawa bobot dari 0 sampai 1, rentang tanpa bobot berbobot 1, dan bobot 0 menandai bahasa sebagai tidak dapat diterima. Itu urutan preferensi, tidak lebih.
Nilainya bukan laporan lokasi, bukan skor keyakinan, dan bukan identitas. Server bebas mengabaikannya, menyajikan satu-satunya terjemahan yang dimilikinya, atau membiarkan pengalihan berbasis negara menang. Negosiasi konten adalah pilihan server, dan header adalah masukan bagi pilihan itu, bukan perintah.
Inilah bagian yang terlewat ketika orang memperlakukan halaman yang dilokalkan sebagai uji lokasi. Header menyatakan bahasa apa yang lebih suka dibaca orang tersebut, dan preferensi bisa bepergian ke mana saja.
Tiga masukan menentukan bahasa yang benar-benar Anda dapatkan
Pisahkan satu per satu, karena dari luar Anda tidak melihat mana yang menang:
- Header. Uji dengan profil kedua yang diatur ke daftar bahasa lain, dan amati apakah halaman berubah sementara semua hal lain tetap.
- Pilihan tersimpan. Uji di jendela privat tanpa cookie, atau bersihkan penyimpanan situs. Pengaturan akun dan entri localStorage dapat menyematkan bahasa selama berbulan-bulan.
- URL atau pengalihan. Uji dengan meminta jalur bahasa eksplisit, seperti
/fr/, dan dengan mengamati kode status pengalihan yang didasarkan pada alamat sumber.
Jalankan ketiga uji dalam urutan itu dan catat mana yang menggeser hasil. Satu pemuatan halaman yang berganti bahasa setelah Anda mengaktifkan VPN adalah bukti lemah, karena pengalihan dan cookie yang tersimpan di cache sama-sama dapat menciptakan kesan itu.
Apa yang diubah VPN dan apa yang tidak
Terowongan mengubah alamat sumber yang dilihat server, dan bersamanya semua yang disimpulkan server dari geolokasi IP. Terowongan tidak menulis ulang preferensi bahasa peramban, tidak menghapus pengaturan tersimpan, dan tidak mengubah URL yang Anda ketik. Masukan itu tetap persis di tempatnya, jadi halaman dapat mempertahankan bahasa lamanya setelah alamat keluar bergeser.
Geolokasi menambahkan kebisingannya sendiri. Basis data alamat saling bertentangan, dan alamat keluar yang terdaftar di satu negara bisa dipetakan ke negara lain, yang membuat pengalihan berbasis negara tampak salah karena alasan yang tidak ada hubungannya dengan peramban Anda.
Pemeriksaan cepat memisahkannya: minta halaman baru, catat alamat yang Anda hadirkan, lalu bandingkan bahasa respons dengan daftar header Anda. Jika bahasa cocok dengan daftar Anda dan bukan dengan negara keluar, header-lah masukan yang menentukan dan tidak ada yang perlu diperbaiki di terowongan.
Apa yang dibuktikan halaman yang dilokalkan dan apa yang tidak
Ada poin privasi nyata di sini, dan itu lebih kecil daripada yang biasanya diajukan orang. Daftar preferensi bahasa yang lengkap adalah masukan fingerprinting dan dapat mengungkap sesuatu tentang siapa Anda atau apa yang Anda baca. Itu pengungkapan preferensi yang sungguh-sungguh, dan itu tidak sama dengan membuktikan bahwa lalu lintas lolos dari terowongan.
Halaman yang dilokalkan bukan indikator kebocoran. Jika Anda benar-benar ingin menguji kebocoran, periksa alamat keluar yang dilihat situs, jalur resolver yang dipakai untuk pencarian nama, dan kandidat yang diekspos tumpukan WebRTC. Uji itu menjawab pertanyaan yang tidak dapat dijawab bahasa halaman.
Lain kali sebuah situs tampak mengetahui negara Anda, buka header permintaan terlebih dahulu. Jika bahasa respons cocok dengan daftar peramban Anda, tidak ada yang bocor, dan lapisan yang perlu Anda lihat adalah yang ada di hadapan Anda.