היערכות להפחתת סוכן המשתמש של Chrome

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

החל מגרסת Chrome 110 (פברואר 2023), אנחנו משיקים בהדרגה ערך קבוע לגרסה ולדגם של Android – ערך ברירת המחדל יהיה תמיד Android 10 בדגם K. אם אתם מסתמכים על סוכן המשתמש כדי לזהות את גרסת מערכת ההפעלה, דגם מכשיר Android או גרסת הדפדפן המפורטת של המבקרים, יכול להיות שתצטרכו לבצע פעולה כלשהי. הפרטים מופיעים בהמשך.

user-agent הוא מחרוזת שמספקת מידע על הדפדפן והסביבה של המשתמש. לדוגמה, אפשר לדעת שמבקר באתר שלכם משתמש ב-Chrome בגרסה 110 ל-Android. הדפדפן שולח את הפרטים האלה בכותרת HTTP ומאפשר גישה אליהם באמצעות JavaScript.

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

הפחתת מידע בסוכן משתמש עד כה

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

החל מ-Chrome 101 החלפנו את מספר גרסת המשנה באפסים, למשל Chrome/101.3.2.1 הפך ל-Chrome/101.0.0.0.

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

MacMacintosh‏, Intel Mac OS X 10_15_7
WindowsWindows NT 10.0‏, Win64‏, x64
ChromeOSX11,‏ CrOS x86_64 14541.0.0
LinuxX11,‏ Linux x86_64

גרסת Android ודגם המכשיר תוקנו החל מגרסה 110 של Chrome

החל מגרסה 110 של Chrome, אנחנו משיקים בהדרגה ערך קבוע לגרסה ולדגם של Android. במקום לראות משהו כמו Android 13 ב-Pixel 7, ערך ברירת המחדל תמיד יהיה Android 10 במודל K.

לפני כן: user-agent כולל את גרסת Android ואת דגם המכשיר

Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

אחרי: סוכן משתמש מצומצם עם גרסת Android ודגם מכשיר קבועים

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

אין שינוי בפורמט של סוכן המשתמש

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

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

חלופות לסוכן משתמש

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

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

שליחת בקשה לקבלת נתונים מפורטים באמצעות רמזים על הלקוח (Client Hints) לגבי הסוכן המשתמש

יש הרבה סיבות לגיטימיות לגשת לנתונים מפורטים של סוכן משתמש, כמו מתן תוכן ספציפי למכשיר, פונקציונליות למניעת הונאות או רישום ביומן ברמת פירוט גבוהה. אם אתם זקוקים לנתונים המפורטים יותר, תוכלו להשתמש ב-API של User-Agent Client Hints‏ (UA-CH) כדי לגשת אליהם. בדומה לסוכן משתמש, UA-CH זמין דרך כותרות HTTP או JavaScript.

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

כותרות הבקשה שמוגדרות כברירת מחדל של User-Agent Client Hints מ-Chrome:

Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

אפשר להשתמש בכותרת Accept-CH בתגובה כדי לבקש נתונים נוספים. במקרה כזה, תוכלו לבקש את Sec-CH-UA-Platform-Version ו-Sec-CH-UA-Model כדי לקבל שוב את גרסת Android ואת סוג המכשיר האלה בבקשות הבאות.

כותרת התגובה מהשרת שמציינת את גרסת הפלטפורמה ואת המודל:

Accept-CH:
  Sec-CH-UA-Platform-Version,
  Sec-CH-UA-Model

שליחת כותרות בקשה חזרה מ-Chrome, כולל גרסת Android ושם הדגם:

Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"

אפשר לעשות את אותו הדבר ב-JavaScript על ידי קריאה ל-getHighEntropyValues() ב-API userAgentData, והעברת מערך של הערכים הרצויים: platformVersion ו-model. הפונקציה מחזירה הבטחה עם אובייקט שמכיל את הערכים הספציפיים.

navigator.userAgentData
 .getHighEntropyValues(
   ['platformVersion', 'model']
 ).then(ua => { console.log(ua)
 });

{
  "platformVersion": "13.0.0",
  "model": "Pixel 7"
}

בקשות מ-CORS או בקשות ראשוניות

אם יש בדף משאבים ממקורות שונים שזקוקים לערכים האלה, אפשר לאפשר גישה דרך כותרת ה-HTTP‏ Permissions-Policy או באמצעות המטא תג Delegate-CH ב-HTML.

אם צריך שהערכים הרגישים האלה יהיו באתר כבר בבקשה הראשונה ברמה העליונה, אפשר להשתמש בכותרת ה-HTTP Critical-CH, שתמליץ לדפדפן לנסות שוב את הבקשה הראשונית עם ההצעות הנוספות האלה. האפשרות הזו עשויה להיות שימושית במערכות מדור קודם שקשה לעדכן, אבל מומלץ לא להסתמך על הערכים הרגישים האלה כדי להציג את ה-HTML הראשוני.

מידע נוסף

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

  • אפשר לראות את מחרוזת סוכן המשתמש המקוצרת של המכשיר שלכם בכתובת goo.gle/reduced-ua-demo
  • בכתובת goo.gle/ua-ch-demo אפשר לראות את כל ההצעות ללקוח של סוכן המשתמש ב-JavaScript ובכותרת HTTP עבור המכשיר שלכם.
  • שולחים את מחרוזת סוכן המשתמש המקוצרת בדפדפן שלכם על ידי הפעלת הדגל של Chrome #reduce-user-agent.

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

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