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

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

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

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

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

צמצום של סוכן משתמש עד עכשיו

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

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

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

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 תוקנו החל מ-Chrome 110

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

לפני: סוכן משתמש כולל גרסת 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) לגבי הסוכן המשתמש

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

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

כותרות ברירת המחדל של בקשות לרמזים של לקוח של סוכן משתמש מ-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"
}

בקשות ממקורות שונים או בקשות ראשוניות

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

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

מידע נוסף

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

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

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

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