הסוכן המשתמש כלולה בעבר בבקשות להצעות מחיר, כדי לספק נתוני טירגוט כמו הדפדפן והפלטפורמה של המכשיר שמתחיל את התהליך. אבל, לפעמים לעיתים קרובות דפדפנים מצנזרים במידה רבה את סוכן המשתמש עקב קושי השימוש שלו להגנה טובה יותר על פרטיות המשתמש. בתגובה לכך, Google תומכת רמזים ללקוח של סוכן משתמש, נכללות בבקשות להצעות מחיר אם הן זמינות כתוספת לכותרת של סוכן המשתמש. את הרמזים האלה לגבי הלקוח (בקיצור) אפשר לקבל מכותרות של Sec-Ch-UA* או מ-Client Hints API ב-JavaScript.
בהתאם לפרוטוקול שבו נעשה שימוש, הכותרת של סוכן המשתמש נחשפת באמצעות אחת בשדות המחרוזת הבאים:
- OpenRTB:
BidRequest.device.ua
- הצעת מחיר בזמן אמת (RTB) של Google (הוצאה משימוש):
BidRequest.user_agent
הודעת UserAgent
תאוכלס ברמזים של לקוחות כשהם
אבל יאוכלסו בהתאם לערכים שנותחו
כותרת של סוכן משתמש. בהתאם לפרוטוקול שנעשה בו שימוש, הכתובת הזו תיחשף כפרוטוקול אחד
של השדות הבאים:
- OpenRTB:
BidRequest.device.sua
- הצעת מחיר בזמן אמת (RTB) של Google (הוצאה משימוש):
BidRequest.user_agent_data
מומלץ מאוד למגישי הצעות המחיר להשתמש בהודעה UserAgent
במקום
מחרוזת של סוכן משתמש.
איך השדה UserAgent
מאוכלס
בניגוד לכותרת של סוכן המשתמש, ההודעה UserAgent
מייצגת את סוכן המשתמש
המידע מחולק למספר שדות לקבלת מידע ספציפי.
בהתאם לזמינות של רמזים ללקוחות בבקשה להצגת מודעה,
אפשר לאכלס הודעה אחת (UserAgent
) בדרכים הבאות:
- אם הבקשה מכילה לפחות
אנטרופיה נמוכה
טיפים ללקוחות, השדה
UserAgent
מאוכלס על סמך התוכן שלהם. - אם הבקשה מכילה רק את הכותרת של סוכן המשתמש, הערך
UserAgent
יאוכלס בהתאם למה שאפשר לנתח מהכותרת.
דוגמה: מתבצע אכלוס של UserAgent
על סמך הכותרת של סוכן המשתמש
נניח שיש בקשה להצגת מודעה שבה הדפדפן שולח את הכותרות הבאות:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
UserAgent
שמאוכלס אך ורק על סמך הכותרת של סוכן המשתמש עשוי להיראות כך:
הבאים:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
דוגמה: אכלוס UserAgent
לפי טיפים ללקוחות
נניח שיש בקשה להצגת מודעה שבה הדפדפן שולח את הכותרות הבאות:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
במקרים שבהם כלולים לפחות טיפים ללקוח עם אנטרופיה נמוכה, UserAgent
יאוכלסו על סמך תוכן הכותרות האלה, גם אם User-Agent
קיימות כותרות. הוא ייראה כך:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
אכלוס על סמך הכותרת של סוכן המשתמש לעומת האותות לגבי לקוחות
חלק מהשדות מאוכלסים באופן שונה בהתאם לשדות שלהם לכותרת של סוכן משתמש או לרמזים של לקוחות. הנה סיכום של הפעולות האלה הבדלים:
- לדפדפנים ופלטפורמות זהים,
UserAgent.browsers.brand
וגם לרוב יהיה הבדל בין הערךUserAgent.platform.brand
ב-UserAgent
בהתבסס על לכותרת של סוכן משתמש או לרמזים של לקוחות. לדוגמה,UserAgent.platform.brand
עשוי להופיע כ-"Windows NT" אם הוא מבוסס על בכותרת 'סוכן משתמש', או 'Windows' אם היא מבוססת על רמזים של לקוח. - חלק מהרשומות של
UserAgent.browsers
הן ייחודיות לכותרת של סוכן המשתמש, או אל רמזים ללקוחות. לדוגמה, השם "AppleWebKit" יופיע אםUserAgent
מבוססים על הכותרת של סוכן המשתמש, ואילו Chromium יופיע רק. אם הוא מבוסס על רמזים של לקוחות. - רק
UserAgent
שמבוסס על הכותרת של סוכן המשתמש יכול להכיל ערכים שהוקפאו. לדוגמה, אם הפלטפורמה הייתה Windows 11 22H2,UserAgent.platform.brand
יוגדר כ-"Windows NT" ו- הערך שלUserAgent.platform.version
יוגדר כ-[“10”, “0”]
כי את הערך שהוקפא בכל גרסת Windows שבגרסה 10 ומעלה.
נתונים ב-UserAgent
המבוססים על רמזים של לקוחות לא ייחשבו בדרך כלל
החלפה לא מדויקת של מידע שהוקפא או מצונזר. אם קיים
חוסר עקביות בין הכותרת של סוכן המשתמש לבין UserAgent
בהתאם ללקוח
רמזים, המידע מUserAgent
צריך להיות מועדף.
שדות אובייקט של סוכן משתמש
בקטע הזה מופיע סיכום של כל שדה, תוך התמקדות בשיטות ספציפיות לבידינג בזמן אמת (RTB) של Google התנהגות המשתמש ושיטות מומלצות לשימוש בו.
דפדפנים
מכיל רשימה של
BrandVersion
רשומות שמסודרות בדרך כלל לפי ספציפיות. לדוגמה,
רשימה של התוכן של browsers
, ה-brand
של כל רשומה עשוי להופיע
בסדר הבא:
מותג | משמעות |
Mozilla | תואם ל-Mozilla |
AppleWebKit | מבוססת AppleWebKit, קבוצת משנה של Mozilla. |
Chrome | דפדפן Chrome, קבוצת משנה של דפדפנים שתואמים ל-AppleWebKit |
Safari | וריאציה של מחשב שולחני לעומת נייד. |
UserAgent
לא תמיד תציג דפדפנים בסדר מסוים, במיוחד
אם הוא מבוסס על 'רמזים של לקוחות'. בהמשך מתוארים הבדלים נוספים
שניתן לצפות לראות על סמך הערך של source
:
USER_AGENT
: ייתכן שהשדהversion
יצומצם לגרסה ראשית או קפוא (תלוי במדיניות ספציפית לסוכן). שימו לב שלא יהיו שמציין שהערך קפוא.CLIENT_HINTS_LOW_ENTROPY
ו-CLIENT_HINTS_HIGH_ENTROPY
: הרשומות הן לא מסודרות לפי קריטריונים כלשהם; לדוגמה, אותו דפדפן עשוי לשלוח את רשומות בסדר שונה בכל בקשה. הן עשויות לכלול גם GREASE, להתעלם.CLIENT_HINTS_HIGH_ENTROPY
: כלversion
השדות שנמצאו בדפדפנים יכולים להיות צריך להגדיר גרסאות מלאות.
פלטפורמה
BrandVersion
רשומה שמתארת את הפלטפורמה. ייתכן שההגדרה הזו לא תואמת לסוכן המשתמש
כותרת ורמזים ללקוחות, לכן טירגוט של פלטפורמות מסוימות עשוי לחייב בדיקה
שני שמות. לדוגמה, מערכת ההפעלה Macintosh של Apple ממותגת בתור
"Macintosh" בכותרת של סוכן המשתמש, אבל 'macOS' ב-Client Hints.
בהמשך מתוארים הבדלים נוספים שאפשר לצפות לראות על סמך
הערך של source
:
USER_AGENT
: ייתכן שהשדהversion
יצומצם לגרסה ראשית או קפוא. לתשומת ליבכם: לא יצוין שהערך הוקפא.CLIENT_HINTS_LOW_ENTROPY
: השדהversion
לא יאוכלס.CLIENT_HINTS_HIGH_ENTROPY
: ניתן למלא את השדהversion
.
נייד
מציין אם צריך לבצע אופטימיזציה של תוכן כמו מודעות למסכים קטנים או קלט מגע. שימו לב שזה לא בהכרח סימן לסוג המכשיר, כמו בדפדפנים לנייד אפשר להגדיר בקשה של 'אתר שמותאם למחשב'.
ארכיטקטורה
מזהה את הארכיטקטורה של הפלטפורמה, למשל 'x86' או 'arm'.
עבור UserAgent
המבוסס על רמזים של לקוחות, חשוב לזכור שהערך הזה יאוכלס רק
כשהערך של source
מוגדר ל-CLIENT_HINTS_HIGH_ENTROPY
.
ביט
מזהה את מידת הביטים של הפלטפורמה, למשל אם היא של 32 סיביות או של 64 ביט מעבד (CPU) השדה הוא מחרוזת של מספר שלם שמספק מידע נוסף על את הארכיטקטורה שלו, לדוגמה, בארכיטקטורת x86 אפשר להגדיר ביטים 32 או 64.
עבור UserAgent
המבוסס על רמזים של לקוחות, חשוב לזכור שהערך הזה יאוכלס רק
כשהערך של source
מוגדר ל-CLIENT_HINTS_HIGH_ENTROPY
.
דגם
מזהה את דגם המכשיר. לגבי מכשירים ניידים, כלומר לא מחשבים ניידים מחשבים שולחניים – שם יאוכלס בשם דגם כמו "Pixel 6 Pro".
בהמשך מתוארים ההבדלים האפשריים
הערך של source
:
USER_AGENT
- מכשירים לא ניידים: השדה
model
יכלול לעיתים קרובות הארכיטקטורה של המקודד-מפענח, כמו 'x64' עבור Windows. הערך הזה הוא לא חוצה פלטפורמות; לדוגמה, Linux עשויה להשתמש ב-'x86_64' עבור אותה חומרה. - מכשירים ניידים: השדה הזה לא יכלול ארכיטקטורה וביט.
הערכים האלה מעניינים אותך? אפשר למצוא את
UserAgent.architecture
UserAgent.bitness
.
- מכשירים לא ניידים: השדה
CLIENT_HINTS_LOW_ENTROPY
: השדהmodel
לא יאוכלס.CLIENT_HINTS_HIGH_ENTROPY
: השדהmodel
יאוכלס רק עבור את הדגם של המכשיר הנייד. לא הוגדר ערך לפלטפורמות של מחשבים.
מקור
מזהה אילו כותרות שימשו ליצירת UserAgent
. לרמזים של לקוחות,
ניתן גם להבחין בין שני המקרים הבאים:
CLIENT_HINTS_LOW_ENTROPY
: יש רק טיפים בסיסיים ללקוחות.CLIENT_HINTS_HIGH_ENTROPY
: טיפים ללקוחות זמינים, כולל לפחות שדה אחד שמסווג כאנטרופיה גבוהה.