VPN çıkışı ile tarayıcınızın dili neden uyuşmuyor
Accept-Language yanıt dilini ister; VPN kaynak adresini değiştirir. Bir site yerelleştirilmiş göründüğünde hangisinin kazandığına üç girdi karar verir.
VPN hakkında herhangi bir sonuca varmadan önce geliştirici araçlarını açın, sayfayı yükleyin ve istek başlıklarını okuyun. Genellikle belirli bir dil kümesi isteyen bir Accept-Language satırı bulursunuz ve bu satır çıkış adresinizden değil tarayıcı ayarlarınızdan gelir. Tokyo çıkışındaki Fransızca konuşan biri hâlâ Fransızca gönderir ve Fransızca yanıt veren site o başlığa yanıt veriyordur. Sayfa tanıdık bir dilde geldi diye tünel sızdırmıyor.
Önce başlığı okuyun
Masaüstü tarayıcıda Ağ panelini açın, yeniden yükleyin, belge isteğine tıklayın ve istek başlıklarının altına bakın. Terminalden tarayıcı olmadan aynı şeyi görebilir ve sitenin davranışını test etmek için değeri geçersiz kılabilirsiniz:
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
Artık gövde diskte, yani karşılaştırma sayfayla ilgili, hiç gönderilmeyebilecek bir başlıkla değil. html etiketinin lang özniteliğine ve görünen metne bakın, çünkü Content-Language isteğe bağlıdır ve birçok sunucu onu atlar. Bu yüzden aynı URL'de tüm sayfayı İngilizceden Fransızcaya çeviren bir site, yalnızca başlıklar karşılaştırıldığında değişmemiş görünebilir. Çıkış sabit kalırken belgenin dili başlığı izliyorsa, belirleyici girdi başlıktı ve VPN'in o gözlemle ilgisi yok.
Bu test için sitenin kendi dil değiştiricisi yerine ikinci bir tarayıcı profili kullanın. Değiştirici genellikle bir çerez yazar, bu başka bir girdidir ve sonunda başlık yerine çerezi ölçersiniz.
q değerleri ne anlama gelir, ne anlama gelmez
RFC 9110 bölüm 12.5.4, Accept-Language başlığını yanıt için tercih edilen doğal dillerin listesi olarak tanımlar. Her girdi 0 ile 1 arasında bir ağırlık taşıyabilir, ağırlığı olmayan aralığın ağırlığı 1'dir ve 0 ağırlığı bir dili kabul edilemez olarak işaretler. Bu bir tercih sırasıdır, daha fazlası değil.
Değer bir konum raporu değil, güven puanı değil ve kimlik değil. Sunucu onu yok saymakta, elindeki tek çeviriyi sunmakta veya ülke tabanlı bir yönlendirmenin kazanmasına izin vermekte serbesttir. İçerik pazarlığı sunucunun seçimidir ve başlık bu seçime bir girdidir, komut değil.
İnsanların yerelleştirilmiş bir sayfayı konum testi sayarken kaçırdığı kısım tam da burasıdır. Başlık, kişinin hangi dilleri okumayı tercih ettiğini söyler ve tercih her yere seyahat edebilir.
Gerçekte hangi dili aldığınıza üç girdi karar verir
Dışarıdan hangisinin kazandığını göremediğiniz için bunları tek tek ayırın:
- Başlık. Başka bir dil listesine ayarlanmış ikinci bir profille test edin ve diğer her şey sabitken sayfanın değişip değişmediğine bakın.
- Kaydedilmiş bir seçim. Çerez olmayan gizli bir pencerede test edin veya sitenin depolamasını temizleyin. Hesap ayarları ve localStorage girdileri bir dili aylarca sabitleyebilir.
- Bir URL veya yönlendirme. Açık dil yolunu, örneğin
/fr/, isteyerek ve kaynak adrese dayalı bir yönlendirmenin durum kodlarını izleyerek test edin.
Üç testi bu sırayla yapın ve hangisinin sonucu kaydırdığını yazın. VPN'i açtıktan sonra dili değiştiren tek bir sayfa yüklemesi zayıf kanıttır, çünkü hem bir yönlendirme hem de önbelleğe alınmış bir çerez bu izlenimi yaratabilir.
VPN neyi değiştirir, neyi değiştirmez
Tünel, sunucunun gördüğü kaynak adresini ve onunla birlikte sunucunun IP coğrafyasından çıkardığı her şeyi değiştirir. Tarayıcının dil tercihlerini yeniden yazmaz, kaydedilmiş bir ayarı silmez ve yazdığınız URL'yi değiştirmez. Bu girdiler tam olarak oldukları yerde kalır, bu yüzden çıkış kaydıktan sonra bile sayfa eski dilini koruyabilir.
Coğrafi konum kendi gürültüsünü ekler. Adres veritabanları birbiriyle çelişir ve bir ülkede kayıtlı bir çıkış başka bir ülkeye eşlenebilir, bu da ülke tabanlı yönlendirmeyi tarayıcınızla hiç ilgisi olmayan nedenlerle yanlış gösterir.
Hızlı bir kontrol onları ayırır: sayfayı yeniden isteyin, sunduğunuz adresi not edin ve ardından yanıtın dilini başlık listenizle karşılaştırın. Dil, çıkış ülkesi yerine listenizle eşleşiyorsa başlık belirleyici girdiydi ve tünelde düzeltilecek bir şey yok.
Yerelleştirilmiş bir sayfa neyi kanıtlar, neyi kanıtlamaz
Burada gerçek bir gizlilik noktası var ve insanların genellikle öne sürdüğünden daha küçük. Eksiksiz bir dil tercihi listesi bir parmak izi girdisidir ve kim olduğunuz ya da ne okuduğunuz hakkında bir şeyler açığa çıkarabilir. Bu, tercihin gerçek bir ifşasıdır ve trafiğin tünelden kaçtığını kanıtlamakla aynı şey değildir.
Yerelleştirilmiş bir sayfa sızıntı göstergesi değildir. Gerçekten bir sızıntı test etmek istiyorsanız sitenin gördüğü çıkış adresini, ad aramalarında kullanılan çözümleyici yolunu ve bir WebRTC yığınının açığa çıkardığı adayları kontrol edin. Bu testler, sayfanın dilinin yanıtlayamadığı soruyu yanıtlar.
Bir dahaki sefere bir site ülkenizi biliyor gibi göründüğünde önce istek başlıklarını açın. Yanıtın dili tarayıcınızın listesiyle eşleşiyorsa hiçbir şey sızmadı ve bakmanız gereken katman önünüzdeki katmandır.