Memungkinkan jaringan iklan Anda bekerja dengan fitur Google Penelusuran terkait terjemahan

Google Penelusuran menawarkan beberapa fitur terkait terjemahan yang memungkinkan pengguna mengakses terjemahan konten. Jika Anda menjalankan jaringan iklan dan iklan tidak berfungsi dengan semestinya di terjemahan halaman web, Anda harus mengikuti langkah-langkah dalam panduan ini untuk memastikan bahwa iklan dirender atau diatribusikan dengan benar.

Pendekatan kami

Saat pengguna mengakses terjemahan konten yang disediakan oleh Google Terjemahan dari hasil penelusuran, Google mengambil halaman dari penayang, menulis ulang URL sumber, lalu menerjemahkan halaman web tersebut setelah pengguna mengklik terjemahan hasil penelusuran.

Mengonversi URL Google Terjemahan ke URL asli

Jika Anda menjalankan jaringan iklan yang mengandalkan URL sumber penayang, Anda harus mengonversi URL Google Terjemahan untuk memastikan bahwa iklan Anda berfungsi dengan semestinya. Ikuti langkah-langkah berikut untuk mendekode nama host penayang:

  1. Ekstrak awalan domain dari nama host dengan menghapus akhiran .translate.goog.
  2. Pisahkan parameter _x_tr_enc dengan karakter , (koma), lalu simpan sebagai encoding_list.
  3. Tambahkan nilai parameter _x_tr_hp di awalan domain, jika ada.
  4. Jika encoding_list berisi 1 dan output-nya diawali dengan 1-, hapus awalan 1- dari output langkah 2.
  5. Jika encoding_list berisi 0 dan output-nya diawali dengan 0-, hapus awalan 0- dari output langkah 3. Jika Anda menghapus awalannya, tetapkan is_idn ke true. Jika tidak, tetapkan is_idn ke false.
  6. Ganti /\b-\b/ (ekspresi reguler) dengan karakter . (titik).
  7. Ganti karakter -- (tanda hubung ganda) dengan karakter - (tanda hubung).
  8. Jika is_idn ditetapkan ke true, tambahkan awalan punycode xn--.
  9. Opsional: Konversikan ke Unicode.

Contoh kode JavaScript untuk mendekode nama host dari URL Google Terjemahan

function decodeHostname(proxyUrl) {
  const parsedProxyUrl = new URL(proxyUrl);
  const fullHost = parsedProxyUrl.hostname;
  // 1. Extract the domain prefix from the hostname, by removing the
        ".translate.goog" suffix
  let domainPrefix = fullHost.substring(0, fullHost.indexOf('.'));

  // 2. Split _x_tr_enc parameter by "," (comma), save as encodingList
  const encodingList = parsedProxyUrl.searchParams.has('_x_tr_enc') ?
      parsedProxyUrl.searchParams.get('_x_tr_enc').split(',') :
      [];

  // 3. Prepend value of _x_tr_hp parameter to the domain prefix, if it exists
  if (parsedProxyUrl.searchParams.has('_x_tr_hp')) {
    domainPrefix = parsedProxyUrl.searchParams.get('_x_tr_hp') + domainPrefix;
  }

  // 4. Remove '1-' prefix from the output of step 2 if encodingList contains
  //    '1' and the output begins with '1-'.
  if (encodingList.includes('1') && domainPrefix.startsWith('1-')) {
    domainPrefix = domainPrefix.substring(2);
  }

  // 5. Remove '0-' prefix from the output of step 3 if encodingList contains
  //    '0' and the output begins with '0-'.
  //    Set isIdn to true if removed, false otherwise.
  let isIdn = false;
  if (encodingList.includes('0') && domainPrefix.startsWith('0-')) {
    isIdn = true;
    domainPrefix = domainPrefix.substring(2);
  }

  // 6. Replace /\b-\b/ (regex) with '.' (dot) character.
  // 7. Replace '--' (double hyphen) with '-' (hyphen).
  let decodedSegment =
      domainPrefix.replaceAll(/\b-\b/g, '.').replaceAll('--', '-');

  // 8. If isIdn equals true, add the punycode prefix 'xn--'.
  if (isIdn) {
    decodedSegment = 'xn--' + decodedSegment;
  }
  return decodedSegment;
}

Merekonstruksi URL

  1. Dengan menggunakan URL halaman asli, ganti nama host dengan nama host yang didekode.
  2. Hapus semua parameter _x_tr_*.

Menguji kode

Anda dapat membuat pengujian unit untuk kode Anda menggunakan tabel berikut. Mengingat ini adalah proxyUrl, decodeHostname harus cocok dengan nilai yang diharapkan.

Tabel berikut hanya dapat digunakan untuk menguji decoding nama host. Anda harus memastikan bahwa jalur, fragmen, dan parameter asli URL tidak diubah.

proxyUrl decodeHostname
https://example-com.translate.goog example.com
https://foo-example-com.translate.goog foo.example.com
https://foo--example-com.translate.goog foo-example.com
https://0-57hw060o-com.translate.goog/?_x_tr_enc=0 xn--57hw060o.com (⚡😊.com)
https://1-en--us-example-com/?_x_tr_enc=1 en-us.example.com
https://0-en----w45as309w-com.translate.goog/?_x_tr_enc=0 xn--en--w45as309w.com (en-⚡😊.com)
https://1-0-----16pw588q-com.translate.goog/?_x_tr_enc=0,1 xn----16pw588q.com (⚡-😊.com)
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=l llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch-co-uk.translate.goog/?_x_tr_hp=www-l www.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk
https://a--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-com.translate.goog/?_x_tr_hp=a--xn--xn--xn--xn--xn--------------------------a a-xn-xn-xn-xn-xn-------------aa-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.com
https://g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b-com.translate.goog/?_x_tr_enc=0&_x_tr_hp=0- xn--g5h3969ntadg44juhyah3c9aza87iiar4i410avdl8d3f1fuq3nz05dg5b.com (💖🌲😊💞🤷‍♂️💗🌹😍🌸🌺😂😩😉😒😘💕🐶🐱🐭🐹🐰🐻🦊🐇😺.com)