การทำให้เครือข่ายโฆษณาทำงานร่วมกับฟีเจอร์เกี่ยวกับการแปลใน Google Search

Google Search มีฟีเจอร์เกี่ยวกับการแปลหลายฟีเจอร์ที่ช่วยให้ผู้ใช้สามารถเข้าถึงเนื้อหาที่มีการแปล หากคุณทำธุรกิจเครือข่ายโฆษณาและโฆษณาของคุณทำงานไม่ถูกต้องในหน้าเว็บที่แปล คุณจะต้องทำตามขั้นตอนในคำแนะนำนี้เพื่อให้แน่ใจว่าโฆษณาจะแสดงหรือระบุแหล่งที่มาอย่างถูกต้อง

แนวทางของเรา

เมื่อผู้ใช้เข้าถึงเนื้อหาที่แปลโดย Google แปลภาษาในผลการค้นหาต่างๆ Google จะดึงหน้าเว็บจากผู้เผยแพร่โฆษณา เขียน URL แหล่งที่มาใหม่ และแปลหน้าเว็บหลังจากที่ผู้ใช้คลิกผลการค้นหาที่แปล

แปลง URL ของ Google แปลภาษาเป็น URL ต้นฉบับ

หากเป็นธุรกิจเครือข่ายโฆษณาที่ต้องอาศัย URL แหล่งที่มาของผู้เผยแพร่โฆษณา คุณจะต้องแปลง URL ของ Google แปลภาษาเพื่อให้แน่ใจว่าโฆษณาทำงานอย่างถูกต้อง ทำตามขั้นตอนต่อไปนี้เพื่อถอดรหัสชื่อโฮสต์ของผู้เผยแพร่โฆษณา

  1. ดึงคำนำหน้าโดเมนออกจากชื่อโฮสต์โดยนำคำต่อท้าย .translate.goog ออก
  2. แยกพารามิเตอร์ _x_tr_enc ตามอักขระ , (คอมมา) แล้วบันทึกเป็น encoding_list
  3. เพิ่มค่าพารามิเตอร์ _x_tr_hp ไว้หน้าคำนำหน้าโดเมน (หากมี)
  4. หาก encoding_list มี 1 และเอาต์พุตขึ้นต้นด้วย 1- ให้นำคำนำหน้า 1- ออกจากเอาต์พุตในขั้นตอนที่ 2
  5. หาก encoding_list มี 0 และเอาต์พุตขึ้นต้นด้วย 0- ให้นำคำนำหน้า 0- ออกจากเอาต์พุตในขั้นตอนที่ 3 หากคุณนำคำนำหน้าออก ให้ตั้งค่า is_idn เป็น true มิเช่นนั้น ให้ตั้งค่า is_idn เป็น false
  6. นำอักขระ . (จุด) ไปแทนที่ /\b-\b/ (นิพจน์ทั่วไป)
  7. นำอักขระ - (ขีดกลางสั้น) ไปแทนที่อักขระ -- (ขีดกลางสั้นคู่)
  8. หากตั้งค่า is_idn เป็น true ให้เพิ่มคำนำหน้า xn-- ของ Punycode
  9. ไม่บังคับ: แปลงเป็น Unicode

ตัวอย่างโค้ด JavaScript สำหรับการถอดรหัสชื่อโฮสต์จาก URL ของ Google แปลภาษา

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;
}

สร้าง URL ใหม่

  1. ใช้ URL หน้าเว็บต้นฉบับในการนำชื่อโฮสต์ที่ถอดรหัสแล้วไปแทนที่ชื่อโฮสต์
  2. นำพารามิเตอร์ _x_tr_* ทั้งหมดออก

ทดสอบโค้ด

คุณสร้างการทดสอบ 1 หน่วยสำหรับโค้ดได้โดยใช้ตารางต่อไปนี้ เมื่อพิจารณา proxyUrl แล้ว decodeHostname ต้องตรงกับค่าที่คาดไว้

ตารางต่อไปนี้ใช้ในการทดสอบการถอดรหัสชื่อโฮสต์ได้เท่านั้น คุณต้องตรวจสอบว่าเส้นทาง ส่วนย่อย และพารามิเตอร์ต้นฉบับของ URL ยังคงเหมือนเดิม

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=1 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)