Giúp mạng quảng cáo phối hợp với các tính năng liên quan đến dịch thuật của Google Tìm kiếm
Google Tìm kiếm cung cấp một số tính năng liên quan đến dịch thuật, cho phép người dùng truy cập vào nội dung đã dịch. Nếu bạn đang điều hành một mạng quảng cáo và quảng cáo của bạn không hoạt động đúng cách trên các trang web đã dịch, thì bạn cần làm theo các bước trong hướng dẫn này để đảm bảo quảng cáo của bạn hiển thị hoặc phân bổ chính xác.
Phương pháp của chúng tôi
Khi người dùng truy cập vào nội dung đã dịch do Google Dịch cung cấp ngay trong kết quả tìm kiếm, Google sẽ truy xuất trang từ nhà xuất bản, rồi viết lại URL nguồn và dịch trang web sau khi người dùng nhấp vào kết quả đã dịch.
Chuyển đổi URL do Google Dịch cung cấp sang URL nguyên gốc
Nếu bạn đang chạy một mạng quảng cáo dựa trên URL nguồn của nhà xuất bản, thì bạn cần chuyển đổi URL do Google Dịch cung cấp để đảm bảo quảng cáo của bạn hoạt động bình thường. Hãy thực hiện theo các bước sau để giải mã tên máy chủ của nhà xuất bản:
- Trích xuất tiền tố miền khỏi tên máy chủ bằng cách xóa hậu tố
.translate.goog
. - Tách thông số
_x_tr_enc
theo ký tự,
(dấu phẩy) và lưu dưới dạngencoding_list
. - Thêm giá trị của thông số
_x_tr_hp
vào tiền tố miền (nếu có). - Nếu
encoding_list
chứa1
và kết quả bắt đầu bằng1-
, hãy xóa tiền tố1-
khỏi kết quả của bước 2. - Nếu
encoding_list
chứa0
và kết quả bắt đầu bằng0-
, hãy xóa tiền tố0-
khỏi kết quả của bước 3. Nếu bạn đã xóa tiền tố, hãy đặtis_idn
thànhtrue
. Nếu không, hãy đặtis_idn
thànhfalse
. - Thay thế
/\b-\b/
(biểu thức chính quy) bằng ký tự.
(dấu chấm). - Thay thế ký tự
--
(dấu gạch nối đôi) bằng ký tự-
(dấu gạch ngang). - Nếu bạn đặt
is_idn
thànhtrue
, hãy thêm tiền tố punycodexn--
. - Không bắt buộc: Chuyển đổi sang Unicode.
Mã JavaScript mẫu để giải mã tên máy chủ từ URL của Google Dịch
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; }
Tạo lại URL
- Sử dụng URL của trang gốc, thay thế tên máy chủ bằng tên máy chủ đã được giải mã.
- Loại bỏ tất cả thông số
_x_tr_*
.
Kiểm tra mã
Bạn có thể tạo các bài kiểm thử đơn vị cho mã của mình bằng cách sử dụng bảng sau. Với proxyUrl
, decodeHostname
phải khớp với giá trị dự kiến.
Bạn chỉ có thể sử dụng bảng sau để kiểm tra kết quả giải mã tên máy chủ. Bạn cần đảm bảo đường dẫn, phân đoạn và thông số nguyên gốc của URL được giữ nguyên.
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)
|