瞭解出價和競價服務的競價架構
總覽
出價和競價 (B&A) 服務為廣告買方和賣方提供一組服務,這些服務會在可信執行環境 (TEE) 中執行,以利進行 Protected Audience (PA) 競價。本頁面說明 B&A 可在 PA 競價中使用的各種競價設定。
定義
字詞 | 說明 |
---|---|
Protected Audience 競價 | 涉及跨網站資料的廣告競價 |
內容比對競價 | 不涉及跨網站資料的廣告競價。這個競價會遵循現有的即時出價 (RTB) 競價路徑。 |
統一競價要求 | 賣方的 JavaScript 程式碼透過瀏覽器傳送的要求,其中包含 Protected Audience 競價和內容相關競價的酬載。 |
賣方廣告服務 (SAS) | 負責處理來自瀏覽器的統一競價要求的服務。這可能是賣方的現有 RTB 廣告伺服器。SAS 負責安排內容相關和 Protected Audience 競價。 |
買方廣告服務 | 負責提交內容相關競價出價的服務。這可能是買方的現有 ORTB 廣告伺服器。 |
買方和賣方服務
B&A 服務包含四項服務,可供買家和賣家使用:
- 買方可使用出價服務和買方前端 (BFE) 服務。
- 賣家可使用競價服務和賣家前端 (SFE) 服務。
參與者 | 服務 | 說明 |
---|---|---|
採購 | 買方前端 (BFE) 服務 | 這項服務會處理來自賣方 SFE 的 GetBids 要求。負責解密酬載,擷取 K/V 信號,並呼叫出價服務的 GenerateBids 。 |
出價服務 | 這項服務會處理來自 BFE 的 GenerateBids 要求。負責執行買方的出價邏輯,並產生出價。 |
|
賣方 | 賣家前端 (SFE) 服務 | 服務會處理來自賣方廣告服務的 SelectAd 要求。負責解密酬載,呼叫 BFE 的 GetBids 作業、擷取 K/V 信號、呼叫 Auction Service 的 ScoreAd 作業,然後將已加密的 B&A 競價結果傳回 SAS。如果服務是伺服器協調的多賣家競價中頂層賣家堆疊的一部分,則服務也會處理來自 SAS 的 |
競價服務 | 服務會處理來自 SFE 的 ScoreAd 要求。負責執行賣方的評分邏輯,並提供出價的適合度分數。 |
網頁版 PA B&A 競價的架構
下圖說明基本 Protected Audience 競價流程,其中包含 B&A 服務、單一賣家和單一買家。粗紅色框線代表在 TEE 中執行的服務:
(完整大小的圖表)
- 發布商網頁上的可調式夥伴管理廣告伺服器 JavaScript 程式碼會呼叫
navigator.getInterestGroupAdAuctionData()
,產生經過加密的 B&A 廣告競價資料。- 這個加密酬載包含買家的資料,且只能在 TEE 的 SFE 中解密。
- SSP JavaScript 程式碼會向賣方廣告服務傳送統一競價要求。
- 統一競價要求包含純文字 ORTB 內容相關競價酬載和加密的 B&A 競價酬載。
- 賣方廣告服務是您現有的廣告伺服器,不會在 TEE 中執行。
- 賣方廣告服務會呼叫 DSP 的即時出價服務,要求內容比對競價出價和任何買方信號,以便傳遞至後續的 PA 競價。
- 這是買方表示有意參與 PA 競價的步驟。
- 內容相關競價完成後,SAS 會將
SelectAd
要求傳送至 SFE 服務。- 內容比對競價勝出出價和買家信號會新增至
SelectAd
要求酬載。
- 內容比對競價勝出出價和買家信號會新增至
- SSP 的 SFE 服務會透過
GetBids
要求呼叫 DSP 的 BFE 服務。 - DSP 的 BFE 會使用
GenerateBids
要求呼叫出價服務。 - SFE 收到出價後,就會向競價服務發出
ScoreAd
呼叫。- 系統會將出價最高的出價傳回 SAS,然後轉寄至網頁上的 JavaScript 程式碼。
- 競價在瀏覽器中完成,方法是將加密的 B&A 競價結果傳遞至
navigator.runAdAuction()
呼叫。
競價設定
您可以透過下列方式設定含有 B&A 服務的 Protected Audience 競價:
- 單一賣家競價,有 B&A 買家
- 混合模式競價,包含裝置端買家和 B&A 買家
- 可透過裝置或伺服器進行調度的多賣家競價
參與者
為說明各項競價設定,本指南會使用以下參與者:
參與者 | 說明 |
---|---|
DSP-A |
裝置端買家 |
DSP-B |
裝置端買家 |
DSP-X |
B&A 買家 |
DSP-Y |
B&A 買家 |
SSP-TOP |
頂層賣家 |
SSP-OD |
僅限裝置的賣家 |
SSP-BA |
僅限 B&A 賣家 |
SSP-MIX |
混合模式賣家 |
有四個 DSP:
DSP-A
和DSP-B
只會參與裝置端競價DSP-X
和DSP-Y
同時參與裝置端競價和 B&A 競價
共有四個 SSP,每個賣方都會執行不同的競價設定:
SSP-OD
執行裝置端專屬競價SSP-BA
執行僅限 B&A 的競價SSP-MIX
執行混合模式競價SSP-TOP
執行多賣家競價:SSP-OD/BA/MIX
以元件賣家的身分參與SSP-TOP
的多賣方競價
單一賣家 B&A 競價
在單一賣方設定中,單一賣方會執行多位買家參與的競價。如果賣方正在執行 B&A 競價,買方必須執行 B&A 服務的買方堆疊,才能向競價提交出價。買方和賣方不必使用相同的雲端服務供應商。
(完整大小的圖表)
在上述設定中,SSP-BA
會執行 B&A 競價,DSP-X
和 DSP-Y
會使用 B&A 服務的買方堆疊參與競價。賣方的廣告服務會先為 DSP-X
和 DSP-Y
執行內容相關競價,然後將 SelectAd
要求傳送至賣方的 SFE 服務,執行受保護目標對象競價。比對內容競價勝出出價和每位買家的訊號會傳送至 SelectAd
呼叫。接著,SFE 服務會將 GetBids
要求傳送至 DSP-X
和 DSP-Y
的 BFE,後者會呼叫出價服務來產生出價。
系統會將經過加密的 B&A 競價結果傳回用戶端,並傳遞至 runAdAuction()
呼叫。單一賣家競價設定如下所示:
await navigator.runAdAuction({
seller: 'https://ssp-ba.example',
requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [193, 120, 4, …] // Encrypted B&A auction result
})
requestId
值來自用戶端的 getInterestGroupAdAuctionData()
呼叫,serverResponse
資料則來自伺服器端 B&A 競價。
混合模式競價
在混合模式設定中,買家可以透過裝置端或 B&A 參與賣方的競價。藍色箭頭代表裝置端競價路徑,紅色箭頭則代表 B&A 競價路徑:
(完整大小的圖表)
在這種設定中,DSP-A
和 DSP-B
是使用裝置端出價的買方,DSP-X
和 DSP-Y
則是使用 B&A 出價的買方。裝置端買家會在瀏覽器中參與裝置端 PA 競價,而 B&A 買家會參與「單一賣方競價」一節所述的 B&A 競價設定。
系統會先為所有買家執行比對內容競價,以便收集比對內容競價勝出出價和買方信號。接著,B&A 競價就會開始,且內容相關競價的買方信號會傳送至 SFE 的 SelectAd
要求。從 SFE 傳回的加密 B&A 競價結果會轉送至瀏覽器。在 B&A 競價後,系統會將結果提供給裝置端買家參與的裝置端競價。
競價的裝置端部分混合模式單一賣家競價設定如下所示:
await navigator.runAdAuction({
seller: 'https://ssp-mix.example',
decisionLogicURL: 'https://ssp-ba.example/score-ad.js',
componentAuctions: [
// B&A auction
{
seller: 'https://ssp-mix.example',
requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [133, 20, 14, …]
},
// On-device auction
{
seller: 'https://ssp-mix.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-mix.example/on-device-score-ad.js',
}
]
})
裝置端和 B&A 競價的平行處理
如果沒有並行處理,系統會依序執行競價,先執行內容相關競價,再執行 B&A 競價,最後執行裝置端競價。實作並行處理後,系統會再次先執行內容相關競價,但其結果和信號會串流傳回用戶端,以便在 B&A 競價完成前,開始裝置端競價。
(完整大小的圖表)
用戶端中的 JavaScript 程式碼會將統一競價要求傳送至 SAS,而 SAS 會啟動內容相關競價和 PA B&A 競價。當 SAS 收到買方的 RTB 伺服器回應時,買方會發出信號,讓裝置端競價可在收到所有出價後,將結果和內容相關競價勝出者一併串流傳送回瀏覽器。系統會使用串流買家信號在裝置端產生出價,並在評分出價時,將比對內容競價勝出者做為出價下限。
在 SAS 中,賣方會在將內容相關競價資料串流傳送至瀏覽器時,在 Ad-Auction-Result-Nonce
回應標頭中設定 UUID nonce。在 B&A 競價的 SelectAd
呼叫中,會使用相同的 Nonce,而該 Nonce 會納入 SFE 傳回的 SelectAd
回應中。在用戶端競價階段,瀏覽器會驗證 Ad-Auction-Result-Nonce
回應標頭中的 Nonce 是否與加密競價結果酬載中的 Nonce 相符。
請參閱說明文件,進一步瞭解混合模式並行處理。
多賣家競價
您可以透過下列兩種方式,透過 B&A 執行 PA 多賣家競價:
- 裝置協調競價,其中對各個元件供應商廣告服務的呼叫來自瀏覽器
- 伺服器協調競價,其中對各個元件賣家廣告服務的呼叫來自頂層賣家的廣告服務
裝置端協調的多個賣方競價
在裝置協調的多賣方競價中,每個元件賣家都可以自由選擇所需的設定來執行競價。裝置端賣家、B&A 賣家和混合模式賣家都可以參與頂層競價。
(完整大小的圖表)
在這個設定中,SSP-TOP
是頂層賣方,會執行多賣方競價,SSP-OD
、SSP-BA
和 SSP-MIX
都會參與其中:
SSP-OD
執行僅限裝置端的 PA 競價,並將裝置端元件競價設定提交給頂層賣家。SSP-BA
會執行 B&A 競價,向賣方廣告服務傳送整合式競價要求,並執行自己的內容相關和 B&A 競價。結果會提交給頂層賣家。SSP-MIX
會執行混合模式競價,首先在伺服器上執行 B&A 競價,然後提交 B&A 競價結果和裝置端競價設定。
頂層賣家會從各個賣家收集元件競價設定,並建構類似下列的競價設定:
await navigator.runAdAuction({
seller: 'https://ssp-top.example',
decisionLogicURL: 'https://ssp-top.example/score-ad.js',
componentAuctions: [
// SSP-BA's B&A-only auction
{
seller: 'https://ssp-ba.example',
requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [193, 120, 4, …] // Encrypted B&A auction result
},
// SSP-MIX's B&A auction of mixed-mode
{
seller: 'https://ssp-mix.example',
requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
serverResponse: Uint8Array(560) [133, 20, 4, …] // Encrypted B&A auction result
}.
// SSP-MIX's on-device auction of mixed-mode
{
seller: 'https://ssp-mix.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
}
// SSP-OD's on-device auction
{
seller: 'https://ssp-od.example',
interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
decisionLogicURL: 'https://ssp-od.example/score-ad.js',
}
]
})
由伺服器協調的多個賣方競價
在伺服器協調的多賣方競價中,會從頂層賣方廣告服務發出對元件賣方廣告服務的呼叫。在這種設定中,元件賣家無法執行裝置端或混合模式競價;所有賣家都必須使用 B&A,所有買家也都必須使用 B&A 提交出價。
(完整大小的圖表)
在這個圖表中,SSP-TOP
會執行由伺服器協調的多重賣方競價,SSP-BA-X
和 SSP-BA-Y
會參與這項競價。
瀏覽器會將單一統一競價要求 (包含所有參與者的內容和 PA 競價酬載) 傳送至頂層賣家廣告服務。接著,SAS 會使用酬載對 SFE 發出 GetComponentAuctionCiphertexts
呼叫。SFE 會解密酬載資料,並依照各個元件賣家分隔酬載資料,然後將重新加密的酬載資料傳回至頂層賣家的 SAS。
GetComponentAuctionCiphertexts
要求和回應的 Proto 定義如下:
// Request sent from the top-level seller's ad service to SFE
message GetComponentAuctionCiphertextsRequest {
bytes protected_auction_ciphertext = 1; // Generated in the browser
repeated string component_sellers = 2; // The list of all component sellers
}
// Response returned from SFE to the top-level seller's ad service
message GetComponentAuctionCiphertextsResponse {
// A map of component sellers and their re-encrypted payloads
map<string, bytes> seller_component_ciphertexts = 1;
}
頂層賣方的 SAS 會呼叫元件賣方的 SAS,並執行元件 B&A 競價。接著,元件競價的結果會傳回至頂層賣方的 SFE,而元件競價會由頂層賣方的競價服務評分。系統會將得分最高的出價傳回至 SFE,並將加密酬載傳送至 SAS,再傳回給用戶端。在瀏覽器中,頂層賣家會呼叫 navigator.runAdAuction()
並提供已加密的伺服器競價結果酬載,藉此完成競價。
後續步驟
閱讀本指南後,您可以採取下列後續步驟:
瞭解詳情
- 如要進一步瞭解 Protected Audience 的 B&A 功能運作方式,請參閱 GitHub 上的以下說明:
- 按照端對端本機測試程式碼研究室的說明,使用 B&A 實驗 Protected Audience。
- 如要整合賣家,請參閱「以賣家身分與 B&A 整合」一文。
有任何問題嗎?
- 如有出價和競價服務相關問題,請在 B&A Services 存放區中提出問題。
- 如有任何關於 Privacy Sandbox 的一般問題,請在 privacy-sandbox-dev-support 存放區中提出問題 。