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:
- Ekstrak awalan domain dari nama host dengan menghapus akhiran
.translate.goog
. - Pisahkan parameter
_x_tr_enc
dengan karakter,
(koma), lalu simpan sebagaiencoding_list
. - Tambahkan nilai parameter
_x_tr_hp
di awalan domain, jika ada. - Jika
encoding_list
berisi1
dan output-nya diawali dengan1-
, hapus awalan1-
dari output langkah 2. - Jika
encoding_list
berisi0
dan output-nya diawali dengan0-
, hapus awalan0-
dari output langkah 3. Jika Anda menghapus awalannya, tetapkanis_idn
ketrue
. Jika tidak, tetapkanis_idn
kefalse
. - Ganti
/\b-\b/
(ekspresi reguler) dengan karakter.
(titik). - Ganti karakter
--
(tanda hubung ganda) dengan karakter-
(tanda hubung). - Jika
is_idn
ditetapkan ketrue
, tambahkan awalan punycodexn--
. - 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
- Dengan menggunakan URL halaman asli, ganti nama host dengan nama host yang didekode.
- 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)
|