בהצעת העיצוב של שירותי הבידינג והמכרזים ל-Android מוסבר בפירוט איך מתבצע הביצוע ותעבורת הנתונים של מכרזים שפועלים ב-Android באמצעות שרת הבידינג והמכרזים המהימן. כדי לוודא שהנתונים במעבר מטופלים רק על ידי ממשקי API לשמירה על פרטיות ושרתי אמון, הנתונים מוצפנים בין הלקוח לשרת באמצעות הצפנה דו-כיוונית של מפתח ציבורי היברידי.
כדי להפעיל את המכרז כפי שמתואר למעלה, טכנולוגיית הפרסום של המוכר במכשיר צריכה לבצע את השלבים הבאים:
- איסוף נתונים והצפנתם למכרז שרתים
- שליחת בקשה לשירות של מוכר לא מהימן
- קבלת תגובה משירות של מוכר לא מהימן
- פענוח התגובה של המכרז עם Protected Audience וקבלת תוצאת המכרז
אנחנו משיקים שני ממשקי API חדשים כדי לתמוך בהפעלת מכרזים בשרת:
- ממשק ה-API
getAdSelectionData
אוסף נתונים למכרז השרת ויוצר עומס מוצפן (payload) שמכיל את נתוני המכרז. שרת הבידינג והמכרז משתמש בתוכן הייעודי הזה כדי להפעיל מכרז, ליצור את תוצאת המכרז ולהחזיר את תוצאת המכרז. - לקוחות טכנולוגיית פרסום במכשיר יכולים להפעיל את ה-API
persistAdSelectionResult
כדי לפענח את התוצאה שנוצרה במכרז השרת ולקבל את כתובת ה-URL של הרינדור של המודעה הזוכה.
כדי להפעיל מכרז, טכנולוגיית הפרסום של המוכר במכשיר צריכה לשלב ולפתח את הרכיבים הבאים:
- איסוף והצפנה של נתונים עבור מוכר במכרזים בצד השרת: טכנולוגיית הפרסום צריכה להפעיל את
getAdSelectionData
API כדי לקבל את עומס העבודה המוצפן. - שליחת בקשה לשירות של מוכר לא מהימן: בקשת
HTTP POST
אוPUT
שמכילה את עומס העבודה המוצפן שנוצר על ידיgetAdSelectionData
API לשירות של המוכר הלא מהימן, ונתונים שנדרשים לשירות של המוכר הלא מהימן כדי ליצור תוצאות לפי הקשר. - קבלת תגובה משירות של מוכר לא מהימן: התגובה משירות של מוכר לא מהימן תכלול את התוצאה המוצפנת של המכרז לקהלים מוגנים ואת התוצאה של המכרז לפי הקשר.
- פענוח התגובה של מכרז עם הגנה על קהל יעד וקבלת תוצאת המכרז: כדי לפענח את תוצאת המכרז עם הגנה על קהל יעד, טכנולוגיית הפרסום של המוכר צריכה לבצע קריאה ל-
persistAdSelectionResult
API. התוצאה שנוצרת על ידיpersistAdSelectionResult
תעזור לטכנאי הפרסום לקבוע אם מודעת הקשר או מודעת קהל מוגן זכו במכרז, ואת מזהה ה-URI של מודעת הקהל המוגן שזכתה במכרז, אם רלוונטי.
תכונות נתמכות במכרז שרת
אנחנו שואפים לתמוך בכל התכונות שזמינות כרגע במכרזים במכשיר. לוח הזמנים לתמיכה בתכונות האלה במכרזים של שרתים הוא:
מכרז במכשיר |
מכרז שרתים |
|||
תצוגה מקדימה למפתחים |
בטא |
תצוגה מקדימה למפתחים |
בטא |
|
דיווח על זכיות ברמת האירוע |
ברבעון הראשון של 2023 |
רבעון 3 של שנת 2023 |
לא רלוונטי |
רבעון 4 של שנת 2023 |
ברבעון הראשון של 2023 |
רבעון 4 של שנת 2023 |
לא רלוונטי |
Q1 24 |
|
רבעון 2 של שנת 2023 |
רבעון 3 של שנת 2023 |
לא רלוונטי |
רבעון 4 של שנת 2023 |
|
העברת מודעות לפי הקשר לתהליך העבודה לבחירת מודעות לצורך סינון |
רבעון 2 של שנת 2023 |
רבעון 1, 2024 |
לא רלוונטי |
לא רלוונטי |
רבעון 2 של שנת 2023 |
רבעון 3 של שנת 2023 |
לא רלוונטי |
רבעון 4 של שנת 2023 |
|
רבעון 3 של שנת 2023 |
רבעון 4 של שנת 2023 |
לא רלוונטי |
רבעון 4 של שנת 2023 |
|
חיוב שאינו לפי עלות לאלף חשיפות |
רבעון 3 של שנת 2023 |
רבעון 4 של שנת 2023 |
||
דיווח על ניפוי באגים |
רבעון 3 של שנת 2023 |
רבעון 4 של שנת 2023 |
רבעון 3 של שנת 2023 |
רבעון 4 של שנת 2023 |
בחירת רשת במכרזים פתוחים |
לא רלוונטי |
לא רלוונטי |
לא רלוונטי |
רבעון 1, 2024 |
רבעון 2 של שנת 2023 |
רבעון 1, 2024 |
לא רלוונטי |
רבעון 1, 2024 |
|
ניהול מטבעות |
לא רלוונטי |
לא רלוונטי |
לא רלוונטי |
רבעון 1, 2024 |
שילוב של k-anonymity |
לא רלוונטי |
רבעון 1, 2024 |
לא רלוונטי |
רבעון 1, 2024 |
שילוב עם Private Aggregation |
לא רלוונטי |
לא רלוונטי |
לא רלוונטי |
רבעון 3 של שנת 2024 |
הפעלת מכרזים בצד השרת באמצעות ממשקי Protected Audience API
במסלול 'תצוגה מקדימה למפתחים', AdSelectionManager חושף שני ממשקי API חדשים:
getAdSelectionData
ו-persistAdSelectionResult
. ממשקי ה-API האלה מאפשרים ל-SDK של טכנולוגיות הפרסום להתמזג עם שרתי הבידינג והמכרזים.
איסוף והצפנה של נתונים למכרז שרת
ה-API של getAdSelectionData
יוצר את הקלט הנדרש לרכיבי הבידינג והמכרז, כמו BuyerInput
ו-ProtectedAudienceInput
, ומצפין את הנתונים לפני שהתוצאה זמינה למבצע הקריאה. כדי למנוע דליפת נתונים בין אפליקציות, הנתונים האלה מכילים מידע מכל הקונים שנמצאים במכשיר. מידע נוסף על ההחלטה הזו זמין בקטע שיקולים לגבי פרטיות, ושיקולים לגבי אופטימיזציה זמינים בקטע שיקולים לגבי גודל.
כדי לגשת ל-API, צריך להפעיל את הגישה ל-Protected Audience API ולהגדיר את ההרשאה ACCESS_ADSERVICES_CUSTOM_AUDIENCE
במניפסט של מבצע הקריאה.
public class AdSelectionManager {
public void getAdSelectionData(
GetAdSelectionDataRequest getAdSelectionDataRequest,
Executor executor,
OutcomeReceiver<GetAdSelectionDataOutcome, Exception> receiver) {}
}
GetAdSelectionDataRequest
- מבצע הקריאה החוזרת חייב להגדיר את השדה
seller
בבקשה, כי הוא משמש להרצת בדיקות ההרשמה לפני טיפול בבקשה. - השדה
coordinatorOriginUri
הוא אופציונלי.- אם ההגדרה מוגדרת, היא צריכה להיות זהה להסכמה, לשם המארח וליציאה של כתובת ה-URL של התיאום שהוגדרה במהלך פריסה של שרת ה-B&A של המוכר.
- התיאום חייב להשתייך לרשימת התיאמים המורשים:
ספק URI מקור ה-URI ברירת מחדל Google Cloud https://publickeyservice.pa.gcp.privacysandboxservices.com/.well-known/protected-auction/v1/public-keys https://publickeyservice.pa.gcp.privacysandboxservices.com כן Amazon Web Services https://publickeyservice.pa.aws.privacysandboxservices.com/.well-known/protected-auction/v1/public-keys https://publickeyservice.pa.aws.privacysandboxservices.com לא - אם לא צוין מקור של רכז, המערכת תשתמש ברכז ברירת המחדל.
- סביר להניח שכתובת ה-URL של 'הרכז' לא תשתנה, אבל מומלץ מאוד להטמיע מנגנון לניהול דינמי של כתובת ה-URL הזו. כך אפשר להבטיח שאפשר יהיה להתאים את המערכת לשינויים עתידיים בכתובת ה-URL בלי שתצטרכו לפרסם גרסה חדשה של ה-SDK.
public class GetAdSelectionDataRequest {
public setSeller(AdTechIdentifier seller);
public setCoordinatorOriginUri(Uri coordinatorOriginUri)
}
אחרי שהבקשה מאומתת, נתוני הקונה במכשיר מורכבים מהשדות BuyerInput
ו-ProtectedAudienceInput
. לאחר מכן, אובייקט המטען הייעודי הסופי מוצפן באמצעות הצפנה דו-כיוונית של מפתח ציבורי היברידי.
GetAdSelectionDataOutcome
GetAdSelectionDataOutcome
נוצר כתוצאה מ-API של getAdSelectionData
. הוא מכיל את הפרטים הבאים:
adSelectionId
: מספר שלם אטום לזיהוי ההפעלה הזו שלgetAdSelectionData
. לקוח טכנולוגיית הפרסום צריך לשמור את הערךadSelectionId
כי הוא משמש כמצביע לקריאהgetAdSelectionData
. המזהה הזה נדרש ל-persistAdSelectionResult
API כדי לפענח את תוצאת המכרז משרת הבידינג ומשרת המכרזים, והוא נדרש גם ל-reportImpression
API ול-reportEvent
API.adSelectionData
: אלה נתוני המכרזים המוצפנים שנדרשים לשרת הבידינג והמכרזים כדי להפעיל מכרזים. השיטה הזו מכילה:- נתונים מסוננים של קהלים מותאמים אישית על סמך מכסות תדירות, מסננים של התקנות אפליקציות ודרישות של מכרזים בשרתים לקהלים מותאמים אישית.
- בגרסה עתידית, הוא יכיל נתוני התקנות של אפליקציות.
public class GetAdSelectionDataOutcome {
Public getAdSelectionId(long adSelectionId);
public byte[] getAdSelectionData();
}
שגיאות, חריגים וטיפול בכשלים
אם אי אפשר להשלים את היצירה של נתוני בחירת המודעות מסיבות כמו ארגומנטים לא חוקיים, תפוגות זמן או צריכת משאבים מוגזמת, בקריאה החוזרת (callback) של OutcomeReceiver.onError()
מוצג AdServicesException
עם ההתנהגויות הבאות:
- אם
getAdSelectionData
מופעלת עם ארגומנטים לא חוקיים, הערך שלAdServicesException
מציין ש-IllegalArgumentException היא הסיבה. - כל שאר השגיאות מקבלות את הערך
AdServicesException
עם הערךIllegalStateException
כסיבה.
שליחת בקשה לשירות של מוכר לא מהימן
באמצעות AdSelectionData
, ערכת ה-SDK במכשיר יכולה לשלוח בקשה לשירות הפרסום של המוכר, על ידי הכללת הנתונים בבקשה מסוג POST
או PUT
:
fetch('https://www.example-ssp.com/auction', {
method: "PUT",
body: data,
...
})
ה-SDK במכשיר אחראי לקידוד הנתונים האלה. מומלץ להשתמש בפתרון יעיל מבחינת נפח, כמו שליחת הבקשה לשירות המודעות של המוכר כ-multipart/form-data.
קבלת תגובה משירות של מוכר לא מהימן
כפי שמפורט במאמר הסבר על שרת הבידינג והמכרזים, כשהבקשה מתקבלת בשירות של המוכר הלא מהימן, הוא מבצע קריאות לקונים שותפים לצורך הצגת מודעות לפי הקשר.
שירות המוכר הלא מהימן מעביר את adSelectionData
ו-AuctionConfig
המוצפנים לשירות SellerFrontEnd של שרת הבידינג והמכרזים שפועל ב-TEE.
כשהמכרז של Protected Audience מסתיים, השירות SellerFrontEnd מצפין את תוצאת המכרז ומחזיר אותה בתגובה לשירות של המוכר הלא מהימן.
שירות המוכר הלא מהימן שולח תגובה למכשיר שמכילה מודעה לפי הקשר ו / או תוצאת מכרז מוצפנת של קהל מוגן.
כשהמכשיר מקבל את התגובה, קוד טכנולוגיית הפרסום של המוכר יכול להחליט להשתמש רק במודעה לפי הקשר בתגובה. לחלופין, אם הוא סבור שיש ערך מצטבר בקבלת התוצאה של Protected Audience, הוא יכול לבחור לפענח את התוצאה של Protected Audience באמצעות קריאה ל-PersistAdSelectionResult
API.
PersistAdSelectionResult API
כדי לפענח את התוצאה של Protected Audience, טכנולוגיית הפרסום של המוכר יכולה לבצע קריאה לממשק Protected Audience API השני persistAdSelectionResult
. ה-API מפענח את התוצאה ומחזיר AdSelectionOutcome
, אותו אובייקט שמוחזר ממכרז במכשיר היום.
כדי לגשת ל-API, מבצע הקריאה צריך להפעיל את הגישה ל-Protected Audience API ולהגדיר את ההרשאה ACCESS_ADSERVICES_CUSTOM_AUDIENCE
במניפסט שלו.
public void persistAdSelectionResult(
PersistAdSelectionResultRequest persistAdSelectionResultRequest,
Executor executor,
OutcomeReceiver<AdSelectionOutcome, Exception> receiver) {}
PersistAdSelectionResultRequest
מבצע הקריאה החוזרת צריך להגדיר בבקשה את הפרטים הבאים:
public final class PersistAdSelectionResultRequest {
Public setAdSelectionId(long adSelectionId);
public setSeller(AdTechIdentifier seller);
public setAdSelectionResult(byte[] adSelectionResult);
}
adSelectionId
: המזהה האטום שנוצר על ידי הקריאהgetAdSelectionData
, שהמבצע רוצה לפענח את התוצאה שלה.seller
: צריך להגדיר בבקשה את מזהה הטכנולוגיה של מודעות של המוכר כדי להריץ בדיקות הרשמה לפני טיפול בבקשה.adSelectionResult
: תוצאת המכרז המוצפנת שנוצרה על ידי שרת הבידינג והמכרז, והמבצע רוצה לפענח אותה.
התגובה של AdSelectionOutcome
אם יש זוכה בקטע Protected Audience, הפונקציה AdSelectionOutcome
מחזירה את ה-URI של עיבוד המודעה הזוכה.אחרי פענוח ה-adSelectionResult
, נתוני הדיווח נשמרים באופן פנימי. פונקציית הקריאה החוזרת OutcomeReceiver.onResult()
מחזירה AdSelectionOutcome
שמכיל את הפרטים הבאים:
URI
: אם יש מודעה מנצחת של Protected Audience, המערכת מחזירה כתובת URL לעיבוד מודעה של המודעה המנצחת. אם אין מנצח בקהל המוגן, המערכת מחזירה את הערך Uri.EMPTY.adSelectionId
: ה-adSelectionId
שמשויך להרצה הזו של מכרז השרת.
שגיאות, חריגים וטיפול בכשלים
אם אי אפשר להשלים את היצירה של נתוני בחירת המודעות מסיבות כמו ארגומנטים לא חוקיים, תפוגות זמן או צריכת משאבים מוגזמת, בקריאה החוזרת (callback) של OutcomeReceiver.onError()
מוצג AdServicesException
עם ההתנהגויות הבאות:
- אם
getAdSelectionData
מופעלת עם ארגומנטים לא חוקיים, הערך שלAdServicesException
יהיהIllegalArgumentException
. - כל שאר השגיאות מקבלות את הערך
AdServicesException
עם הערךIllegalStateException
כסיבה.
שיקולים בנושא פרטיות
השדה adSelectionData
מוצפן כדי לוודא שרק ל-PPAPI ולשרתים המהימנים תהיה גישה לנתונים במעבר.
למרות ההצפנה, יכולה להתרחש דליפת נתונים בגלל הגודל של adSelectionData
. גודל השדה adSelectionData
עשוי להשתנות בגלל:
- שינויים בנתוני
CustomAudience
שנמצאים במכשיר. - שינויים בלוגיקה של סינון
CustomAudience
. - שינויים בקלט של קריאה ל-
getAdSelectionData
.
אפשר להשתמש בשינוי בגודל adSelectionData
כדי ליצור מזהה חוצה-אפליקציות, כפי שמתואר בדיון על דליפת ביט אחד. הרבה מהאמצעי למניעת זליגת ביט אחד רלוונטיים גם כאן.
כדי לנהל את הזליגות האלה, אנחנו מתכננים ליצור את אותו adSelectionData
לכל הקריאות ל-getAdSelectionData
API. במהדורות הראשוניות, כל CustomAudiences
במכשיר ישמש ליצירת adSelectionData
, והמטען המוצפן יהיה מעוטר כדי להסתיר את השינויים בגודל. בנוסף, נצמצם את ההשפעה של פרמטרים של קלט GetAdSelectionData
על הערך שנוצר של adSelectionData
.
עם זאת, יצירת אותו adSelectionData
לכל פלטפורמות ה-AdTech באמצעות כל נתוני המכרזים במכשיר יוצרת עומס נתונים גדול שצריך להעביר בכל קריאה לשרת של פלטפורמת ה-AdTech. שימוש בכל הקהלים בהתאמה אישית במכשיר כדי ליצור עומס נתונים במכרז גם פותח את הסביבה העסקית לניצול לרעה על ידי ישויות זדוניות. התייחסנו לבעיות האלה בקטעים אופטימיזציה של גודל וצמצום ניצול לרעה בהמשך.
אופטימיזציה של גודל
ה-SDK של לקוח טכנולוגיית הפרסום אמור לארוז את הבייטים המוצפנים של adSelectionData
בקריאה לפי הקשר HTTP PUT/POST
שנשלחת לשרת של טכנולוגיית הפרסום. כדי לצמצם את זמן האחזור ואת העלות של זמן הנסיעה הלוך ושוב, צריך לצמצם את גודל adSelectionData
ככל האפשר בלי להשפיע על התועלת.
אנחנו מתכננים לבדוק את האופטימיזציות הבאות, ואולי להציג אותן בגרסאות הבאות, כדי לצמצם את הגודל של adSelectionData
:
מטען שימושי שנוצר בקבוצה קבועה של גדלים של קטגוריות עם מילוי: כדי למזער את הזליגה כתוצאה משינויים בגודל, ועדיין לאפשר קטגוריות של מטען שימושי קטנות יותר, מומלץ להשתמש בקטגוריות של גודל קבוע למטען השימושי שנוצר. אם מספר הקטגוריות יהיה קטן, למשל 7, דליפה של פחות מ-3 ביט של אנטרופיה תתרחש בכל קריאה ל-
getAdSelectionData
.אם הנתונים במכשיר חורגים מגודל הקטגוריה המקסימלי, המערכת תשתמש בשיטות שמפורטות בהמשך, כמו ערכי תעדוף, כדי להחליט אילו נתונים יוסרו.
הגדרות של הקונה: אנחנו בודקים את האפשרות לאפשר לקונים להגדיר את עומס העבודה (payload) לכל קונה. ההגדרה הזו שימושית לזיהוי המכרזים שבהם הקונה מעוניין להשתתף. אם אפשר, במהלך ההרשמה, פלטפורמת הפרסום של הקונה יכולה לרשום נקודת קצה שממנה Protected Audience תאחזר את הגדרת עומס העבודה בקצב קבוע מדי יום. לחלופין, ממשקי API לשמירה על הפרטיות יחשפו ממשק API כדי לאפשר לטכנולוגיות הפרסום של הקונה לרשום את נקודת הקצה הזו.
לאחר מכן, ההגדרה הזו תשמש כדי להעריך את התרומה של הקונה ל-
adSelectionData
שנוצר לכל בקשה שלgetAdSelectionData
.הגדרת המטען הייעודי (Payload) של הקונה תאפשר לקונים לציין:
- רשימת המוכרים המורשים: קהלים מותאמים אישית של קונים יתווספו לעומס הנתונים רק אם הקריאה ל-
getAdSelectionData
תבוצע על ידי מוכר ברשימת ההיתרים. אנחנו נאחזר את הגדרת עומס העבודה בקצב יומי כדי לשמור על עדכניות של רשימת ההיתרים. - מגבלת גודל לכל מוכר: הקונה יכול לציין מגבלת גודל לכל מוכר כדי לקבוע את גודל הנתונים שיישלחו במטען הייעודי כשמכרז מופעל על ידי מוכר מסוים. האפשרות הזו שימושית אם הקונה רוצה להקדיש יותר משאבים לעיבוד נתוני המכרזים של מוכרים מסוימים. השירות SellerFrontendService מעביר לכל BuyerFrontendService רק נתונים ספציפיים לקונה. כך, הגדרת מגבלת גודל לכל מוכר מאפשרת לקונה לשלוט באופן מפורש בכמות הנתונים שמוטמעים ומעובדים על ידי BuyerFrontendService של שרת הבידינג והמכרזים שלו במכרזים שמנוהלים על ידי מוכר.
- רשימת המוכרים המורשים: קהלים מותאמים אישית של קונים יתווספו לעומס הנתונים רק אם הקריאה ל-
הגדרה על ידי המוכר: אנחנו בודקים את האפשרות להגדיר מכרזים לכל מוכר, כדי לאפשר למוכרים להגדיר פרמטרים של מכרזים ולשלוט בגודל של נתוני העומס (payload) ובמשתתפים במכרז. אם זה אפשרי, במהלך ההרשמה, טכנולוגיית הפרסום של המוכר תוכל לציין את נקודת הקצה שממנה מערכת Protected Audience תוכל לאחזר את הגדרות המכרז לכל מוכר בקצב קבוע. לאחר מכן, ההגדרה הזו תשמש לקביעת ההרכב והמגבלות של
adSelectionData
שנוצר לכל בקשתgetAdSelectionData
.בדומה להגדרה של הקונה, הגדרה לכל מוכר תאפשר למוכרים לציין את קבוצת הקונים שהם מצפים לראות במכרז, ולציין מגבלות על התרומה של כל קונה לגודל של נתוני המטען.
הגדרת המכרז של המוכר תאפשר למוכרים לציין:
- רשימת הקונים המורשים: במכרזים שהמוכר התחיל, רק הקונים ברשימת ההיתרים יוכלו לתרום קהלים מותאמים אישית למכרז. צריך לעדכן את הגדרות המכרז מדי יום כדי שרשימה ההיתרים תהיה מעודכנת עם רשימת ההיתרים של הקונים בצד השרת.
- מגבלת גודל לכל קונה: המוכרים יכולים לציין מגבלה לכל קונה כדי לקבוע את גודל הנתונים שיועלו על ידי כל קונה בעומס הייעודי שנשלח אל SellerFrontendService. אם הקונה חורג מהמגבלה של הגודל לכל קונה, המערכת תשתמש בעדיפות של CustomAudience שהוגדרה בהגדרות של המטען הייעודי של הקונה כדי לקבל את הנתונים במסגרת המגבלות הצפויות.
- עדיפות לכל קונה: מאפשרת למוכרים להגדיר עדיפות לכל קונה. אם גודל המטען הייעודי יחרוג מהמגבלה, המערכת תשתמש בעדיפות של הקונה כדי לזהות אילו נתוני קונה יישמרו במטען הייעודי.
- מגבלת גודל מקסימלית למטען הייעודי (payload): למוכרים שונים יכולה להיות הקצאה שונה של משאבים, ויכול להיות שהם ירצו להגדיר מגבלת גודל מקסימלית למטען הייעודי (payload) של המכרז לכל בקשה. מגבלת הגודל המקסימלי תהיה בהתאם לקטגוריות הקבועות בגודל שהוגדרו על ידי Protected Audience API.
שינויים בקהל בהתאמה אישית
- ציון העדיפות של קהל מותאם אישית: מאפשרת לקונים לציין ערך עדיפות בקהל מותאם אישית. השדה
priority
ישמש לזיהוי קהלים מותאמים אישית שצריך לכלול במכרז, אם הקבוצה של קהלים מותאמים אישית של הקונה חורגת מהמגבלות לגבי מספר הקהלים לכל מוכר או לכל קונה. ערך עדיפות לא מצוין בקהל מותאם אישית יוגדר כברירת מחדל כ-0.0
.
- ציון העדיפות של קהל מותאם אישית: מאפשרת לקונים לציין ערך עדיפות בקהל מותאם אישית. השדה
שינויים בנתוני המטען הייעודי (payload)
- צמצום הנתונים שנשלחים במטען הייעודי: כפי שמפורט במאמר אופטימיזציה של מטען הייעודי בשירותי בידינג ובמכרזים, מטען ייעודי גדול יותר נובע מנתוני
ads
של קהלים מותאמים אישית, מאותות בידינג של משתמשים ומאותות של Android. כדי להקטין את עומסי התקשורת הגבוהים:- הלקוח שולח מזהי עיבוד של מודעות (במקום אובייקטים של מודעות) במטען הייעודי.
- הלקוח לא שולח נתוני מודעות במטען הייעודי.
- לא שולחים אותות בידינג של משתמשים בתוכן המשא של הלקוח.
- צמצום הנתונים שנשלחים במטען הייעודי: כפי שמפורט במאמר אופטימיזציה של מטען הייעודי בשירותי בידינג ובמכרזים, מטען ייעודי גדול יותר נובע מנתוני
אמנם האסטרטגיות שצוינו למעלה מאפשרות לטכנאי הפרסום להגדיר הגדרות אישיות כדי לנהל את ההרכב והמגבלות של עומס העבודה של adSelectionData
, אבל הן יכולות גם להפוך לגורם לשינוי הגודל של adSelectionData
על ידי שינוי הפרמטרים של ההגדרות האישיות. כדי למנוע זאת, ההגדרה תיאוחזר מדי יום על ידי Protected Audience מנקודת הקצה שהוגדרה.
אופטימיזציה של זמן האחזור
כדי שהמכרזים על השרתים יהיו שימושיים, אנחנו צריכים לוודא של-getAdSelectionData
API ול-persistAdSelectionResult
API יש זמן אחזור נמוך לכל קריאה. אנחנו שואפים לספק תמיכה בתכונות של ממשקי API בשנת 2023, אבל הגרסה הבאה שלנו תתמקד במדדי זמן אחזור ובאופטימיזציות של ממשקי ה-API.
אנחנו בודקים את השיטות הבאות כדי לשמור על זמן האחזור בגבולות הקבילים:
יצירה מראש של נתוני קהל מוגן לכל מוכר: מאחר שהגדרות המכרז של המוכר והגדרות עומס העבודה של הקונה יהיו יציבות למשך זמן רב (יומי), הפלטפורמה יכולה לחשב מראש ולאחסן את נתוני הקהל המוגן שעומדים בדרישות.
כדי לעשות זאת, הפלטפורמה תצטרך ליצור מנגנון למעקב אחרי עדכונים של קהלים מותאמים אישית ולשנות את הנתונים של הקהל המוגן שנוצרו מראש על סמך העדכונים. הפלטפורמה תצטרך גם להצהיר על יעדי SLO לגבי מרוץ העיכובים שיכול להיות לטכנולוגיית הפרסום בין עדכוני הקהלים המותאמים אישית לבין הצגת השינוי ב-
adSelectionData
שנוצר במכרז השרת.מכיוון שמכשיר מספק מודל מוגבל של חישוב משאבים עם עדיפויות שונות של תהליכים, אנחנו מבינים שצריך לספק את השירות הזה ליצירת קובצי האימג' מראש עם אמינות גבוהה והבטחות לגבי יעדי רמת השירות (SLO).
לאחר מכן, הנתונים של הקהל המוגן ייוצרו מראש על סמך
- הבעלים של הנכס מביעים הסכמה ליצירה מראש של נתוני Protected Audience.
- קונים שעומדים בדרישות להשתתפות במכרז שהתחיל מוכר מסוים.
- זיהוי קהלים מותאמים אישית לכל קונה, שייכללו במטען הייעודי (payload) על סמך:
- מגבלות גודל לכל קונה, תעדוף לכל קונה ומגבלות גודל מקסימליות שמוגדרות בהגדרות המוכר,
- מגבלה על הגודל של כל מוכר, עדיפות הקהל בהתאמה אישית מוגדרת בהגדרות של הקונה.
החלה מיידית של סינון שלילי: אם המוכר מעדיף זאת, הפלטפורמה יכולה לחשב מראש את הערך של
adSelectionData
על ידי יצירת נתונים מראש של קהל מוגן והחלת סינון שלילי על הקריאה הקריטיתgetAdSelectionData
. כך המוכרים יוכלו לאזן בין הפחתת זמן האחזור לבין קבלת נתונים לא עדכניים בסינון השלילי.הפלטפורמה יכולה לספק את התמיכה הזו על ידי מתן אפשרות ברירת מחדל בהגדרות המוכר עם מגבלה על זמן העדכון האחרון, ואפשרות לשינוי מברירת המחדל ב-
getAdSelectionData
כדי לאפשר חישוב עדכני יותר במקרה הצורך. לחלופין, הפלטפורמה יכולה לספק ממשק API נוסף להפעלה, שצריך להפעיל לפניgetAdSelectionData
כדי לחמם את המכרז.חישוב של עומס נתונים במספר מכרזים: בתרחישים מסוימים, עדיף להשתמש ב-API עם ביצועים טובים יותר בזמן אחזור, על חשבון זמן קצוב ארוך יותר לעדכון הנתונים. כדי לספק את זה, הפלטפורמה יכולה להציג API לאינטליגנציה מלאכותית כדי לחשב את נתוני העומס המועברים (payload) כולם ולספק למבצע הקריאה ההפניה לנתוני העומס המועברים (payload) המחושבים.
בקריאות הבאות ל-
getAdSelectionData
, מבצע הקריאה החוזרת יכול לספק הפניה לעומס המידע שחושב מראש, שישמש ליצירתadSelectionData
.
שלוש האסטרטגיות שצוינו למעלה נמצאות בשלב הניתוח הראשוני, והן נועדו לתאר את הכיוון שבו הפלטפורמה עשויה לפעול כדי לבצע אופטימיזציה לזמן אחזור. ככל שנמשיך לבחון פרופילים מפורטים יותר של זמן האחזור של דרישות ה-API ושל טכנולוגיות הפרסום, נמשיך להציע אסטרטגיות נוספות.
זיהוי וניכוי של ניצול לרעה
כפי שצוין בקטע 'שיקולים לגבי פרטיות', השדה adSelectionData
נוצר על סמך כל נתוני הקונה במכשיר.
עם זאת, אם כל נתוני הקונים במכשיר ישמשו ליצירת הפלט של adSelectionData
, ישות זדונית עשויה להתחזות לקונה וליצור נתוני קונים שמקורם בתרמית כדי לפגוע בביצועים של Android, להגדיל את עומס התעבורה כדי להגדיל את העלות של חברת טכנולוגיית הפרסום להפעלת מכרזים או להפעלת בידינג וכן הלאה.
צמצום הפגיעה
אמצעי הגנה מסוימים שצוינו בקטע 'שיקולים לגבי גודל', כמו הגדרת עומס עבודה של קונה שמכילה מוכרים ברשימת ההיתרים והגדרת מכרז של מוכר שמכילה קונים ברשימת ההיתרים, יכולים לעזור להחריג נתונים לא צפויים בעומס העבודה.
גם אמצעי מחשבה אחרים לגבי גודל, כמו מתן אפשרות ל-SSPs לציין את העדיפות של הקונה, הקצאת מכסה לכל קונה במטען הייעודי שנוצר והגדרת גודל מקסימלי לכל מטען ייעודי במכרז, יכולים לעזור לצמצם את ההשפעה של ניפוח זדוני של מטען הייעודי. הפעולות האלה נועדו לאפשר למפתחי טכנולוגיות הפרסום להגדיר עם אילו טכנולוגיות פרסום הם רוצים לשתף פעולה, ולהגדיר מגבלות על עומס העבודה שהם צריכים לעבד.
כפי שצוין קודם, כל הפתרונות שנועדו למנוע ניצול לרעה והגבלות על גודל חייבים לעמוד בדרישות של פרטיות.
זיהוי ישויות זדוניות
אמצעי המיטיגציה שצוינו למעלה מגינים על היצירה של adSelectionData
במכרזים בשרת, אבל הם לא עוזרים לזהות ישויות זדוניות או להגן על הפלטפורמה מפני ניצול לרעה, כמו יצירת מספר חסר תקדים של קהלים מותאמים אישית על ידי קונה.
כדי להבטיח את יציבות הפלטפורמה ואת תקינותה, אנחנו צריכים למצוא מנגנון לזיהוי ישויות זדוניות, לזיהוי דרכים לניצול לרעה ולזיהוי המוטיבציה להתקפות הספציפיות. בגרסאות הבאות נציג הסברים מפורטים על דרכים פוטנציאליות לניצול לרעה ועל ההגנות שמופעלות כדי למנוע אותן.