Omówienie interfejsu Private Aggregation API

generować raporty danych zbiorczych na podstawie danych z Protected Audience i danych z różnych witryn z Shared Storage;

Aby zapewnić działanie kluczowych funkcji, na których opiera się internet, utworzono interfejs API Private Aggregation, który umożliwia agregację i raportowanie danych z różnych witryn z zachowaniem prywatności.

Stan wdrożenia

Propozycja Stan
Zapobieganie nieprawidłowym raportom interfejsu Private Aggregation API dzięki weryfikacji raportów Shared Storage
Wyjaśnienie
Dostępne w Chrome
Dostępność trybu debugowania prywatnej agregacji zależy od spełnienia wymagań dotyczących plików cookie innych firm
Problem na GitHubie
Dostępne w Chrome M119
Opóźnienia w przekazaniu raportów
Wyjaśnienie
Dostępne w Chrome M119
Czas oczekiwania na przesłanie danych do Private Aggregation w przypadku Shared Storage
Wyjaśnienie
Dostępne w M119
Obsługa interfejsu Private Aggregation API i usługi agregacji w Google Cloud
Omówienie
Dostępne w Chrome M121
Wypełnianie danych w przypadku zbiorczych ładunków raportu
Opis
Dostępne w Chrome M119
Tryb debugowania Private Aggregation dostępny w przypadku raportowania auctionReportBuyers
Wprowadzenie
Dostępne w Chrome M123
Pomoc dotycząca identyfikatora filtra
Opis
Dostępne w Chrome M128
Łączenie wkładu po stronie klienta
Wprowadzenie
Dostępne w Chrome M129
Limity udziału w kontekście
Omówienie
Oczekiwane w I kwartale 2025 r.
Nazwane budżety na potrzeby prywatności, które wstępnie przypisują budżet na potrzeby prywatności do różnych przypadków użycia pomiarów
Wyjaśnienie
Planowane na II kwartał 2025 r.
Raportowanie zbiorcze błędów, które debuguje problemy z implementacją bez stosowania plików cookie innych firm
Wyjaśnienie
Planowane na II kwartał 2025 r.

Czym jest interfejs Private Aggregation API

Interfejs Private Aggregation API umożliwia deweloperom generowanie raportów zbiorczych z danymi z interfejsu Protected Audience API oraz danymi z różnych witryn z interfejsu Shared Storage.

Główną funkcją tego interfejsu API jest contributeToHistogram(). Operacja histogramu umożliwia zliczanie danych dotyczących użytkowników w każdym zdefiniowanym przez Ciebie zbiorze (w interfejsie API nazywanym kluczem agregacji). Wywołanie histogramu gromadzi wartości i zwraca wynik zagregowany z dodanym szumem w formie raportu podsumowania. Raport może na przykład zawierać informacje o liczbie witryn, w których użytkownik zobaczył Twoje treści, lub o błędach w skrypcie zewnętrznym. Ta operacja jest wykonywana w ramach workletu innego interfejsu API.

Jeśli np. wcześniej zarejestrowałeś w Shared Storage dane demograficzne i geograficzne, możesz użyć interfejsu Private Aggregation API, aby utworzyć histogram, który wskaże, ilu użytkowników w Nowym Jorku widziało Twoje treści w różnych witrynach. Aby zsumować dane w celu ich pomiaru, możesz zakodować wymiar geografii w kluczu agregacji i policzyć użytkowników w wartości podlegającej agregacji.

Kluczowych pojęć

Gdy wywołasz interfejs Private Aggregation API z kluczem agregacji i wartością podlegającą agregacji, przeglądarka generuje raport podlegający agregacji.

Raporty z możliwością agregacji są wysyłane na Twój serwer w celu zebrania i zbiorczej obróbki. Raporty zbiorcze są później przetwarzane przez usługę do agregacji i generowany jest raport podsumowujący.

Więcej informacji o kluczowych pojęciach związanych z interfejsem Private Aggregation API znajdziesz w dokumentacji Podstawy Private Aggregation API.

Różnice w raportowaniu atrybucji

Interfejs Private Aggregation API ma wiele cech wspólnych z interfejsem Attribution Reporting API. Interfejs Attribution Reporting to samodzielny interfejs API przeznaczony do pomiaru konwersji, a Private Aggregation służy do pomiarów w wielu witrynach w połączeniu z interfejsami API, takimi jak Protected Audience API i Shared Storage. Oba interfejsy API generują raporty, które można agregować, a które są wykorzystywane przez backend usługi do generowania raportów podsumowujących.

Raportowanie atrybucji łączy dane zebrane ze zdarzenia wyświetlenia i zdarzenia konwersji, które występują w różnych momentach. Prywatna agregacja mierzy pojedyncze zdarzenie w wielu witrynach.

Testowanie tego interfejsu API

Aby przetestować interfejs Private Aggregation API lokalnie, włącz wszystkie interfejsy API dotyczące prywatności w reklamach w sekcji chrome://settings/adPrivacy.

Dowiedz się więcej o testowaniu w eksperymencie i zostań jego uczestnikiem.

Korzystanie z wersji demonstracyjnej

Demonstrację interfejsu Private Aggregation API na potrzeby Shared Storage można znaleźć na stronie goo.gle/shared-storage-demo, a kod jest dostępny na GitHub. Demonstracja wdraża operacje po stronie klienta i generuje raport z możliwością agregacji, który jest wysyłany na Twój serwer.

Demo interfejsu Private Aggregation API dla Protected Audience API zostanie opublikowane w przyszłości.

Przypadki użycia

Private Aggregation to interfejs API ogólnego przeznaczenia do pomiarów w wielu witrynach. Można go używać w elementach roboczych Shared StorageProtected Audience API. Najpierw musisz określić, jakie informacje chcesz zbierać. Te punkty danych stanowią podstawę kluczy agregacji.

Pamięć współdzielona

Shared Storage umożliwia odczytywanie i zapisywanie danych z różnych witryn w bezpiecznym środowisku, aby zapobiec wyciekom danych, a interfejs Private Aggregation API umożliwia pomiar danych z różnych witryn przechowywanych w Shared Storage.

Pomiar zasięgu wśród unikalnych użytkowników

Możesz chcieć sprawdzić, ilu unikalnych użytkowników obejrzało Twoje treści. Interfejs Private Aggregation API może podać odpowiedź w takim brzmieniu: „Około 317 unikalnych użytkowników zobaczyło treści o identyfikatorze Content ID 861”.

W Shared Storage możesz ustawić flagę, która wskazuje, czy użytkownik widział już daną treść. Podczas pierwszej wizyty, w której nie ma flagi, następuje wywołanie prywatnego agregatora, a potem ustawiana jest flaga. Podczas kolejnych wizyt użytkownika, w tym wizyt w różnych witrynach, możesz sprawdzić Shared Storage i pominąć przesyłanie raportu do Private Aggregation, jeśli jest ustawiony odpowiedni znacznik. Aby dowiedzieć się więcej o metodach implementowania tych pomiarów, przeczytaj dokument na temat zasięgu.

Pomiar danych demograficznych

Możesz mierzyć dane demograficzne użytkowników, którzy widzieli Twoje treści w różnych witrynach.

Prywatna agregacja może dostarczyć odpowiedzi, np. „Około 317 unikalnych użytkowników w wieku od 18 do 45 lat z Niemiec”. Korzystanie z Shared Storage do uzyskiwania dostępu do danych demograficznych z kontekstu zewnętrznego. W późniejszym czasie możesz wygenerować raport z wykorzystaniem agregacji prywatnej, kodując wymiary grupa wiekowa i kraj w kluczu agregacji.

Pomiar częstotliwości K+

Możesz mierzyć liczbę użytkowników, którzy w danej przeglądarce zobaczyli dany element treści lub reklamę co najmniej K razy, przy czym wartość K została wybrana wcześniej.

Prywatna agregacja może dostarczyć odpowiedzi w postaci „Około 89 użytkowników widziało identyfikator treści 581 co najmniej 3 razy”. Licznik może być zwiększany w pamięci współdzielonej z różnych witryn i może być odczytywany w ramach workletu. Gdy liczba osiągnie wartość K, możesz przesłać raport za pomocą funkcji Private Aggregation.

Atrybucja uwzględniająca różne interakcje

Atrybucja marketingowa to metoda używana przez reklamodawców do określania udziału taktyk marketingowych i kolejnych interakcji z reklamą w sprzedaży lub konwersjach.

Za pomocą interfejsu Protected Audience API

Interfejs Protected Audience API umożliwia tworzenie list remarketingowych i list niestandardowych, a Private Aggregation pozwala tworzyć raporty o zdarzeniach z workletów kupujących i sprzedawców. Interfejsu API można używać do wykonywania takich zadań jak pomiar rozkładu stawek aukcji.

W ramach workletu Protected Audience API możesz agregować dane bezpośrednio za pomocą funkcji contributeToHistogram() i raportować je na podstawie odpowiedniego działania, korzystając z funkcji contributeToHistogramOnEvent(), która jest specjalnym rozszerzeniem interfejsu Protected Audience API.

Dostępne funkcje

W obiekcie privateAggregation dostępnym w elementach Shared Storage i Protected Audience API dostępne są podane niżej funkcje.

contributeToHistogram()

Możesz wywołać funkcję privateAggregation.contributeToHistogram({ bucket: <bucket>, value: <value> }), gdzie klucz agregacji to bucket, a wartość podlegająca agregacji to value. W przypadku parametru bucket wymagany jest parametr BigInt. W przypadku parametru value wymagana jest liczba całkowita.

Oto przykład wywołania w pamięci współdzielonej na potrzeby pomiaru zasięgu:

iframe.js

// Cross-site iframe code

async function measureReach() {
 // Register worklet
 await window.sharedStorage.worklet.addModule('worklet.js');

 // Run reach measurement operation
 await window.sharedStorage.run('reach-measurement', {
  data: { contentId: '1234' }
 });
}

measureReach();

worklet.js

// Shared storage worklet code

function convertContentIdToBucket(campaignId){
  // Generate aggregation key
}

// The scale factor is multiplied by the aggregatable value to
// maximize the signal-to-noise ratio. See "Noise and scaling"
// section in the Aggregation Fundamentals document to learn more.
const SCALE_FACTOR = 65536;

class ReachMeasurementOperation {
  async run(data) {
    const key = 'has-reported-content';
    // Read the flag from Shared Storage
    const hasReportedContent = await sharedStorage.get(key) === 'true';

    // Don't send report if the flag is set
    if (hasReportedContent) {
      return;
    }

    // Send histogram report
    // Set the aggregation key in `bucket`
    // Bucket examples: 54153254n or BigInt(54153254)
    // Set the scaled aggregatable value in `value`
    privateAggregation.contributeToHistogram({
      bucket: convertContentIdToBucket(data.contentId),
      value: 1 * SCALE_FACTOR
    });

    // Set the flag in Shared Storage
    await sharedStorage.set(key, true);
  }
}

register('reach-measurement', ReachMeasurementOperation);

Poprzedni przykład kodu wywołuje prywatne agregacje za każdym razem, gdy wczytywane są treści w ramce iframe na różnych stronach. Kod iframe wczytuje worklet, a worklet wywołuje interfejs Private Aggregation API z identyfikatorem treści przekonwertowanym na klucz agregacji (grupę).

contributeToHistogramOnEvent()

Tylko w przypadku modułów Protected Audience API udostępniamy mechanizm oparty na regułach, który umożliwia wysyłanie raportu tylko wtedy, gdy wystąpi określone zdarzenie. Ta funkcja umożliwia też, aby zagregowany wynik i wartość zależały od sygnałów, które nie są jeszcze dostępne w danym momencie aukcji.

Metoda privateAggregation.contributeToHistogramOnEvent(eventType, contribution) przyjmuje parametr eventType, który określa wywołujące zdarzenie, oraz parametr contribution, który ma zostać przesłany po wywołaniu zdarzenia. Zdarzenie wywołujące może pochodzić z samej aukcji po jej zakończeniu, np. zdarzenie wygrania lub przegrania aukcji, albo z ograniczonego elementu, który wyświetlił reklamę.

Aby wysłać raport o wydarzeniach aukcji, możesz użyć 2 zarezerwowanych słów kluczowych: reserved.win, reserved.lossreserved.always. Aby przesłać raport wywołany przez zdarzenie z ogrodzonego elementu, zdefiniuj typ zdarzenia niestandardowego. Aby wywołać zdarzenie z ramki wydzielonej, użyj metody fence.reportEvent() dostępnej w interfejsie Fenced Frames Ads Reporting API.

W tym przykładzie raport wyświetleń jest wysyłany, gdy nastąpiło zdarzenie wygrania aukcji, a raport kliknięć – gdy z ramki odizolowanej, w której została wyrenderowana reklama, zostanie wywołane zdarzenie click. Z tych 2 wartości można obliczyć współczynnik klikalności.

function generateBid(interestGroup, auctionSignals, perBuyerSignals, trustedBiddingSignals, browserSignals) {
  // …
  privateAggregation.contributeToHistogramOnEvent("reserved.win", {
      bucket: getImpressionReportBucket(),
      value: 1
  });
  privateAggregation.contributeToHistogramOnEvent("click", {
      bucket: getClickReportBuckets(), // 128-bit integer as BigInt
      value: 1
  });

Aby dowiedzieć się więcej, zapoznaj się z rozszerzonym opisem raportowania Private Aggregation.

enableDebugMode()

Pliki cookie innych firm są nadal dostępne, ale udostępnimy tymczasowy mechanizm, który ułatwi debugowanie i testowanie dzięki włączeniu trybu debugowania. Raport debugowania jest przydatny do porównywania pomiarów opartych na plikach cookie z pomiarami z Private Aggregation. Pozwala też szybko sprawdzić integrację z interfejsem API.

Wywołanie funkcji privateAggregation.enableDebugMode() w ramach elementu roboczego włącza tryb debugowania, który powoduje, że raporty podlegające agregacji zawierają niezaszyfrowany (w pełnym tekście) ładunek. Następnie możesz przetworzyć te dane za pomocą lokalnego narzędzia do testowania usługi agregacji.

Tryb debugowania jest dostępny tylko dla wywołujących, którzy mają dostęp do plików cookie innych firm. Jeśli wywołujący nie ma dostępu do plików cookie innych firm, enableDebugMode() nie zostanie wykonana.

Klucz debugowania możesz też ustawić, wywołując funkcję privateAggregation.enableDebugMode({ <debugKey: debugKey> }), gdzie BigInt może być używany jako klucz debugowania. Klucza debugowania można używać do kojarzenia danych z pomiaru opartego na plikach cookie i danych z pomiaru Private Aggregation.

Można je wywołać tylko raz na kontekst. Wszystkie kolejne wywołania wywołają wyjątek.

// Enables debug mode
privateAggregation.enableDebugMode();

// Enables debug mode and sets a debug key
privateAggregation.enableDebugMode({ debugKey: BigInt(1234) });

Weryfikacja zgłoszenia

Interfejs Private Aggregation API umożliwia pomiar w wielu witrynach przy jednoczesnej ochronie prywatności użytkowników. Nieuczciwe osoby mogą jednak próbować manipulować dokładnością tych pomiarów. Aby tego uniknąć, możesz użyć identyfikatora kontekstu do weryfikacji autentyczności raportów.

Ustawienie identyfikatora kontekstu pomaga zapewnić prawidłowość danych, które przyczyniają się do końcowych wyników zbiorczych. Aby to osiągnąć:

  • Zapobieganie nielegalnym lub nieprawdziwym raportom: sprawdź, czy raporty są generowane za pomocą prawidłowych i prawdziwych wywołań interfejsu API, co utrudnia ich sfałszowanie przez osoby niepowołane.
  • Zapobieganie ponownemu odtwarzaniu raportów: wykrywanie i odrzucanie wszelkich prób ponownego użycia starych raportów, aby każdy raport przyczyniał się tylko raz do wyników zbiorczych.

Pamięć współdzielona

Jeśli używasz Shared Storage do wykonywania operacji, która może wysyłać agregowany raport, możesz ustawić nieprzewidywalny identyfikator poza elementem worklet.

Ten identyfikator jest umieszczany w raporcie utworzonym na podstawie elementu roboczego. Możesz go określić, wywołując metody run() lub selectURL() Shared Storage w obiekcie opcji pod kluczem privateAggregationConfig.

Na przykład:

sharedStorage.run('measurement-operation', {
  privateAggregationConfig: {
    contextId: 'exampleId123456789abcdeFGHijk'
  }
});

Po ustawieniu tego identyfikatora możesz go użyć, aby sprawdzić, czy raport został wysłany z operacji Shared Storage. Aby zapobiec wyciekowi informacji, na każdą operację Shared Storage wysyłany jest dokładnie jeden raport (nawet jeśli nie ma żadnych wkładów), niezależnie od liczby wywołań contributeToHistogram().

Interfejs Private Aggregation API wysyła raporty podlegające agregacji z losowym opóźnieniem do 1 godziny. Ustawienie identyfikatora kontekstu w celu weryfikacji raportu zmniejsza jednak to opóźnienie. W tym przypadku występuje stały, mniejszy o 5 sekund opóźnienie od momentu rozpoczęcia operacji na współdzielonym magazynie.

Przykładowy proces weryfikacji raportu
Przykładowy proces weryfikacji raportu.

Przykładowy przepływ pracy (jak na diagramie powyżej):

  1. Operacja Shared Storage jest wykonywana z konfiguracją Private Aggregation, która określa identyfikator kontekstu, i generuje raport zbiorczy.
  2. Identyfikator kontekstu jest umieszczany w wygenerowanym raporcie możliwym do zsumowania i przesyłanym na Twój serwer.
  3. Twój serwer zbiera wygenerowane raporty podlegające agregacji.
  4. Procesy na serwerze sprawdzają identyfikator kontekstu w każdym raporcie możliwym do zgrupowania w porównaniu z przechowywanymi identyfikatorami kontekstu, aby upewnić się, że jest on prawidłowy, zanim zgrupuje raporty i wyśle je do usługi do agregacji.

Weryfikacja identyfikatora kontekstu

Raporty przychodzące na serwer kolektora można zweryfikować na kilka sposobów, zanim zostaną wysłane do usługi do agregacji. Raporty z nieprawidłowymi identyfikatorami kontekstu mogą zostać odrzucone, jeśli identyfikator kontekstu:

  • Nieznana: jeśli raport ma identyfikator kontekstu, którego nie utworzono w Twoim systemie, możesz go odrzucić. Zapobiega to wstrzykiwaniu danych do potoku agregacji przez nieznane lub złośliwe podmioty.
  • Duplikat: jeśli otrzymasz 2 raporty (lub więcej) z tym samym identyfikatorem kontekstu, musisz wybrać, który z nich odrzucić.
  • Oznaczone w wykrywaniu spamu:
    • Jeśli podczas przetwarzania zgłoszenia wykryjesz podejrzaną aktywność użytkownika, np. nagłą zmianę jego aktywności, możesz odrzucić zgłoszenie.
    • Raporty możesz przechowywać wraz z ich identyfikatorami kontekstu i dowolnymi odpowiednimi sygnałami (np. agentem użytkownika, źródłem odsyłacza itp.). Później, gdy analizujesz zachowanie użytkowników i identyfikujesz nowe wskaźniki spamu, możesz ponownie ocenić zapisane raporty na podstawie powiązanych z nimi identyfikatorów kontekstu i sygnałów. Dzięki temu możesz odrzucać zgłoszenia użytkowników dotyczące podejrzanej aktywności, nawet jeśli nie zostały one początkowo oznaczone.

Zaangażowanie i przesyłanie opinii

Interfejs Private Aggregation API jest obecnie przedmiotem dyskusji i może ulec zmianie w przyszłości. Jeśli wypróbujesz ten interfejs API i masz opinię na jego temat, chętnie ją poznamy.