פתחו את כלי המפתחים, טענו את העמוד וקראו את כותרות הבקשה לפני שאתם מסיקים משהו על ה-VPN. בדרך כלל תמצאו שורת Accept-Language שמבקשת קבוצה מסוימת של שפות, והשורה הזו מגיעה מהגדרות הדפדפן שלכם, לא מכתובת היציאה. דובר צרפתית ביציאה בטוקיו עדיין שולח צרפתית, ואתר שעונה בצרפתית עונה לכותרת. המנהרה לא דולפת רק מפני שהעמוד הגיע בשפה מוכרת.

קראו קודם את הכותרת

בדפדפן שולחני פתחו את פאנל הרשת, טענו מחדש, לחצו על בקשת המסמך והסתכלו תחת כותרות הבקשה. מהמסוף אפשר לראות את אותו דבר בלי דפדפן, ואפשר לעקוף את הערך כדי לבחון את התנהגות האתר:

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

עכשיו הגוף נמצא בדיסק, ולכן ההשוואה עוסקת בעמוד ולא בכותרת שאולי לא תישלח לעולם. הסתכלו על מאפיין lang של תג html ועל הטקסט הנראה, משום ש-Content-Language הוא אופציונלי והרבה שרתים משמיטים אותו. לכן אתר שמחליף את כל העמוד מאנגלית לצרפתית באותה כתובת URL יכול להיראות ללא שינוי בהשוואה של כותרות בלבד. אם שפת המסמך עוקבת אחרי הכותרת בעוד היציאה נשארת קבועה, הכותרת הייתה הקלט המכריע וה-VPN לא רלוונטי לתצפית הזו.

השתמשו בפרופיל דפדפן שני ולא במחליף השפה של האתר עצמו לבדיקה הזו. מחליף כותב בדרך כלל קוקי, שזה קלט אחר, ובסוף תמדדו את הקוקי במקום את הכותרת.

מה משמעות ערכי q, ומה לא

RFC 9110 בסעיף 12.5.4 מגדיר את Accept-Language כרשימה של שפות טבעיות מועדפות לתגובה. כל רשומה יכולה לשאת משקל מ-0 עד 1, טווח בלי משקל הוא בעל משקל 1, ומשקל 0 מסמן שפה כבלתי מקובלת. זהו סדר עדיפויות, לא יותר.

הערך אינו דוח מיקום, אינו ציון אמינות ואינו זהות. שרת חופשי להתעלם ממנו, להגיש את התרגום היחיד שיש לו, או לתת להפניה לפי מדינה לנצח. משא ומתן על תוכן הוא בחירה של השרת, והכותרת היא קלט לבחירה הזו, לא פקודה.

זה החלק שאנשים מפספסים כשהם מתייחסים לעמוד מתורגם כאל בדיקת מיקום. הכותרת מציינת אילו שפות האדם מעדיף לקרוא, והעדפה יכולה לנסוע לכל מקום.

שלושה קלטים קובעים את השפה שתקבלו בפועל

בודדו אותם אחד אחד, כי מבחוץ אינכם רואים מי ניצח:

  • הכותרת. בדקו עם פרופיל שני שמוגדר לרשימת שפות אחרת, וראו אם העמוד משתנה כשכל השאר נשאר קבוע.
  • בחירה שמורה. בדקו בחלון פרטי בלי קוקיז, או נקו את האחסון של האתר. הגדרות חשבון ורשומות localStorage יכולות לנעוץ שפה לחודשים.
  • כתובת URL או הפניה. בדקו באמצעות בקשת נתיב השפה המפורש, כגון /fr/, ובאמצעות מעקב אחר קודי הסטטוס של הפניה שמבוססת על כתובת המקור.

הריצו את שלוש הבדיקות בסדר הזה ורשמו איזו מהן הזיזה את התוצאה. טעינת עמוד אחת שמחליפה שפה אחרי שהפעלתם את ה-VPN היא ראיה חלשה, כי גם הפניה וגם קוקי שמור במטמון יכולים ליצור את הרושם הזה.

מה ה-VPN משנה ומה לא

המנהרה משנה את כתובת המקור שהשרת רואה, ואיתה כל מה שהשרת מסיק מגאולוקציה של IP. היא לא כותבת מחדש את העדפות השפה של הדפדפן, לא מוחקת הגדרה שמורה ולא משנה את כתובת ה-URL שהקלדתם. הקלטים האלה נשארים בדיוק במקומם, ולכן עמוד יכול לשמור על שפתו הישנה לאחר שהיציאה זזה.

גאולוקציה מוסיפה רעש משלה. מסדי נתונים של כתובות סותרים זה את זה, ויציאה הרשומה במדינה אחת יכולה להיות ממופה לאחרת, מה שגורם להפניה לפי מדינה להיראות שגויה מסיבות שאין להן שום קשר לדפדפן שלכם.

בדיקה מהירה מפרידה ביניהם: בקשו את העמוד מחדש, רשמו את הכתובת שאתם מציגים, ואז השוו את שפת התגובה לרשימת הכותרות שלכם. אם השפה תואמת את הרשימה שלכם ולא את מדינת היציאה, הכותרת הייתה הקלט המכריע ואין מה לתקן במנהרה.

מה עמוד מתורגם מוכיח ומה לא

יש כאן נקודת פרטיות אמיתית, והיא קטנה מזו שאנשים בדרך כלל מעלים. רשימה מלאה של העדפות שפה היא קלט לטביעת אצבע ויכולה לחשוף משהו על מי שאתם או מה שאתם קוראים. זהו גילוי אמיתי של העדפה, והוא אינו זהה להוכחה שתעבורה חמקה מהמנהרה.

עמוד מתורגם אינו אינדיקטור לדליפה. אם באמת רוצים לבדוק דליפה, בדקו את כתובת היציאה שהאתר רואה, את נתיב הפותר שמשמש לחיפושי שמות ואת המועמדים שחושפת מחסנית WebRTC. הבדיקות האלה עונות על השאלה ששפת העמוד לא יכולה.

בפעם הבאה שאתר נראה כאילו הוא יודע את המדינה שלכם, פתחו קודם את כותרות הבקשה. אם שפת התגובה תואמת את רשימת הדפדפן שלכם, שום דבר לא דלף, והשכבה שכדאי להסתכל עליה היא זו שמולכם.

מאמרים קשורים