הפחתת המידע של סוכן המשתמש (UA) מפחיתה את כמות המידע המזהה שמשותף במחרוזת של סוכן המשתמש, שעשוי לשמש ליצירת טביעת אצבע פסיבית. עכשיו, אחרי שהשינויים האלה הושקו לכלל המשתמשים, לכל בקשות המשאבים יש כותרת User-Agent
מוקטנת. כתוצאה מכך, ערכים שמוחזרים מממשקי Navigator
מסוימים מצטמצמים, כולל: navigator.userAgent
, navigator.appVersion
ו-navigator.platform
.
מפתחי אתרים צריכים לבדוק את קוד האתר שלהם כדי לראות אם יש בו שימוש במחרוזת User-Agent. אם האתר שלכם מסתמך על ניתוח המחרוזת User-Agent כדי לקרוא את דגם המכשיר, גרסת הפלטפורמה או גרסת הדפדפן המלאה, תצטרכו להטמיע את User-Agent Client Hints API.
רמזים על הלקוח (Client Hints) לגבי הסוכן המשתמש (UA-CH)
הצעות לשליחת נתונים מהלקוח לגבי סוכן משתמש מאפשרות גישה לקבוצה המלאה של נתוני סוכן המשתמש, אבל רק כשהשרתים מצהירים באופן פעיל על צורך מפורש בחלקים ספציפיים של נתונים.
הסרת נתוני משתמשים שנחשפו באופן פסיבי מאפשרת לנו למדוד בצורה טובה יותר את כמות המידע שנחשף בכוונה באמצעות כותרות בקשות, ממשקי API של JavaScript ומנגנונים אחרים, ולהפחית אותה.
למה צריך את UA המופחת ואת UA-CH?
בעבר, מחרוזת סוכן המשתמש הייתה משדרת מחרוזת גדולה של נתונים על הדפדפן, מערכת ההפעלה והגרסה של המשתמש בכל בקשת HTTP. הבעיה הזו נבעה משתי סיבות:
- רמת הפירוט והמידע הרב עלולים להוביל לזיהוי משתמשים.
- זמינות ברירת המחדל של המידע הזה עלולה להוביל למעקב סמוי.
הגרסאות המוקטנות של UA ו-UA-CH משפרות את פרטיות המשתמשים על ידי שיתוף רק מידע בסיסי כברירת מחדל.
סוכן המשתמש המופחת כולל את המותג של הדפדפן וגרסה משמעותית, את המקור שממנו הגיעה הבקשה (מחשב או נייד) ואת הפלטפורמה. כדי לגשת לנתונים נוספים, תוכלו להשתמש ב-User-Agent Client Hints כדי לבקש מידע ספציפי על המכשיר או על התנאים של המשתמש.
בנוסף, עם הזמן המחרוזת User-Agent
הפכה ארוכה ומורכבת יותר, מה שהוביל לניתוחי מחרוזות עם סיכון גבוה לשגיאות. UA-CH מספק נתונים מובְנים ואמינים שקל יותר לפרש. הקוד הקיים שמנתח את מחרוזת UA לא אמור להיפגע (אבל הוא יחזיר פחות נתונים). תצטרכו לעבור ל-UA-CH אם באתר נדרשים פרטי לקוח ספציפיים.
איך פועלים UA ו-UA-CH המוקטנים?
לפניכם דוגמה קצרה לאופן שבו פועלות המחרוזת המקוצרת של סוכן המשתמש ו-UA-CH. לדוגמה מעמיקה יותר, אפשר לעיין במאמר שיפור הפרטיות של המשתמשים וחוויית המפתחים באמצעות רמזים ללקוח של סוכן משתמש.
משתמש פותח את הדפדפן ומקליד example.com
בסרגל הכתובות:
הדפדפן שולח בקשה לטעינה של דף האינטרנט.
- הדפדפן כולל את הכותרת
User-Agent
עם מחרוזת סוכן המשתמש המקוצרת. לדוגמה:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
הדפדפן כולל את אותו מידע בכותרות ברירת המחדל של User-Agent Client Hint. לדוגמה:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- הדפדפן כולל את הכותרת
השרת יכול לבקש מהדפדפן לשלוח רמזים נוספים לגבי הלקוח, כמו דגם המכשיר, באמצעות כותרת התגובה
Accept-CH
. לדוגמה:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
הדפדפן מחיל את כללי המדיניות וההגדרות של המשתמש כדי לקבוע אילו נתונים מותר להחזיר לשרת בכותרות הבקשה הבאות. לדוגמה:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
רמזים קריטיים על הלקוח (Client Hints)
אם אתם צריכים קבוצה ספציפית של רמזים ללקוח בבקשה הראשונית, תוכלו להשתמש בכותרת התגובה Critical-CH
. הערכים של Critical-CH
חייבים להיות תת-קבוצה של הערכים שביקשת באמצעות Accept-CH
.
לדוגמה, הבקשה הראשונית עשויה לכלול בקשה ל-Device-Memory
ול-Viewport-Width
, כאשר Device-Memory
נחשבת קריטית.
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
אם הדפדפן זקוק לאיתור קריטי (Critical-CH
) כדי להציג את דף האינטרנט בצורה תקינה, השרת יכול לבקש את המידע הנוסף הזה באמצעות הכותרת Accept-CH
. לאחר מכן, הדפדפן יכול לשלוח בקשה חדשה לדף, כולל ההנחיה הקריטית.
לסיכום, Accept-CH
מבקשת את כל הערכים שרוצים בדף, ואילו Critical-CH
מבקשת רק את קבוצת המשנה של הערכים שחייבים להיות זמינים בזמן הטעינה כדי לטעון את הדף בצורה תקינה. מידע נוסף זמין במפרט האמינות של הנחיות לקוח.
זיהוי מכשירים מסוג טאבלט באמצעות UA-CH API
ככל שהקו בין מכשירים ניידים, טאבלטים ומחשבים נעשה פחות ברור וצורות דינמיות נפוצות יותר (מסכים מתקפלים, מעבר בין מצב מחשב נייד למצב טאבלט), מומלץ להשתמש בעיצוב רספונסיבי ובזיהוי תכונות כדי להציג ממשק משתמש מתאים.
עם זאת, המידע שסופק על ידי הדפדפן גם למחרוזת User-Agent וגם ל-User-Agent Client Hints מגיע מאותו מקור, כך שאותן צורות לוגיקה אמורות לפעול.
לדוגמה, אם התבנית הזו מסומנת במחרוזת UA:
- דפוס הטלפון:
'Android' + 'Chrome/[.0-9]* Mobile'
- דפוס טאבלט:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
אפשר לבדוק את ממשק ברירת המחדל התואם של כותרות UA-CH:
- תבנית טלפון:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- דפוס טאבלט:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
או בממשק JavaScript המקביל:
- דפוס הטלפון:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- דפוס טאבלט:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
בתרחישי שימוש ספציפיים לחומרה, אפשר לבקש את שם הדגם של המכשיר באמצעות ההצעה Sec-CH-UA-Model
עם אנטרופי גבוה.
איך משתמשים ב-UA מופחת ובודקים אותו
כדי להתחיל, בודקים את קוד האתר כדי למצוא את המופעים והשימושים של מחרוזת User-Agent. אם האתר שלכם מסתמך על ניתוח המחרוזת User-Agent כדי לקרוא את דגם המכשיר, את גרסת הפלטפורמה או את גרסת הדפדפן המלאה, תצטרכו להטמיע את UA-CH API.
אחרי העדכון ל-UA-CH API, כדאי לבדוק שאתם מקבלים את הנתונים הצפויים מה-User-Agent. יש שלוש דרכים לבצע בדיקה, והן הולכות ונעשות מורכבות יותר.
זמינות מותאמת של קיצור סוכן המשתמש פירושה ששרשור ה-UA המקוצר לגמרי נשלח לכל מכשירי Chrome. התכונה הזו הופחתה בגרסה משנית של Chrome שפורסמה ברבעון השני של שנת 2022.
בדיקה מקומית של מחרוזות בהתאמה אישית
אם רוצים לבדוק את האתר באמצעות מחרוזות User-Agent בהתאמה אישית כדי לדמות מכשירי שונים, מריצים את Chrome עם הדגל --user-agent="Custom string here"
בשורת הפקודה. מידע נוסף על התרעות לגבי שורת פקודה
לחלופין, אפשר להשתמש באמולטור המכשיר בכלי הפיתוח ל-Chrome.
טרנספורמציה של המחרוזת בקוד של האתר
אם אתם מעבדים את המחרוזת user-agent
הקיימת של Chrome בקוד בצד הלקוח או בצד השרת, תוכלו להמיר את המחרוזת הזו לפורמט החדש כדי לבדוק את התאימות. אפשר לבדוק את השינויים על ידי שינוי והחלפה של המחרוזת, או על ידי יצירת הגרסה החדשה ובדיקה של שתי הגרסאות זו לצד זו.
תמיכה ב-Client Hints וב-hints קריטיים
יש שלושה רמזים שמוגדרים כברירת מחדל ללקוח שמוחזרים לשרת, כולל שם הדפדפן והגרסה הראשית שלו, ערך בוליאני שמציין אם הדפדפן פועל במכשיר נייד ושם מערכת ההפעלה. הן נשלחות אחרי לחיצת היד של פרוטוקול אבטחת שכבת התעבורה (TLS). הם כבר זמינים ותומכים בהם בדפדפן.
עם זאת, יכול להיות שתצטרכו לאחזר מידע קריטי כדי שהאתר ייטען.
אופטימיזציה של טיפים קריטיים
לחיצת יד של TLS היא השלב הראשון ליצירת חיבור מאובטח בין הדפדפן לבין שרת האינטרנט. ללא התערבות, כותרת התגובה Critical-CH נועדה להורות לדפדפן לנסות שוב את הבקשה באופן מיידי אם הראשונה נשלחה ללא רמז קריטי.

Sec-CH-UA-Model
נשלחת פעמיים: פעם אחת כ'הצעה ללקוח' עם Accept-CH
ופעם נוספת כ'הצעה קריטית' עם Critical-CH
.כדי לבצע אופטימיזציה של רמזים קריטיים (כותרת Critical-CH
), צריך ליירט את לחיצת היד הזו ולספק מודל ל-Client Hints. השלבים האלה עשויים להיות מורכבים ודורשים ידע מתקדם.
הפריימים של ACCEPT_CH
HTTP/2 ו-HTTP/3, בשילוב עם התוסף TLS ALPS, הם אופטימיזציה ברמת החיבור שמאפשרת להעביר את ההעדפות של הלקוח לגבי הנחיות לשרת בזמן לבקשת ה-HTTP הראשונה. כדי להשתמש בהן נדרשת הגדרה מורכבת, ומומלץ להשתמש בהן רק למידע קריטי באמת.
BoringSSL (הסתעפות של OpenSSL) עוזר לכם לעבוד עם התכונות הניסיוניות של Google ב-Chromium. בשלב זה, ALPS מוטמע רק ב-BoringSSL.
אם אתם צריכים להשתמש בטיפים קריטיים, כדאי לעיין במדריך שלנו בנושא אמינות ואופטימיזציה של טיפים קריטיים.
שאלות נפוצות
למשך כמה זמן יישלחו רמזים שצוינו באמצעות הכותרת Accept-CH
?
הטיפים שצוינו באמצעות הכותרת Accept-CH
יישלחו למשך כל הסשן בדפדפן או עד שיצוין קבוצה אחרת של טיפים.
האם UA-CH פועל עם HTTP/2 ו-HTTP/3?
UA-CH פועל עם חיבורי HTTP/2 וגם עם חיבורי HTTP/3.
האם תת-דומיינים (ו-CNAME) דורשים דף ברמה העליונה Permissions-Policy
כדי לגשת ל-UA-CH עם ערך אנטרופי גבוה?
כותרות UA-CH עם ערכי אנטרופיה גבוהים בבקשות מוגבלות בבקשות ממקורות שונים, ללא קשר לאופן שבו המקור מוגדר בצד ה-DNS. צריך לטפל בהענקת הגישה דרך Permissions-Policy
לכל משאב משנה חוצה-מקורות, או לקבל אותה דרך JavaScript שפועל בהקשר חוצה-מקורות.
איך הפחתת סוכני משתמשים משפיעה על זיהוי בוטים?
השינוי של Chrome במחרוזת User-Agent שלו לא משפיע ישירות על המחרוזת User-Agent שבוט בוחר לשלוח.
בוטים יכולים לבחור לעדכן את המחרוזות שלהם כך שישקפו את המידע המופחת ש-Chrome שולח, אבל זו בחירה שלהם לגמרי. Chrome עדיין שולח את אותו פורמט של User-Agent, ורובוטים שמוסיפים מזהה משלהם בסוף המחרוזת של User-Agent ב-Chrome יכולים להמשיך לעשות זאת.
אם יש לכם חששות לגבי בוטים ספציפיים, כדאי לפנות ישירות לבעלים שלהם ולשאול אם הם מתכננים לשנות את מחרוזת User-Agent שלהם.
יצירת מעורבות ושיתוף משוב
- גרסת מקור לניסיון: שיתוף משוב על גרסאות מקור קודמות לניסיון.
- הדגמה: אפשר לנסות את הדגמה של הפחתת מידע בסוכן משתמש.
- GitHub: קוראים את הסבר על UA-CH, שואלים שאלות ומעקב אחרי הדיון.
- תמיכה למפתחים: אפשר לשאול שאלות ולהצטרף לדיוני המאגר של ארגז החול לפרטיות לתמיכה במפתחים.
למידע נוסף
- שיפור הפרטיות של המשתמשים וחוויית המפתחים: סקירה כללית למפתחי אתרים
- מעבר ממחרוץ UA למחרוזת UA-CH: מדריך למפתחי אתרים
- הסבר על ארגז החול לפרטיות