השתתפות בתקופת הניסיון של המקור להפחתת שפות

התכונה Accept-Language Reduction נועדה לצמצם את מספר החשיפות הפסיבית של טביעת אצבע דיגיטלית (fingerprinting) על ידי צמצום העדפות השפה של המשתמש בכותרת Accept-Language ושליחה רק של השפה המועדפת על המשתמש (רק שפה אחת).

החל מגרסת הבטא של Chrome 109, נפתח את גרסת המקור של 'הפחתת שפה', שמאפשרת לאתרים לבחור לקבל את הכותרת המצומצמת Accept-Language. כך אתרים יוכלו לגלות ולתקן בעיות לפני שה-Accept-Language המופחת יהפוך להתנהגות ברירת המחדל ב-Chrome בגרסה עתידית. כדי לבדוק את התכונה לפני השקת הגרסה היציבה של Chrome, חשוב להצטרף ולבדוק אותה לפני תאריך ההשקה של גרסה 109 של Chrome (שמתוכננת כרגע ל-10 בינואר 2023).

למטה מופיעות דוגמאות לכותרת Accept-Language לפני ואחרי ההפחתה.

היחס הנוכחי
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
מוצע
Accept-Language: en-GB

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

מהי שפת הקבלה?

המחרוזת Accept-Language משותפת בכל בקשת HTTP ונחשפה ב-JavaScript לכל המשאבים שהדפדפן טוען. נכון לעכשיו, הוא מכיל את כל השפות המועדפות על המשתמש.

למה האפשרות 'אישור שפה' מצטמצמת?

המטרה של הפחתת השפה בהסכמה היא לצמצם את השימוש הפסיבית ביצירה של טביעת אצבע דיגיטלית ב-Chrome.

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

סיבה נוספת לכך היא שאתרים רבים לא משתמשים בכותרות Accept-Language בכלל לניהול משא ומתן על שפה (לדוגמה, מחקר אחד מצביע על כך שרק 7.2% מ-10,000 האתרים המובילים משתמשים ב-Accept-Language). המצב הפרטי ב-Chrome כבר הפחית את הערך Accept-Language ל-1.

מה המשמעות מבחינת מפתחי אתרים?

אתרים שמסתמכים על Accept-Language לביצוע משא ומתן בשפה צריכים להתכונן לצמצום של Accept-Language ולשקול להשתתף בגרסת המקור לניסיון. ערכי Accept-Language המצומצמים יופיעו במיקומים הבאים:

  • הכותרת של בקשת ה-HTTP Accept-Language.
  • רכיב ה-JavaScript של navigator.languages.

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

נכון לעכשיו, תוכניות Accept-Language המצומצמות לא כוללות את iOS ו-WebView, והפלטפורמות האלה ימשיכו לקבל את הרשימה המלאה של Accept-Language למשתמשים. התמיכה בפלטפורמות האלה מתוכננת למועד מאוחר יותר.

גרסת מקור לניסיון של הפחתת שפות

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

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

השתתפות בגרסת המקור לניסיון של הפחתת שפות

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

שלב 1

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

שלב 2

מעדכנים את הכותרות של תגובת ה-HTTP:

  1. מוסיפים את Origin-Trial: <ORIGIN TRIAL TOKEN> לכותרת התגובה של ה-HTTP, שבה <ORIGIN TRIAL TOKEN> מכיל את האסימון שקיבלתם כשנרשמתם לגרסת המקור לניסיון.
  2. מוסיפים את Content-Language לכותרת התגובה של ה-HTTP כדי לציין את השפות שמיועדות לקהל.
  3. צריך להוסיף את Variants לכותרת התגובה של ה-HTTP כדי לציין את השפות הנתמכות של האתרים.
  4. [אופציונלי] מוסיפים Vary: Accept-Language לתגובת ה-HTTP כדי ליצור מפתח מטמון למשא ומתן על תוכן.
  5. הגדרת הכותרות האלה תפעיל רק משא ומתן על שפת הדפדפן (אפשרות להפעלה מחדש של הבקשה הראשונית) עבור המקור הנתון. כדי שאתרים יציגו את הייצוג הנכון של השפה עבור המשתמשים, צריך גם לעדכן את האתרים ששולחים את התוכן על סמך הכותרת Accept-Language של המשתמש (ראו דוגמה בהמשך).

שלב 3

טוענים את האתר בגרסת Chrome M109 Beta (ואילך) ומתחילים לקבל את המחרוזת המופחתת של Accept-Language.

שלחו בעיות או משובים למאגר GitHub של צמצום השפה.

הדגמה (דמו)

להדגמה של אתר בכמה שפות שהסכים לגרסת המקור לניסיון (יחד עם קוד המקור), ראו https://reduce-accept-language.glitch.me/.

לקבלת הדגמה של הבעת הסכמה וביטול ההסכמה בגרסת המקור לניסיון (יחד עם קוד המקור), ראו https://reduce-accept-language-ot.glitch.me/.

לדוגמה, example.com תומך ב-ja (יפנית) ובen (אנגלית). הבקשה יכולה להיות:

GET / HTTP/1.1
Host: example.com
Accept-Language: en

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

HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

אם למשתמש יש העדפה לתוכן ביפנית, הבקשה תהיה:

GET / HTTP/1.1
Host: example.com
Accept-Language: ja

במקרה כזה, האתר מגיב עם כותרות לתוכן ביפנית:

HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

בצד השרת, יכול להיות שהאתר יחפש תמיכה בשפה מסוימת, אבל יחזור לברירת המחדל אם לא תזוהה תמיכה:

if(accept_language == 'ja') {
    res.response('ja_page')
}
else {
   res.response('en_page')
}

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

תמיכה בגרסת מקור לניסיון של צד שלישי

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

איך בודקים שגרסת המקור לניסיון פועלת

במדריך לפתרון בעיות בגרסאות המקור של Chrome מופיעה רשימת משימות מלאה כדי לוודא שהאסימון מוגדר כראוי.

מגדירים כמה שפות ואת העדיפות שלהן דרך chrome://settings/languages או 'הגדרות' ← 'שפות'. כדאי לבחור שפה שהאתר לא תומך בה, ולהעביר אותה לראש הרשימה כדי לוודא שהמשא ומתן הנוסף יופעל.

הכותרות של התגובה הראשונית שמכילות את האסימון של גרסת המקור לניסיון צריכות להיראות כך:

צילום מסך של כותרת הבקשה עם הכיתוב עם הכיתוב Accept-Language.

כותרות הבקשות הבאות שמכילות את הקידוד המופחת של שפת הקבלה נראות כך:

הכותרות של התגובה הראשונית שמכילות את האסימון של גרסת המקור לניסיון.

הפסקת ההשתתפות בגרסת המקור לניסיון

בכל שלב בתקופת הניסיון, תוכלו להפסיק את ההשתתפות ולקבל את הרשימה המלאה של כתובות Accept-Language של המשתמש. כדי להפסיק להשתתף בתוכנית:

  1. מסירים את הכותרת Origin-Trial של תקופת הניסיון Accept-Language Reduction מתגובת ה-HTTP.
  2. [אופציונלי] אם אתם לא רוצים לשלוח את הכותרת הזו, תוכלו להסיר את הכותרת Variants שנוספה להבעת הסכמה לשימוש בגרסת המקור לניסיון של המקור בתגובת ה-HTTP. כדי לעשות זאת, אפשר גם להשתמש ב-Variants עם ערך ריק.
  3. [אופציונלי] אם אתם לא רוצים לשלוח את הכותרת הזו, צריך להסיר את הכותרת Content-Language שמתווספת להצטרפות לגרסת המקור לניסיון בתגובת ה-HTTP.

משך גרסת המקור לניסיון

גרסת המקור לניסיון של Accept-Language Reduction תפעל למשך שישה חודשים לפחות, בסך הכול שש אבני דרך ב-Chrome. גרסת המקור לניסיון תופיע בגרסה M109 ותסתיים בגרסה M114 (זו הגרסה האחרונה של Chrome שגרסת הניסיון זמינה בה). בשלב הזה, Chrome יבדוק את המשוב מגרסת המקור לפני שימשיך לשלוח את המחרוזת המצומצמת של Accept-Language באופן הדרגתי: קודם צריך להקטין את כותרת ה-HTTP של Accept-Language, ואז להקטין את ממשק ה-JS. אם אתר זקוק לזמן נוסף כדי לבדוק, הוא יכול להצטרף לגרסת ניסיון מקור נוספת להוצאה משימוש, וכך תהיה לו גישה למחרוזת Accept-Language המלאה למשך שישה חודשים נוספים לפחות. כשהיא תהיה מוכנה, נפרסם פרטים נוספים על תקופת הניסיון להוצאה משימוש.

מתן משוב

שלחו בעיות או משובים למאגר GitHub של צמצום השפה.