À qui s'adresse cet article ?
Cet article est une référence technique à l'itération actuelle de l'API Protected Audience expérimentale.
L'API Protected Audience est une présentation moins technique de la proposition, ainsi qu'un glossaire.
La démonstration de Protected Audience présente un tutoriel FLEDGE de base le déploiement.
Vidéo de démonstration Protected Audience explique le fonctionnement du code de démonstration et montre comment utiliser les outils pour les développeurs Chrome pour le débogage de l'API Protected Audience.
Qu'est-ce que Protected Audience ?
L'API Protected Audience est une proposition de la Privacy Sandbox destinée à diffuser le remarketing et les audiences personnalisées, conçu de sorte qu'il ne soit pas adapté des tiers pour suivre le comportement de navigation des utilisateurs sur les sites. L'API permet les enchères sur l'appareil le navigateur, afin de choisir des annonces pertinentes pour les sites Web précédemment visités par l'utilisateur.
Protected Audience est le premier test à être implémenté dans Chromium dans le TURTLEDOVE.
Le schéma ci-dessous présente le cycle de vie de FLEDGE:
<ph type="x-smartling-placeholder">Comment puis-je essayer Protected Audience ?
Démonstration de Protected Audience
Un tutoriel de déploiement de base de l'API Protected Audience sur des sites d'annonceurs et d'éditeurs est disponible à l'adresse protected-audience-demo.web.app.
La vidéo de démonstration explique le fonctionnement du code de démonstration et montre comment utiliser les outils pour les développeurs Chrome pour le débogage de l'API Protected Audience.
Participer à une phase d'évaluation de Protected Audience
Une phase d'évaluation de la pertinence et des mesures de la Privacy Sandbox disponible dans la version bêta de Chrome 101.0.4951.26 et ultérieure sur ordinateur pour l'API Protected Audience. Topics ; et Attribution Reporting.
Pour y participer, demandez un jeton d'évaluation Origin Trial.
Une fois inscrit à l'essai, vous pouvez tester l'API JavaScript Protected Audience sur les pages qui fournissent un jeton d'essai valide (par exemple, pour demander au navigateur de rejoindre un ou plusieurs groupes de centres d'intérêt) ; Ensuite, lancez des enchères publicitaires pour sélectionner et afficher une annonce.
La démonstration de l'API Protected Audience fournit un exemple basique de déploiement de l'API Protected Audience de bout en bout.
Fournissez un jeton d'essai pour chaque page sur laquelle vous souhaitez exécuter le code de l'API Protected Audience:
En tant que balise Meta dans la section <head> :
<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
En tant qu'en-tête HTTP:
Origin-Trial: TOKEN_GOES_HERE
En fournissant un jeton par programmation:
const otMeta = document.createElement('meta'); otMeta.httpEquiv = 'origin-trial'; otMeta.content = 'TOKEN_GOES_HERE'; document.head.append(otMeta);
Un iFrame exécutant du code Protected Audience (par exemple, un navigator.joinAdInterestGroup()
)
par un propriétaire de groupe de centres d'intérêt, devra fournir un jeton correspondant à son origine.
Informations proposées pour la première phase d'évaluation de l'API Protected Audience fournit plus de détails sur les objectifs du premier essai et explique les fonctionnalités prises en charge.
Tester cette API
Vous pouvez tester Protected Audience pour un seul utilisateur dans la version bêta 101.0.4951.26 de Chrome ou version ultérieure sur ordinateur:
- En activant toutes les API Ad Privacy sous
chrome://settings/adPrivacy
- En définissant des indicateurs à partir de la ligne de commande.
Afficher des annonces dans des cadres iFrame ou cloisonnés
Les annonces peuvent être affichées dans un <iframe>
ou un <fencedframe>
,
en fonction des options définies.
Pour utiliser <fencedframe>
afin d'afficher des annonces:
--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,FencedFrames
Pour utiliser <iframe>
afin d'afficher des annonces:
--enable-features=InterestGroupStorage,AdInterestGroupAPI,Fledge,AllowURNsInIframes --disable-features=FencedFrames
Incluez l'indicateur BiddingAndScoringDebugReportingAPI
pour activer les méthodes temporaires de création de rapports de perte/gagnement de débogage.
Exécuter Chromium avec des indicateurs explique comment définir des indicateurs lors de l'exécution de Chrome et d'autres navigateurs basés sur Chromium à partir de la commande ligne. La liste complète des indicateurs Protected Audience est disponible sur Recherche de code Chromium
Quelles sont les fonctionnalités compatibles avec la dernière version de Chrome ?
L'API Protected Audience est disponible derrière les flags de fonctionnalité dans Chromium en tant que pour tester les fonctionnalités suivantes de la proposition Protected Audience:
- Groupes de centres d'intérêt: stockés par le navigateur, avec les métadonnées associées pour configurer les enchères des annonces et le rendu.
- Enchères sur l'appareil par les acheteurs (DSP ou annonceur): basées sur les groupes de centres d'intérêt et les signaux enregistrés auprès du vendeur.
- Sélection des annonces sur l'appareil par le vendeur (SSP ou éditeur): en fonction des enchères et des des métadonnées aux acheteurs.
- Rendu des annonces dans une version temporairement assouplie des cadres cloisonnés: avec accès au réseau et pour l'affichage des annonces.
La vidéo explicative sur l'API fournit plus de détails. sur la prise en charge et les contraintes des fonctionnalités.
Autorisations liées aux groupes de centres d'intérêt
Par défaut, l'implémentation actuelle de Protected Audience autorise l'appel de joinAdInterestGroup()
depuis
n'importe où sur la page, même à partir d'iFrames inter-domaines. À l'avenir, une fois que les propriétaires de sites auront eu le temps
pour ajuster ses règles d'autorisation pour les cadres iFrame inter-domaines, elle prévoit d'interdire les appels provenant des
sur plusieurs domaines, comme expliqué dans notre vidéo d'explication.
Service clé-valeur
Lors des enchères publicitaires Protected Audience, le navigateur peut accéder à un service clé-valeur qui renvoie des paires clé-valeur simples pour fournir des informations à un acheteur publicitaire, budget de la campagne. La proposition Protected Audience exige que ce serveur "n'effectue aucune journalisation au niveau des événements et n'a aucun autre effet secondaire basé sur ces de recherche".
Le code du service clé-valeur Protected Audience est désormais disponible dans un dépôt GitHub de la Privacy Sandbox. Ce service peut être utilisé par les développeurs Chrome et Android. Consultez l'annonce de blog pour connaître l'état d'avancement. Pour en savoir plus sur le service clé-valeur Protected Audience, consultez la présentation de l'API et celle du modèle de confiance.
Pour les tests initiaux, le modèle Bring Your Own Server est utilisé. À long terme, les technologies publicitaires devront utiliser les services clé-valeur Open Source Protected Audience qui s'exécutent dans des environnements d'exécution sécurisés pour récupérer des données en temps réel.
Afin de garantir que l'écosystème dispose de suffisamment de temps pour effectuer des tests, nous ne prévoyons pas d'exiger l'utilisation des TEE ou services clés-valeurs Open Source avant quelque temps après l'abandon des cookies tiers. Nous informerons bien les développeurs qu'ils doivent commencer les tests et l'adoption avant cette transition.
Détecter la compatibilité des fonctionnalités
Avant d'utiliser l'API, vérifiez si elle est compatible avec le navigateur et si elle est disponible dans le document:
'joinAdInterestGroup' in navigator &&
document.featurePolicy.allowsFeature('join-ad-interest-group') &&
document.featurePolicy.allowsFeature('run-ad-auction') ?
console.log('navigator.joinAdInterestGroup() is supported on this page') :
console.log('navigator.joinAdInterestGroup() is not supported on this page');
Comment puis-je désactiver Protected Audience ?
Vous pouvez bloquer l'accès à l'API Protected Audience en tant que propriétaire de site ou en tant qu'utilisateur individuel.
Comment les sites peuvent-ils contrôler l'accès ?
À terme, Protected Audience exigera des sites qu'ils définissent des règles d'autorisation pour permettre la disponibilité de la fonctionnalité Protected Audience. Ainsi, des tiers arbitraires ne pourront pas utiliser l'API sans l'autorisation connaissances. Toutefois, pour faciliter les tests lors de la première phase d'évaluation, cette exigence est annulée par défaut. Les sites qui souhaitent désactiver explicitement la fonctionnalité Protected Audience pendant la période de test peuvent utiliser la règle d'autorisation appropriée pour bloquer l'accès.
Il existe deux règles d'autorisation Protected Audience qui peuvent être définies indépendamment:
join-ad-interest-group
active/désactive la fonctionnalité permettant d'ajouter un navigateur aux groupes de centres d'intérêtrun-ad-auction
active/désactive la fonctionnalité permettant de lancer des enchères sur l'appareil
Vous pouvez désactiver complètement l'accès aux API Protected Audience dans les contextes propriétaires en spécifiant les éléments suivants : règle d'autorisation dans un en-tête de réponse HTTP:
Permissions-Policy: join-ad-interest-group=(), run-ad-auction=()
Vous pouvez désactiver l'utilisation des API dans un iFrame en ajoutant l'attribut allow
suivant à un
élément iFrame:
<iframe src="https://example.com" allow="join-ad-interest-group 'none'; run-ad-auction 'none'"></iframe>
La section Règles concernant les autorisations d'évaluation de la première phase d'évaluation de l'API Protected Audience proposée fournit plus de détails.
Désactivation par l'utilisateur
Un utilisateur peut bloquer l'accès à l'API Protected Audience et à d'autres fonctionnalités de la Privacy Sandbox à l'aide de n'importe quelle mécanismes suivants:
- Désactiver les essais Privacy Sandbox dans les paramètres de Chrome: Paramètres >
Sécurité et confidentialité > Privacy Sandbox Elle est également accessible à l'adresse
chrome://settings/adPrivacy
. - Désactivez les cookies tiers dans les paramètres de Chrome: Paramètres > Sécurité et confidentialité.
- Définissez l'option Cookies et autres données des sites sur "Bloquer les cookies tiers". ou "Bloquer tous les cookies"
de
chrome://settings/cookies
. - Utilisez le mode navigation privée.
La vidéo explicative de l'API Protected Audience fournit plus de détails sur les éléments de conception de l'API et explique comment l'API cherche à atteindre les objectifs de confidentialité.
Déboguer les Worklets Protected Audience
À partir de Chrome Canary 98.0.4718.0, il est possible de déboguer les Worklets Protected Audience dans les outils pour les développeurs Chrome.
La première étape consiste à définir des points d'arrêt via une nouvelle catégorie dans le volet Event Listener Breakpoints (Points d'arrêt de l'écouteur d'événements). dans le panneau Sources.
Lorsqu'un point d'arrêt est déclenché, l'exécution est interrompue avant la première instruction au niveau supérieur de la script de Worklet. Vous pouvez utiliser des points d'arrêt ou des commandes d'étape standards pour accéder aux enchères, aux scores et aux rapports. elle-même.
Les scripts de Worklet actifs s'affichent également dans le panneau "Fils de discussion".
Étant donné que certains Worklets peuvent s'exécuter en parallèle, plusieurs threads peuvent se retrouver dans la "paused" l'indiquer ici ; vous pouvez utiliser la liste des threads pour passer d'un thread à l'autre, et les reprendre ou les inspecter de plus près approprié.
Observer les événements Protected Audience
Dans le panneau "Application" des outils pour les développeurs Chrome, vous pouvez observer le groupe de centres d'intérêt et la mise aux enchères Protected Audience événements.
Si vous accédez au site de démonstration de l'API Protected Audience
dans un navigateur sur lequel Protected Audience est activé, les outils de développement affichent des informations sur l'événement join
.
Si vous consultez le site de démonstration de l'éditeur de l'API Protected Audience,
dans un navigateur sur lequel Protected Audience est activé, les outils de développement affichent des informations sur les événements bid
et win
.
Comment fonctionne l'API Protected Audience ?
Dans cet exemple, un utilisateur parcourt le site Web d'un fabricant de vélos personnalisés, puis visite un site d'actualités. et voit une annonce pour un nouveau vélo du fabricant.
1. Un utilisateur consulte le site d'un annonceur.
Imaginez qu'un utilisateur consulte le site Web d'un fabricant de vélos personnalisés (l'annonceur dans cet exemple) et passe du temps sur la page produit d'un vélo en acier fabriqué à la main. Vous bénéficiez ainsi un fabricant de vélos avec une opportunité de remarketing
2. Le navigateur de l'utilisateur est invité à ajouter un groupe de centres d'intérêt
Section explicative:Les navigateurs enregistrent les groupes de centres d'intérêt
La plate-forme côté demande (DSP) de l'annonceur (ou l'annonceur)
lui-même) appelle navigator.joinAdInterestGroup()
pour demander au navigateur d'ajouter un groupe d'intérêt
liste des groupes dont le navigateur est membre. Dans cet exemple, le groupe s'appelle custom-bikes
.
le propriétaire est dsp.example
. Le propriétaire du groupe d'intérêt (dans ce cas, la DSP) est
acheteur à la mise en concurrence des annonces décrite à l'étape 4.
L'appartenance à un groupe de centres d'intérêt est stockée par le navigateur sur l'appareil de l'utilisateur et n'est pas partagée avec le
le fournisseur du navigateur
ou toute autre personne.
joinAdInterestGroup()
a besoin de l'autorisation de:
- Le site visité
- Le propriétaire du groupe de centres d'intérêt
Par exemple, malicious.example
ne doit pas pouvoir appeler
joinAdInterestGroup()
avec dsp.example
comme propriétaire, sans l'autorisation de
dsp.example
Autorisation du site consulté
Même origine: par défaut, l'autorisation est implicitement accordée pour les appels joinAdInterestGroup()
de
ont la même origine que le site consulté, c'est-à-dire qu'elles ont la même origine que le frame de premier niveau du
page actuelle. Les sites peuvent utiliser un en-tête de règle d'autorisation Protected Audience
Directive join-ad-interest-group
pour désactiver les appels joinAdInterestGroup()
.
Cross-origin: appel de joinAdInterestGroup()
à partir d'origines différentes de l'actuelle
la page ne peut réussir que si le site consulté a défini une règle d'autorisations qui autorise les appels à
joinAdInterestGroup()
à partir d'iFrames multi-origines
Autorisation du propriétaire du groupe de centres d'intérêt
L'autorisation de propriétaire d'un groupe de centres d'intérêt est accordée implicitement en appelant joinAdInterestGroup()
à partir d'un iFrame ayant la même origine que celle du propriétaire du groupe de centres d'intérêt. Par exemple, un dsp.example
L'iFrame peut appeler joinAdInterestGroup()
pour les groupes de centres d'intérêt appartenant à dsp.example
.
La proposition est que joinAdInterestGroup()
peut être exécuté sur une page ou un iFrame sur le domaine du propriétaire, ou
être délégués à d'autres domaines fournis à l'aide d'une liste associée à une URL .well-known
.
Utiliser navigateur.joinAdInterestGroup()
Voici un exemple d'utilisation de l'API:
const interestGroup = {
owner: 'https://dsp.example',
name: 'custom-bikes',
biddingLogicUrl: ...,
biddingWasmHelperUrl: ...,
dailyUpdateUrl: ...,
trustedBiddingSignalsUrl: ...,
trustedBiddingSignalsKeys: ['key1', 'key2'],
userBiddingSignals: {...},
ads: [bikeAd1, bikeAd2, bikeAd3],
adComponents: [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2],
};
navigator.joinAdInterestGroup(interestGroup, 7 * kSecsPerDay);
La taille de l'objet interestGroup
transmis à la fonction ne doit pas dépasser 50 Kio, sinon
l'appel échouera. Le deuxième paramètre indique la durée du groupe d'intérêt, qui est limitée à 30 jours.
jours. Les appels successifs écrasent les valeurs précédemment stockées.
Propriétés des groupes de centres d'intérêt
Propriété | Obligatoire | Exemple | Rôle |
---|---|---|---|
owner |
Obligatoire | 'https://dsp.example' |
Origine du propriétaire du groupe de centres d'intérêt. |
name |
Obligatoire | 'custom-bikes' |
Nom du groupe de centres d'intérêt. |
biddingLogicUrl ** |
Facultatif* | 'https://dsp.example/bid/custom-bikes/bid.js' |
URL pour l'exécution du code JavaScript d'enchères dans le Worklet. |
biddingWasmHelperUrl ** |
Facultatif* | 'https://dsp.example/bid/custom-bikes/bid.wasm' |
URL du code WebAssembly généré par biddingLogicUrl . |
dailyUpdateUrl ** |
Facultatif | 'https://dsp.example/bid/custom-bikes/update' |
URL qui renvoie un fichier JSON pour mettre à jour les attributs des groupes de centres d'intérêt. (voir Mettre à jour le groupe de centres d'intérêt). |
trustedBiddingSignalsUrl ** |
Facultatif | 'https://dsp.example/trusted/bidding-signals' |
URL de base pour les demandes de clé-valeur envoyées au serveur de confiance de l'enchérisseur. |
trustedBiddingSignalsKeys |
Facultatif | ['key1', 'key2' ...] |
Clés pour les requêtes adressées à un serveur de confiance clé-valeur. |
userBiddingSignals |
Facultatif | {...} |
Métadonnées supplémentaires que le propriétaire peut utiliser lors de la définition des enchères. |
ads |
Facultatif* | [bikeAd1, bikeAd2, bikeAd3] |
Annonces susceptibles d'être diffusées pour ce groupe de centres d'intérêt. |
adComponents |
Facultatif | [customBike1, customBike2, bikePedal, bikeFrame1, bikeFrame2] |
Composants d'annonces composées de plusieurs éléments. |
* Toutes les propriétés sont facultatives, à l'exception de owner
et name
. biddingLogicUrl
et ads
sont facultatifs, mais obligatoires pour participer à une mise aux enchères. Il peut y avoir des cas d'utilisation
créer un groupe de centres d'intérêt sans ces propriétés. Par exemple, le propriétaire d'un groupe de centres d'intérêt peut
ajouter un navigateur à un groupe de centres d'intérêt pour une campagne qui n'est pas encore diffusée, ou pour certains
toute utilisation ultérieure, ou
leur budget publicitaire peut être temporairement épuisé.
** Les URL biddingLogicUrl
, biddingWasmHelperUrl
, dailyUpdateUrl
et trustedBiddingSignalsUrl
doivent avoir la même origine que le propriétaire. Les URL ads
et adComponents
ne sont pas soumises à cette contrainte.
Mettre à jour les attributs des groupes de centres d'intérêt
dailyUpdateUrl
spécifie un serveur Web qui renvoie un fichier JSON définissant les propriétés des groupes d'intérêt.
correspondant à l'objet de groupe de centres d'intérêt transmis à navigator.joinAdInterestGroup()
. Ce
fournit au propriétaire du groupe un mécanisme permettant de mettre à jour périodiquement les attributs du
un groupe d'intérêt. Dans la mise en œuvre actuelle,
les attributs suivants peuvent être modifiés:
biddingLogicUrl
biddingWasmHelperUrl
trustedBiddingSignalsUrl
trustedBiddingSignalsKeys
ads
priority
Tout champ non spécifié dans le fichier JSON ne sera pas écrasé. Seuls les champs spécifiés dans le fichier JSON sont
mis à jour, alors que l'appel de navigator.joinAdInterestGroup()
écrase tous les groupes de centres d'intérêt existants.
Les mises à jour reposent sur le principe du "meilleur effort" et peuvent échouer dans les conditions suivantes:
- Délai avant expiration de la requête réseau (30 secondes actuellement).
- Autre défaillance du réseau.
- Échec de l'analyse JSON.
Les mises à jour peuvent également être annulées si leur durée de mise à jour est trop longue. n'impose aucune limitation du débit pour les mises à jour annulées (résidentes). Les mises à jour sont limitées à un (1 par jour au maximum). Les mises à jour qui échouent en raison d'erreurs réseau sont relancées au bout d'une heure. les mises à jour qui échouent en raison d'une déconnexion d'Internet font l'objet d'une nouvelle tentative immédiatement lors de la reconnexion.
Mises à jour manuelles
Les mises à jour des groupes de centres d'intérêt appartenant à l'origine du frame actuel peuvent être déclenchées manuellement via
navigator.updateAdInterestGroups()
La limitation du débit empêche les mises à jour trop fréquentes:
les appels répétés à navigator.updateAdInterestGroups()
n'ont aucun effet tant que la limite de débit n'a pas été atteinte
(1 jour actuellement) s'est écoulée. La limite de débit est réinitialisée si
navigator.joinAdInterestGroup()
est rappelé pour le même groupe de centres d'intérêt owner
et name
.
Mises à jour automatiques
Tous les groupes d'intérêt chargés pour une mise aux enchères sont mis à jour automatiquement une fois la mise aux enchères terminée.
soumis aux mêmes limites de débit que les mises à jour manuelles. Pour chaque propriétaire possédant au moins un groupe de centres d'intérêt
à des enchères, la méthode navigator.updateAdInterestGroups()
est appelée à partir d'un
iFrame dont l'origine correspond à ce propriétaire.
Spécifier des annonces pour un groupe de centres d'intérêt
Les objets ads
et adComponents
incluent une URL pour une création publicitaire et, éventuellement, arbitraires
de métadonnées pouvant être utilisées au moment de l'enchère. Exemple :
{
renderUrl: 'https://cdn.example/.../bikeAd1.html',
metadata: bikeAd1metadata // optional
}
Comment les acheteurs définissent-ils des enchères ?
Le script biddingLogicUrl
fourni par le propriétaire d'un groupe d'intérêt doit inclure un generateBid()
.
. Lorsqu'un vendeur d'espace publicitaire appelle navigator.runAdAuction()
, generatedBid()
est appelée une fois pour chacun des groupes de centres d'intérêt dont le navigateur est membre, si l'intérêt
le propriétaire du groupe est invité à enchérir. En d'autres termes, generateBid()
est appelé une fois pour chaque candidat.
annonce. Le vendeur fournit une propriété decisionLogicUrl
pour le paramètre de configuration des enchères transmis.
à navigator.runAdAuction()
. Le code à cette URL doit inclure une fonction scoreAd()
, qui est
pour chaque enchérisseur participant aux enchères, pour noter chacune des enchères renvoyées par generateBid()
.
Le script biddingLogicUrl
fourni par un acheteur d'espace publicitaire doit inclure une fonction generateBid()
.
Cette fonction est appelée une fois pour chaque annonce candidate. runAdAuction()
vérifie individuellement chaque annonce, ainsi que l'enchère et les métadonnées associées, puis attribue à l'annonce
le score de désirabilité numérique.
generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
...
return {
ad: adObject,
bid: bidValue,
render: renderUrl,
adComponents: [adComponentRenderUrl1, ...]
};
}
generateBid()
utilise les arguments suivants :
interestGroup
Objet transmis àjoinAdInterestGroup()
par l'acheteur d'annonces. (Le groupe d'intérêt peut être modifié viadailyUpdateUrl
.)
auctionSignals
Propriété de l'argument mise aux enchères transmise ànavigator.runAdAuction()
par le vendeur d'espace publicitaire. Il fournit des informations sur le contexte de la page (par exemple, la taille de l'annonce et la référence éditeur, le type d'enchère (premier ou second prix), ainsi que d'autres de métadonnées.
perBuyerSignals
Comme pourauctionSignals
, une propriété de la configuration des enchères argument transmis ànavigator.runAdAuction()
par le vendeur. Cela peut fournir du contexte du serveur de l'acheteur à propos de la page. Si le vendeur est une SSP, effectue un appel d'enchères en temps réel vers les serveurs de l'acheteur et transmet la réponse. contacte directement le serveur de l'acheteur. Si c'est le cas, l'acheteur peut vérifier un code cryptographique signature de ces signaux dans generateBid() afin d'assurer une protection contre la falsification.
trustedBiddingSignals
Un objet dont les clés sont lestrustedBiddingSignalsKeys
pour la groupe d'intérêt et dont les valeurs sont renvoyées dans la requêtetrustedBiddingSignals
.
browserSignals
Objet construit par le navigateur, qui peut inclure des informations sur la page le contexte (tel que l'hostname
de la page actuelle, que le vendeur pourrait falsifier) et les données pour le groupe d'intérêt lui-même (par exemple, l'enregistrement de la date à laquelle le groupe a précédemment remporté une enchère, afin de limitation de la fréquence d'exposition sur l'appareil).
L'objet browserSignals
possède les propriétés suivantes:
{
topWindowHostname: 'publisher.example',
seller: 'https://ssp.example',
joinCount: 3,
bidCount: 17,
prevWins: [[time1,ad1],[time2,ad2],...],
wasmHelper: ... /* WebAssembly.Module object based on interest group's biddingWasmHelperUrl. */
dataVersion: 1, /* Data-Version value from the buyer's Key/Value service response(s). */
}
Pour calculer une valeur bid
, le code dans generateBid()
peut utiliser les propriétés de l'objet
paramètres. Exemple :
function generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
return {
...
bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
...
}
}
generateBid()
renvoie un objet avec quatre propriétés:
ad
Métadonnées arbitraires concernant l'annonce, telles que les informations que le vendeur s'attend à obtenir sur cette enchère ou dans votre création publicitaire. Le vendeur](/privacy-sandbox/resources/glossary#ssp) utilise ces informations pour ses enchères et ses décisions. dans votre création publicitaire. Le vendeur utilise ces informations pour ses enchères et ses décisions. logique.
bid
Enchère numérique qui participera à la mise aux enchères. Le vendeur doit être en mesure de comparer les enchères de différents acheteurs. Par conséquent, les enchères doivent être exprimées dans l'unité choisie par le vendeur (par exemple, "USD par mille"). Si l'enchère est nulle ou négative, le groupe d'intérêt ne participera pas au aux enchères du vendeur. Grâce à ce mécanisme, l'acheteur peut appliquer n'importe quelle règle d'annonceur leurs annonces peuvent être diffusées ou non.
render
URL (ou liste d'URL) qui sera utilisée pour afficher la création si cette enchère remporte l'enchère. (voir l'article Annonces composées de plusieurs éléments). dans la vidéo d'explication de l'API.) La valeur doit correspondre aurenderUrl
de l'un des des annonces définies pour le groupe de centres d'intérêt.
adComponents
Une liste facultative de 20 composants maximum pour des annonces composées de plusieurs éléments, provenant de la propriétéadComponents
de l'argument de groupe d'intérêts transmis ànavigator.joinAdInterestGroup()
.
Demander à un navigateur de quitter un groupe de centres d'intérêt
Le propriétaire d'un groupe de centres d'intérêt peut demander qu'un navigateur soit supprimé d'un groupe de centres d'intérêt. Dans d'autres le navigateur est invité à supprimer le groupe d'intérêt de la liste de ceux dont il fait partie.
navigator.leaveAdInterestGroup({
owner: 'https://dsp.example',
name: 'custom-bikes'
});
Si un utilisateur revient sur le site et a demandé au navigateur d'ajouter un groupe de centres d'intérêt, le propriétaire de ce groupe
peut appeler la fonction navigator.leaveAdInterestGroup()
pour demander au navigateur de supprimer le groupe de centres d'intérêt.
Le code d'une annonce peut également appeler cette fonction pour son groupe de centres d'intérêt.
3. Il consulte un site qui vend de l'espace publicitaire.
Plus tard, l'utilisateur visite un site qui vend des espaces publicitaires, dans cet exemple un site Web d'actualités. Le site comporte l'inventaire publicitaire, qu'il vend via le programmatique à l'aide de enchères en temps réel.
4. Mise en concurrence des annonces effectuée dans le navigateur
Section explicative:Les vendeurs effectuent des enchères sur l'appareil
Les enchères publicitaires sont probablement menées par la SSP de l'éditeur. l'éditeur lui-même. L'objectif de la mise en concurrence est de sélectionner l'annonce la plus appropriée pour l'espace publicitaire disponible sur la page active. L'enchère tient compte des groupes d'intérêt navigateur, ainsi que les données des acheteurs de l'espace publicitaire et des vendeurs des services clé-valeur.
Le vendeur d'espace publicitaire envoie une demande au navigateur de l'utilisateur pour lancer une mise en concurrence des annonces en appelant
navigator.runAdAuction()
Exemple :
const auctionConfig = {
seller: 'https://ssp.example',
decisionLogicUrl: ...,
trustedScoringSignalsUrl: ...,
interestGroupBuyers: ['https://dsp.example', 'https://buyer2.example', ...],
auctionSignals: {...},
sellerSignals: {...},
sellerTimeout: 100,
perBuyerSignals: {
'https://dsp.example': {...},
'https://another-buyer.example': {...},
...
},
perBuyerTimeouts: {
'https://dsp.example': 50,
'https://another-buyer.example': 200,
'*': 150,
...
},
componentAuctions: [
{
'seller': 'https://some-other-ssp.example',
'decisionLogicUrl': ...,
...
},
...
]
};
const auctionResultPromise = navigator.runAdAuction(auctionConfig);
runAdAuction()
renvoie une promesse qui se résout en un URN (urn:uuid:<something>
) qui représente le
le résultat des enchères publicitaires. Elle ne peut être décodée par le navigateur que lorsqu'elle est transmise à un frame cloisonné.
pour l'affichage: la page de l'éditeur ne peut pas inspecter l'annonce gagnante.
Le script decisionLogicUrl
examine chaque annonce, ainsi que l'enchère qui lui est associée.
des métadonnées, une par une, puis lui attribue un score numérique de désirabilité.
auctionConfig
établissements
Propriété | Obligatoire | Exemple | Rôle |
---|---|---|---|
seller |
Obligatoire | 'https://ssp.example' |
Origine du vendeur. |
decisionLogicUrl |
Obligatoire | 'https://ssp.example/auction-decision-logic.js' |
URL du code JavaScript du Worklet d'enchères. |
trustedScoringSignalsUrl |
Facultatif | 'https://ssp.example/scoring-signals' |
URL du serveur de confiance du vendeur. |
interestGroupBuyers* |
Obligatoire | ['https://dsp.example', 'https://buyer2.example', ...] |
Origines de tous les propriétaires de groupes de centres d'intérêt invités à enchérir dans l'enchère. |
auctionSignals |
Facultatif | {...} |
Informations sur le vendeur concernant le contexte de la page, le type d'enchères, etc. |
sellerSignals |
Facultatif | {...} |
Informations basées sur les paramètres de l'éditeur, envoi d'une demande d'annonce contextuelle, etc. |
sellerTimeout |
Facultatif | 100 |
Durée d'exécution maximale (ms) du script scoreAd() du vendeur. |
perBuyerSignals |
Facultatif | {'https://dsp.example': {...}, |
Signaux contextuels concernant la page de chaque acheteur, provenant de leur serveur. |
perBuyerTimeouts |
Facultatif | 50 |
Durée d'exécution maximale (ms) des scripts generateBid() d'un acheteur spécifique. |
componentAuctions |
Facultatif | [{'seller': 'https://www.some-other-ssp.com', |
Autres configurations pour les enchères de composants. |
* Le vendeur peut spécifier interestGroupBuyers: '*'
pour autoriser tous les groupes d'intérêt à définir des enchères.
Les annonces sont ensuite acceptées ou refusées en fonction de critères autres que l'inclusion du propriétaire du groupe de centres d'intérêt.
Par exemple, le vendeur peut examiner les créations publicitaires pour s'assurer qu'elles respectent ses règles.
** additionalBids
n'est pas compatible avec l'implémentation actuelle de Protected Audience. Lisez l'article sur la mise en concurrence
de la section "Participants"
Explications sur Protected Audience.
Comment les annonces sont-elles sélectionnées ?
Le code decisionLogicUrl
(une propriété de l'objet de configuration des enchères transmis à
runAdAuction()
) doit inclure une fonction scoreAd()
. Elle est exécutée une fois pour chaque annonce
pour déterminer son souhait.
scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, browserSignals) {
...
return desirabilityScoreForThisAd;
}
scoreAd()
utilise les arguments suivants :
adMetadata
Métadonnées arbitraires fournies par l'acheteur.
bid
Valeur d'enchère numérique.
auctionConfig
Objet de configuration des enchères transmis ànavigator.runAdAuction()
.
trustedScoringSignals
Valeurs récupérées au moment de l'enchère sur le serveur de confiance du vendeur représentant l'opinion du vendeur sur l'annonce
browserSignals
Objet construit par le navigateur, comprenant les informations que celui-ci connaît et que le script d'enchères du vendeur est susceptible de vérifier:
{
topWindowHostname: 'publisher.example',
interestGroupOwner: 'https://dsp.example',
renderUrl: 'https://cdn.example/render',
adComponents: ['https://cdn.com/ad-component-1', ...],
biddingDurationMsec: 12,
dataVersion: 1 /* Data-Version value from the seller's Key/Value service response. */
}
Avant le début d'une enchère, le vendeur trouve la meilleure annonce contextuelle pour l'espace publicitaire disponible. Fait partie de
sa logique scoreAd()
consiste à rejeter toute annonce qui ne peut pas battre la annonce contextuelle gagnante.
5. Le vendeur et les acheteurs participants reçoivent des données en temps réel du service clé-valeur.
Section explicative:Récupérer des données en temps réel à partir du service clé-valeur Protected Audience
Lors d'enchères publicitaires, le vendeur de l'espace publicitaire peut obtenir des données en temps réel sur des créations spécifiques en fonction de
en envoyant une requête à un service clé-valeur à l'aide de la propriété trustedScoringSignalsUrl
de
un argument de configuration des enchères transmis à navigator.runAdAuction()
, avec les clés
à partir des propriétés renderUrl
de toutes les entrées des champs ads
et adComponents
de toutes
de groupes d'intérêts lors des enchères.
De même, un acheteur d'espace publicitaire peut demander des données en temps réel au service clé-valeur à l'aide de la méthode
Propriétés trustedBiddingSignalsUrl
et trustedBiddingSignalsKeys
de l'argument de groupe de centres d'intérêt
transmis à navigator.joinAdInterestGroup()
.
Lorsque la méthode runAdAuction()
est appelée, le navigateur envoie une demande au serveur de confiance de chaque acheteur d'annonces. La
L'URL de la requête peut se présenter comme suit:
https://kv-service.example/getvalues?hostname=publisher.example&keys=key1,key2
- L'URL de base provient de
trustedBiddingSignalsUrl
. - Le
hostname
est fourni par le navigateur. - La valeur
keys
est issue detrustedBiddingSignalsKeys
.
La réponse à cette requête est un objet JSON qui fournit des valeurs pour chacune des clés.
6. L'annonce gagnante s'affiche.
Section explicative:Les navigateurs diffusent l'annonce gagnante
Comme décrit précédemment, la promesse renvoyée par runAdAuction()
résout un URN.
qui est transmis à un frame cloisonné pour l'affichage, et le site affiche
l'annonce gagnante.
7. Le résultat de l'enchère est indiqué
Section explicative:Rapports au niveau des événements (pour l'instant)
Résultat des rapports du vendeur
Section explicative:Rapports sur l'affichage du vendeur
Le code JavaScript du vendeur fourni à decisionLogicUrl
(qui a également fourni scoreAd()
) peut
inclure une fonction reportResult()
pour indiquer le résultat de l'enchère ;
reportResult(auctionConfig, browserSignals) {
...
return signalsForWinner;
}
Les arguments transmis à cette fonction sont les suivants:
auctionConfig
Objet de configuration des enchères transmis ànavigator.runAdAuction()
.browserSignals
Objet construit par le navigateur et fournissant des informations sur l'enchère. Exemple:{ 'topWindowHostname': 'publisher.example', 'interestGroupOwner': 'https://dsp.example', 'renderUrl': 'https://cdn.example/url-of-winning-creative.wbn', 'bid:' <bidValue>, 'desirability': <winningAdScore> }
La valeur renvoyée par cette fonction est utilisée comme argument sellerSignals
pour l'enchère
fonction reportWin()
.
Résultat des rapports sur l'enchérisseur ayant remporté l'enchère
Section explicative:Créer des rapports d'acheteur sur l'affichage et les événements d'annonce
Le code JavaScript de l'enchérisseur gagnant (qui a également fourni generateBid()
) peut inclure un
reportWin()
pour indiquer le résultat des enchères.
reportWin(auctionSignals, perBuyerSignals, sellerSignals, browserSignals) {
...
}
Les arguments transmis à cette fonction sont les suivants:
auctionSignals
etperBuyerSignals
Les mêmes valeurs ont été transmises àgenerateBid()
pour l'enchérisseur gagnant.
sellerSignals
La valeur renvoyée pourreportResult()
, qui donne au vendeur de transmettre des informations à l'acheteur.
browserSignals
Objet construit par le navigateur et fournissant des informations sur l'enchère. Exemple:{ 'topWindowHostname': 'publisher.example', 'seller': 'https://ssp.example', 'interestGroupOwner': 'https://dsp.example', 'interestGroupName': 'custom-bikes', 'renderUrl': 'https://cdn.example/winning-creative.wbn', 'bid:' <bidValue> }
Implémentation temporaire de rapports de perte/gagnement
Pour créer des rapports sur les enchères, deux méthodes sont disponibles temporairement dans Chrome:
forDebuggingOnly.reportAdAuctionLoss()
forDebuggingOnly.reportAdAuctionWin()
Chacune de ces méthodes utilise un seul argument: une URL à récupérer une fois l'enchère terminée. Ils peuvent
être appelé plusieurs fois, à la fois dans scoreAd()
et generateBid()
, avec des arguments d'URL différents.
Chrome n'envoie des rapports de débogage de perte/gagnement que lorsqu'une enchère est terminée. Si une enchère est annulée (en raison d'une nouvelle navigation, par exemple), aucun rapport ne sera généré.
Ces méthodes sont disponibles par défaut dans Chrome. Pour pouvoir tester les méthodes, activez toutes les API Ad Privacy sous chrome://settings/adPrivacy
. Si vous exécutez Chrome avec des indicateurs de ligne de commande pour activer Protected Audience, vous devez
activer explicitement les méthodes en incluant l'option BiddingAndScoringDebugReportingAPI
. Si le
n'est pas activé, les méthodes seront toujours disponibles, mais ne feront rien.
8. Un clic sur une annonce est enregistré
Un clic sur une annonce affichée dans un cadre cloisonné est enregistré. Pour en savoir plus sur comment cela pourrait fonctionner, consultez Rapports sur les annonces utilisant des cadres cloisonnés.
Le diagramme ci-dessous décrit chaque étape d'une enchère publicitaire Protected Audience:
Quelle est la différence entre Protected Audience et TURTLEDOVE ?
Protected Audience est la première expérience à avoir été implémentée dans Chromium au sein de la famille de propositions TURTLEDOVE.
Protected Audience suit les principes généraux de TURTLEDOVE. Certaines publicités en ligne reposent sur la diffusion d'une annonce auprès d'une personne potentiellement intéressée ayant déjà interagi avec l'annonceur ou le réseau publicitaire. Jusqu'à présent, l'annonceur avait l'habitude d'identifier une personne spécifique lorsqu'elle parcourait des sites Web. C'est une préoccupation majeure pour le Web d'aujourd'hui.
L'initiative TURTLEDOVE consiste à proposer une nouvelle API pour répondre à ce cas d'utilisation tout en offrant des avancées clés en termes de confidentialité:
- C'est le navigateur, et non l'annonceur, qui détient les informations sur ce que l'annonceur pense qu'un qui intéresse la personne.
- Les annonceurs peuvent diffuser des annonces en fonction d'un centre d'intérêt, mais ne peuvent pas le combiner à d'autres des informations sur une personne, en particulier son identité et la page qu'il consulte.
Protected Audience est né de TURTLEDOVE et d'un ensemble de propositions de modifications associées afin de mieux répondre aux besoins des développeurs qui utiliseront l'API:
- Dans SPARROW: Criteo a proposé d'ajouter une Modèle de service ("Gatekeeper") s'exécutant dans un environnement d'exécution sécurisé (TEE). Protected Audience inclut une utilisation plus limitée des TEE pour la recherche de données en temps réel et la création de rapports agrégés.
- TERN de NextRoll et Magnite PARROT ces propositions décrivent les différents rôles des acheteurs et des vendeurs dans le système d'enchères sur l'appareil. Le flux d'enchères/d'évaluation des annonces de Protected Audience est basé sur ce travail.
- Les règles basées sur les résultats et TURTLEDOVE au niveau du produit modifications apportées ont amélioré le modèle d'anonymat et les fonctionnalités de personnalisation des enchères sur l'appareil
- PARAKEET est Proposition de Microsoft pour un service publicitaire de type TURTLEDOVE qui repose sur un serveur proxy s'exécutant dans un TEE entre le navigateur et les fournisseurs AdTech, afin d'anonymiser les demandes d'annonces et de renforcer la confidentialité. propriétés. Protected Audience n'a pas adopté ce modèle de proxy. Nous déployons les API JavaScript pour PARAKEET et Protected Audience, s'alignent sur les futurs travaux visant à combiner davantage les meilleures technologies des deux propositions.
L'API Protected Audience n'empêche pas encore le réseau publicitaire d'un site Web d'identifier les annonces qu'un utilisateur voit. Nous prévoyons de modifier l'API pour la rendre plus privée au fil du temps.
Quelle est la configuration de navigateur disponible ?
Les utilisateurs peuvent modifier leur participation aux essais de la Privacy Sandbox dans Chrome en activant ou en désactivant
le paramètre de premier niveau dans chrome://settings/adPrivacy
. Pendant les tests initiaux, les utilisateurs seront
vous pouvez utiliser ce paramètre de la Privacy Sandbox
de haut niveau pour désactiver Protected Audience. Chrome prévoit d'autoriser
aux utilisateurs de consulter et de gérer la liste des groupes de centres d'intérêt auxquels ils ont été ajoutés sur le Web
les sites qu'ils ont consultés. Comme pour les technologies de la Privacy Sandbox elles-mêmes, les paramètres utilisateur peuvent
évoluer en fonction des commentaires
des utilisateurs, des organismes de réglementation et d'autres acteurs.
Nous continuerons de mettre à jour les paramètres disponibles dans Chrome à mesure que la proposition Protected Audience sera en cours, en fonction sur les tests et les commentaires. À l'avenir, nous prévoyons de proposer des paramètres plus précis pour gérer Protected Audience et les données associées.
Les appelants de l'API ne peuvent pas accéder à l'appartenance à un groupe lorsque les utilisateurs naviguent en mode navigation privée et que l'appartenance est sont supprimées lorsque les utilisateurs effacent les données de leur site.
Interagir et partager des commentaires
- GitHub: lisez la proposition. poser des questions et suivre la discussion.
- W3C: discuter de cas d'utilisation sectoriels dans le document Améliorer les activités publicitaires sur le Web Groupe.
- Assistance aux développeurs: posez des questions et participez à des discussions sur le Dépôt de l'assistance pour les développeurs Privacy Sandbox.
- Liste de diffusion FLEDGE: fledge-api-announce fournit des annonces et des informations sur l'API.
- Participez aux appels planifiés pour Protected Audience (tous les deuxième semaine). Tout le monde est invité à participer. Pour participer, vous devez d'abord adhérer à la WICG. Vous pouvez participer activement ou simplement écouter !
- Utiliser le formulaire de commentaires sur la Privacy Sandbox pour partager vos commentaires en privé avec l'équipe Chrome en dehors des forums publics.
Obtenir de l'aide
Pour toute question concernant votre implémentation, la démonstration ou la documentation:
- Ouvrir un nouveau numéro dans le dépôt privacy-sandbox-dev-support. Veillez à sélectionner le modèle de problème pour Protected Audience.
- Signalez un problème dans le dépôt de code de démonstration sur GitHub.
- Pour des questions plus générales sur la façon de répondre à vos cas d'utilisation avec l'API, signaler un problème dans le dépôt de propositions.
Pour les bugs et les problèmes liés à l'implémentation de l'API Protected Audience dans Chrome: * Afficher les problèmes existants pour l'API. * Signalez un nouveau problème à l'adresse crbug.com/new.
Recevoir les dernières informations
- Pour être informé des changements d'état dans l'API, rejoignez la liste de diffusion pour développeurs.
- Pour suivre de près toutes les discussions en cours sur l'API, cliquez sur le bouton Regarder de la page de proposition sur GitHub Pour cela, vous devez disposer ou créer un projet GitHub compte.
- Pour obtenir des informations générales sur la Privacy Sandbox, abonnez-vous au flux RSS Sandbox].
En savoir plus
- API Protected Audience: présentation moins technique de la proposition.
- Démonstration de l'API Protected Audience: tutoriel de déploiement de base de l'API Protected Audience
- Vidéo de démonstration Protected Audience: explique le code de démonstration et montre comment utiliser les outils pour les développeurs Chrome pour le débogage de l'API Protected Audience.
- Explication technique de l'API Protected Audience
- Présentation détaillée de la Privacy Sandbox
- Intention de prototype
Photo de Ray Hennessy sur Unsplash.