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:

  1. 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.
  2. Tách thông số _x_tr_enc theo ký tự , (dấu phẩy) và lưu dưới dạng encoding_list.
  3. Thêm giá trị của thông số _x_tr_hp vào tiền tố miền (nếu có).
  4. Nếu encoding_list chứa 1 và kết quả bắt đầu bằng 1-, hãy xóa tiền tố 1- khỏi kết quả của bước 2.
  5. Nếu encoding_list chứa 0 và kết quả bắt đầu bằng 0-, 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 đặt is_idn thành true. Nếu không, hãy đặt is_idn thành false.
  6. Thay thế /\b-\b/ (biểu thức chính quy) bằng ký tự . (dấu chấm).
  7. Thay thế ký tự -- (dấu gạch nối đôi) bằng ký tự - (dấu gạch ngang).
  8. Nếu bạn đặt is_idn thành true, hãy thêm tiền tố punycode xn--.
  9. 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

  1. 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ã.
  2. 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)