공유 저장장치가 있는 URL 선택

공유 저장소에서 수집된 데이터를 기반으로 URL을 선택하고 콘텐츠를 울타리 프레임으로 렌더링합니다.

Shared Storage API를 사용하면 크로스 사이트 데이터를 사용하여 펜싱된 프레임으로 렌더링할 URL을 선택할 수 있습니다. JavaScript를 사용하여 교차 사이트 데이터를 읽고 쓴 다음 저장된 데이터를 기반으로 제공된 목록에서 URL을 선택합니다. 이 URL을 울타리 프레임으로 렌더링할 수 있습니다.

URL 선택에는 광고, 기사, 이미지, HTML, 클릭 유도 문구 (예: 버튼) 등 모든 종류의 콘텐츠가 포함될 수 있습니다.

예를 들어 여행 사이트를 운영하고 있으며 3가지 광고 소재로 광고 캠페인을 운영하고 있다고 가정해 보겠습니다. 사용자의 상호작용 (조회 또는 클릭)에 따라 이러한 광고 소재의 순서를 지정하려 합니다.

이전 상호작용에 따라 사용자에게 표시되는 광고 소재 3개
신규 시청자를 위한 첫 번째 광고 소재에는 '다음 모험을 떠나세요'라는 문구가 있습니다. 클릭 없이 조회만 하면 사용자에게 '주말 여행지 둘러보기'가 표시됩니다. 세 번째 광고 소재는 조회 또는 클릭 후 사용자에게 '클릭하여 호텔 할인 받기'를 권장합니다. 사용자가 첫 번째 광고를 클릭하면 다음에 표시되는 광고는 세 번째 광고 소재입니다.

사용자가 낙찰된 광고 공간을 처음 확인하면 공유 저장소에서 해당 광고 소재의 ID와 클릭 상태를 저장할 수 있습니다. 즉, 이 사용자가 방문하는 다른 사이트에서 광고 입찰에서 낙찰되면 이 데이터를 기반으로 다른 광고를 표시할 수 있습니다.

세 가지 광고 소재와 사용자 상호작용이 포함된 공유 저장소 워크스루

JavaScript는 이 정보를 검색하기 위해 워크렛에서 실행되지만 코드는 상위 페이지의 iframe 또는 펜싱된 프레임 외부에서 상호작용하거나 통신할 수 없습니다.

다른 예를 들어 보겠습니다. 삽입된 맥락에서 실적이 더 우수한 기사를 테스트하고 싶다고 가정해 보겠습니다. 사이트에서 사용자를 발견하면 사용자를 실험 그룹에 할당한 후 공유 저장소에 해당 그룹 ID를 저장하여 교차 사이트 컨텍스트에서 액세스할 수 있습니다. 다른 사이트에서 펜싱된 프레임은 공유 저장소에 저장된 사용자의 실험 그룹을 기반으로 URL을 선택할 수 있습니다.

공유 저장소를 사용하면 삽입 사이트와 사용자 정보를 공유하거나 자체 서버로 데이터를 무단 반출하지 않고도 크로스 사이트 데이터를 기반으로 정보에 입각한 결정을 내릴 수 있습니다.

사용 사례

공유 저장소를 사용한 URL 선택은 다음과 같은 사용 사례를 지원합니다.

  • 광고 소재 순환: 광고 소재 ID 및 사용자 상호작용과 같은 데이터를 저장하여 사용자가 여러 사이트에서 어떤 광고 소재를 보게 될지 결정할 수 있습니다.
    • 빈도 브라우저 조회수는 공유 저장소에 저장할 수 있으며 사용자에게 표시할 광고 소재를 결정하는 데 사용할 수 있습니다.
  • A/B 테스트 실행: 사용자를 실험 그룹에 할당한 다음, 그룹 ID를 공유 저장소에 저장하여 교차 사이트에서 액세스할 수 있도록 합니다.
  • 사용자 환경 맞춤설정: 사용자의 등록 상태 또는 기타 사용자 인증 상태에 따라 맞춤 콘텐츠와 클릭 유도 문구를 공유합니다.

예산

Select URL API는 교차 사이트 데이터 유출 위험을 완화하기 위해 장기 및 단기 예산을 조합한 예산 시스템을 사용합니다.

  • 장기 예산: selectURL()를 사용할 때 호출자 사이트당 일일 12비트 예산입니다. 이 예산은 선택한 URL을 호스팅하는 프레임이 최상위 탐색을 실행하는 경우에만 청구되며 비용은 log2(number of URLs)로 계산됩니다. 따라서 선택할 수 있는 URL이 8개이면 비용은 3비트입니다. 당일 남은 예산은 12 - (sum of bits deducted in the last 24 hours)로 계산되며, 남은 예산이 충분하지 않으면 기본 URL (목록의 첫 번째 URL)이 반환되고 기본 URL로 이동하면 1비트가 로깅됩니다.
  • 단기 예산: 페이지 로드당 추가 한도 단일 호출 사이트가 selectURL()를 사용하여 누출할 수 있는 양을 제한하는 호출 사이트당 페이지 로드당 6비트 예산이 있습니다. 페이지의 모든 호출 사이트에 대한 총합 제한인 전체 페이지당 로드 12비트 예산도 있습니다.

    저장된 쿼리를 사용하면 동일한 페이지에서 이전 selectURL() 결과를 재사용하여 단기 예산 사용량을 줄일 수 있습니다. 저장된 쿼리 이름으로 selectURL()가 처음 호출되면 결과 색인이 페이지의 전체 기간 동안 저장됩니다. 후속 호출에 동일한 저장된 쿼리 이름으로 selectURL()를 호출하면 저장된 색인이 반환되고 등록된 작업은 실행되지 않습니다. 이 경우 새로운 정보가 공개되지 않으므로 예산은 첫 사용 시점에만 청구되고 동일한 페이지 로드 내에서 재사용 시에는 청구되지 않습니다.

    저장된 쿼리는 다음 예와 같이 선택한 쿼리 이름과 함께 savedQuery 속성을 옵션 객체에 추가하여 구현할 수 있습니다.

    const topProductUrls = [
      { url: 'https://ad.example/default-top-product.html' },
      { url: 'https://ad.example/experiment-top-product.html' }];
    const relatedProductUrls = [
      { url: 'https://ad.example/default-related-product.html' },
      { url: 'https://ad.example/experiment-related-product.html' }];
    
    // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'`
    // on this page, so it will be charged to both per-page budgets.
    const topProductsConfig = await sharedStorage.selectURL(
      'productExperiment', topProductUrls, {
        savedQuery: 'control_or_experiment',
        keepAlive: true,
        resolveToConfig: true
    });
    document.getElementById('topProductsFencedFrame').config = topProductsConfig;
    
    // This next call with this savedQuery won't charge either of the per-page budgets.
    const relatedProductConfig = await sharedStorage.selectURL(
      'productExperiment', relatedProductUrls, {
        savedQuery: 'control_or_experiment',
        resolveToConfig: true
    });
    document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
    

URL 선택 시도

Shared Storage API를 사용한 URL 선택은 Chrome Canary/Dev/Beta M105 이상에서 테스트할 수 있습니다. URL 선택을 테스트하려면 chrome://settings/adPrivacy에서 모든 광고 개인 정보 보호 API를 사용 설정하세요.

데모 실험

데모를 확인하고 GitHub에서 코드를 검토할 수 있습니다.

이 데모는 여러 게시자 사이트에 정보를 저장하려는 광고주, 광고 기술, 콘텐츠 배급자 또는 기타 서드 파티 서비스의 관점에서 구성됩니다. 이 데모에서는 각 사용 사례에 대해 게시자 A 사이트와 게시자 B 사이트에서 동일한 서드 파티 코드가 실행됩니다. 각 게시자 페이지를 방문하여 교차 사이트 컨텍스트에서 데이터가 공유되는 방식을 확인하세요.

참여 및 의견 공유

공유 저장용량 제안은 현재 논의 중이며 변경될 수 있습니다. 있습니다. 이 API를 사용해 보고 의견이 있으면 언제든지 알려 주세요.