בעבר, הכותרת User-Agent נכללה בבקשות להצעות מחיר כדי לספק נתוני טירגוט שימושיים, כמו הדפדפן והפלטפורמה של המכשיר שממנו בוצעה הבקשה. עם זאת, לרוב הדפדפנים מסירים חלק גדול מהפרטים של User-Agent בגלל הקושי בשימוש בו, וגם כדי להגן טוב יותר על פרטיות המשתמשים. בתגובה לכך, Google תומכת ברמזים על הלקוח (Client Hints) לגבי הסוכן המשתמש, שכלולים בבקשות להצעות מחיר כשהן זמינות כדי להשלים את הכותרת User-Agent. אפשר לקבל את ה-Client Hints האלה (לפי הקיצור) מהכותרות Sec-Ch-UA* או מ-Javascript Client Hints API.
הכותרת User-Agent מוצגת כמחרוזת בשדה BidRequest.device.ua
.
הודעה מסוג UserAgent
תתמלא ברמזים על הלקוח (Client Hints) כשהם יהיו זמינים, אחרת היא תתמלא על סמך ערכים שנותחו מהכותרת User-Agent. השדה הזה מוצג בשדה BidRequest.device.sua
.
אנחנו ממליצים מאוד למגישי הצעות המחיר להשתמש בהודעה UserAgent
במקום במחרוזת של סוכן המשתמש.
איך השדה UserAgent
מאוכלס
בניגוד לכותרת User-Agent, ההודעה UserAgent
מייצגת את המידע של סוכן המשתמש שמפורט במספר שדות של מידע ספציפי.
בהתאם לזמינות של הנחיות ללקוח בבקשה להצגת מודעה, אפשר לאכלס את ההודעה UserAgent
בדרכים הבאות:
- אם הבקשה מכילה לפחות רמז לקוח עם אנטרופיה נמוכה, השדה
UserAgent
מאוכלס על סמך התוכן שלהם. - אם הבקשה מכילה רק את הכותרת User-Agent, השדה
UserAgent
מאוכלס על סמך מה שאפשר לנתח מהכותרת.
דוגמה: איך מאכלסים את השדה UserAgent
על סמך הכותרת User-Agent
נניח שיש בקשה להצגת מודעה שבה הדפדפן שולח את הכותרות הבאות:
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
שמאוכלס רק על סמך הכותרת User-Agent עשוי להיראות כך:
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
במקרים שבהם נכללים לפחות רמזים על הלקוח (Client Hints) עם אנטרופיה נמוכה, השדה UserAgent
ייושב על סמך התוכן של הכותרות האלה, גם אם יש כותרות של סוכן משתמש. הוא ייראה כך:
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
האכלוס על סמך הכותרת User-Agent לעומת רמזים על הלקוח (Client Hints)
חלק מהשדות מאוכלסים באופן שונה, בהתאם לכך שהם מבוססים על הכותרת User-Agent או על רמזים על הלקוח (Client Hints). זהו סיכום של ההבדלים האלה:
- בדפדפנים ובפלטפורמות זהים, לעיתים קרובות
UserAgent.browsers.brand
ו-UserAgent.platform.brand
יהיו שונים ביןUserAgent
על סמך הכותרת של סוכן המשתמש או על סמך האותות של הלקוח. לדוגמה, הערך שלUserAgent.platform.brand
עשוי להופיע בתור 'Windows NT' אם הוא מבוסס על הכותרת User-Agent, או בתור 'Windows' אם הוא מבוסס על Client Hints. - חלק מהרשומות של
UserAgent.browsers
הן ייחודיות לכותרת User-Agent או לרמזים על הלקוח. לדוגמה, הערך 'AppleWebKit' יופיע אם השדהUserAgent
מבוסס על הכותרת User-Agent, ואילו הערך 'Chromium' יופיע רק אם הוא מבוסס על רמזים ללקוח. - רק
UserAgent
שמבוסס על הכותרת User-Agent יכול להכיל ערכים קפואים. לדוגמה, אם הפלטפורמה היא Windows 11 22H2, הערך שלUserAgent.platform.brand
יהיה 'Windows NT' והערך שלUserAgent.platform.version
יהיה[“10”, “0”]
כי זה הערך הקפוא לכל גרסה של Windows בגרסה 10 ואילך.
בדרך כלל, נתונים ב-UserAgent
שמבוססים על רמזים מהלקוח לא יהיו תחליף לא מדויק למידע שהוקפא או צונזר. אם יש אי-התאמה בין הכותרת User-Agent לבין UserAgent
שמבוסס על Client Hints, צריך לתת עדיפות למידע מ-UserAgent
.
שדות של אובייקט UserAgent
בקטע הזה מופיע סיכום של כל שדה, עם דגש על התנהגות ספציפית ל-RTB ב-Google ושיטות מומלצות לשימוש.
דפדפנים
מכיל רשימה של רשומות BrandVersion, שממוינות בדרך כלל לפי רמת הספציפיות. לדוגמה, אם תציגו את התוכן של browsers
, יכול להיות שה-brand
של כל רשומה יופיע בסדר הבא:
מותג | משמעות |
Mozilla | תואם ל-Mozilla |
AppleWebKit | מבוסס על AppleWebKit, קבוצת משנה של Mozilla. |
Chrome | דפדפן Chrome, קבוצת משנה של דפדפנים שתואמים ל-AppleWebKit |
Safari | גרסת דפדפן, בניגוד לגרסה לנייד. |
השדה UserAgent
לא תמיד יציג את הדפדפנים בסדר ספציפי, במיוחד אם הוא מבוסס על רמזים מהלקוח. בהמשך מפורטים הבדלים נוספים שצפויים להופיע בהתאם לערך של source
:
USER_AGENT
: השדהversion
עשוי להיות מופחת לגרסה ראשית או להקפיא (בהתאם למדיניות הספציפית של סוכן ה-API). חשוב לזכור שלא תהיה אינדיקציה לכך שהערך קפוא.CLIENT_HINTS_LOW_ENTROPY
ו-CLIENT_HINTS_HIGH_ENTROPY
: הרשומות לא ממוינות לפי קריטריונים כלשהם. לדוגמה, יכול להיות שאותו דפדפן ישלח את הרשומות האלה בסדרים שונים בכל בקשה. הן עשויות לכלול גם רשומה מסוג GREASE, שצריך להתעלם ממנה.CLIENT_HINTS_HIGH_ENTROPY
: אפשר להגדיר את כל השדות שלversion
שנמצאים בדפדפנים לגרסאות מלאות.
פלטפורמה
רשומה BrandVersion שמתארת את הפלטפורמה. יכול להיות שהשם הזה לא יהיה תואם בכותרת User-Agent וברמזים ללקוח, ולכן יכול להיות שתצטרכו לבדוק שני שמות כדי לטרגט פלטפורמות מסוימות. לדוגמה, מערכת ההפעלה 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
.
Bitness
מזהה את רמת הביטים של הפלטפורמה, למשל אם יש לה מעבד 32 ביט או 64 ביט. השדה הוא מחרוזת של מספר שלם שמספקת מידע נוסף על הארכיטקטורה. לדוגמה, לארכיטקטורה מסוג '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
: יש איסוף אותות בצד הלקוח, כולל לפחות שדה אחד שמסווג כאנטרופיה גבוהה.