เตรียมพร้อมสำหรับการลด User-agent ของ Chrome

Chrome จะยังคงลดข้อมูลที่แชร์ในสตริง User Agent ต่อไปเพื่อช่วยปกป้องความเป็นส่วนตัวของผู้ใช้

ตั้งแต่ Chrome 110 (กุมภาพันธ์ 2023) เป็นต้นไป เราจะค่อยๆ เปิดตัวค่าคงที่สำหรับเวอร์ชัน Android และรุ่นอุปกรณ์ โดยค่าเริ่มต้นจะเป็น Android 10 ในรุ่น K เสมอ หากคุณใช้ User Agent เพื่อตรวจหาเวอร์ชันระบบปฏิบัติการ รุ่นอุปกรณ์ Android หรือเวอร์ชันเบราว์เซอร์โดยละเอียดของผู้เข้าชม คุณอาจต้องดําเนินการ โปรดอ่านรายละเอียดต่อ

user-agent คือสตริงที่ให้ข้อมูลเกี่ยวกับเบราว์เซอร์และสภาพแวดล้อมของผู้ใช้ เช่น ทราบว่าผู้เข้าชมเว็บไซต์ใช้ Chrome เวอร์ชัน 110 บน Android เบราว์เซอร์จะส่งข้อมูลนี้ในส่วนหัว HTTP และทำให้พร้อมใช้งานผ่าน JavaScript

ปัญหาเกี่ยวกับสตริง User Agent แบบเต็มคือมีการแชร์ข้อมูลโดยละเอียดเกี่ยวกับเบราว์เซอร์โดยค่าเริ่มต้นในคำขอทุกรายการ ซึ่งเป็นปัจจัยหลักในการอนุญาตให้มีการติดตามข้ามเว็บไซต์ เป้าหมายของเราคือการลดโอกาสในการรวบรวมข้อมูลนี้แบบไม่ได้ตั้งใจไปพร้อมกับให้บริการ API ที่ช่วยให้คุณเข้าถึงข้อมูลได้เมื่อต้องการ

การลด User Agent จนถึงตอนนี้

เราได้เริ่มนําข้อมูล User Agent บางรายการที่พร้อมใช้งานโดยค่าเริ่มต้นออกแล้ว และแทนที่ด้วยค่าคงที่

ตั้งแต่ Chrome 101 เราได้แทนที่หมายเลขเวอร์ชันย่อยด้วย 0 เช่น Chrome/101.3.2.1 เปลี่ยนเป็น Chrome/101.0.0.0

ตั้งแต่ Chrome 107 เราได้แทนที่เวอร์ชันระบบปฏิบัติการเดสก์ท็อปและข้อมูล CPU ด้วยค่าคงที่สำหรับแพลตฟอร์ม

MacMacintosh; Intel Mac OS X 10_15_7
WindowsWindows NT 10.0; Win64; x64
ChromeOSX11; CrOS x86_64 14541.0.0
LinuxX11; Linux x86_64

เวอร์ชัน Android และรุ่นอุปกรณ์ที่แก้ไขแล้วตั้งแต่ Chrome 110 เป็นต้นไป

ตั้งแต่ Chrome 110 เป็นต้นไป เราจะทยอยเปิดตัวค่าคงที่สำหรับเวอร์ชัน Android และรุ่นอุปกรณ์ แทนที่จะเห็นค่าประมาณ Android 13 ใน Pixel 7 ค่าเริ่มต้นจะเป็น Android 10 ในโมเดล K เสมอ

ก่อนหน้านี้: user-agent มีเวอร์ชัน Android และรุ่นอุปกรณ์

Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

หลัง: User Agent ที่ลดลงซึ่งมีเวอร์ชัน Android และรุ่นอุปกรณ์ที่แก้ไขแล้ว

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.0.0 Mobile Safari/537.36

ไม่มีการเปลี่ยนแปลงรูปแบบ User Agent

การลด User Agent จะเปลี่ยนค่าที่แสดงใน User Agent แต่รูปแบบจะยังคงเหมือนเดิม หากคุณใช้ User Agent เพื่ออ่านประเภทระบบปฏิบัติการหรือเวอร์ชันหลักของเบราว์เซอร์เท่านั้น ข้อมูลดังกล่าวจะอัปเดตต่อไปตามปกติและคุณไม่จําเป็นต้องดําเนินการใดๆ

ส่วนแพลตฟอร์ม ชื่อเบราว์เซอร์ เวอร์ชันหลักของเบราว์เซอร์ และตัวบ่งชี้อุปกรณ์เคลื่อนที่ของสตริง User-Agent จะยังคงอัปเดตต่อไปตามปกติ
ประเภทระบบปฏิบัติการ รุ่นอุปกรณ์ และเวอร์ชันย่อยของเบราว์เซอร์เป็นค่าคงที่
ส่วนอื่นๆ ทั้งหมดของสตริง User Agent จะยังคงเหมือนเดิม

ทางเลือกของ User Agent

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

โปรดทราบว่า User Agent นั้นเหมือนกับค่าอื่นๆ ที่ได้จากผู้ใช้ คุณควรตรวจสอบค่าดังกล่าวและไม่ถือว่าค่านั้นถูกต้อง ผู้ใช้ ชิ้นงาน หรือไคลเอ็นต์อื่นๆ สามารถเปลี่ยนค่า User Agent ได้อย่างง่ายดาย หรืออาจไม่ส่งเลยก็ได้ ในกรณีส่วนใหญ่ คุณควรแสดงเนื้อหาที่ใช้งานได้แก่ผู้เข้าชมได้โดยไม่ต้องใช้ข้อมูล User Agent

ขอข้อมูลโดยละเอียดด้วยคําแนะนําสําหรับไคลเอ็นต์ User Agent

การเข้าถึงข้อมูล User Agent อย่างละเอียดมีเหตุผลที่ถูกต้องมากมาย เช่น การแสดงเนื้อหาเฉพาะอุปกรณ์ ฟังก์ชันการป้องกันการประพฤติมิชอบ หรือการบันทึกแบบละเอียด หากต้องการข้อมูลที่ละเอียดยิ่งขึ้น คุณสามารถใช้ User-Agent Client Hints (UA-CH) API เพื่อเข้าถึงข้อมูลดังกล่าว UA-CH จะใช้ได้ผ่านส่วนหัว HTTP หรือ JavaScript เช่นเดียวกับ User Agent

คุณอาจเห็นส่วนหัวเริ่มต้นที่ส่งพร้อมกับคำนำหน้า Sec-CH-UA- ซึ่งบอกข้อมูลเบราว์เซอร์ เวอร์ชันหลัก ระบบปฏิบัติการ และระบุว่าเบราว์เซอร์เป็นอุปกรณ์เคลื่อนที่หรือไม่

ส่วนหัวคำขอคำแนะนำสำหรับไคลเอ็นต์ User Agent เริ่มต้นจาก Chrome:

Sec-CH-UA: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

คุณสามารถใช้ส่วนหัว Accept-CH ในการตอบกลับเพื่อขอข้อมูลเพิ่มเติมได้ ในกรณีนี้ คุณสามารถขอ Sec-CH-UA-Platform-Version และ Sec-CH-UA-Model เพื่อรับ Android เวอร์ชันและประเภทอุปกรณ์นั้นอีกครั้งในคำขอต่อๆ ไป

ส่วนหัวการตอบกลับจากเซิร์ฟเวอร์ที่ระบุเวอร์ชันและรุ่นของแพลตฟอร์ม:

Accept-CH:
  Sec-CH-UA-Platform-Version,
  Sec-CH-UA-Model

ส่งส่วนหัวคำขอกลับไปยัง Chrome ซึ่งรวมถึงเวอร์ชัน Android และชื่อรุ่น:

Sec-CH-UA-Platform-Version: "13.0.0"
Sec-CH-UA-Model: "Pixel 7"

คุณทําสิ่งเดียวกันใน JavaScript ได้โดยเรียกใช้ getHighEntropyValues() ใน userAgentData API โดยส่งอาร์เรย์ของค่าที่ต้องการ ได้แก่ platformVersion และ model ซึ่งจะแสดงผลพรอมต์ที่มีออบเจ็กต์ซึ่งมีค่าที่เฉพาะเจาะจง

navigator.userAgentData
 .getHighEntropyValues(
   ['platformVersion', 'model']
 ).then(ua => { console.log(ua)
 });

{
  "platformVersion": "13.0.0",
  "model": "Pixel 7"
}

คำขอข้ามแหล่งที่มาหรือคำขอเริ่มต้น

หากมีทรัพยากรข้ามแหล่งที่มาในหน้าเว็บซึ่งต้องใช้ค่าเหล่านี้ คุณสามารถอนุญาตให้เข้าถึงได้ผ่านส่วนหัว HTTP ของ Permissions-Policy หรือใช้เมตาแท็ก Delegate-CH ใน HTML

หากเว็บไซต์จำเป็นต้องมีค่าที่มีความละเอียดอ่อนเหล่านี้ในคำขอระดับบนสุดแรก คุณสามารถใช้ส่วนหัว HTTP Critical-CH ซึ่งจะบอกให้เบราว์เซอร์ลองส่งคำขอแรกอีกครั้งโดยเพิ่มคำแนะนำเพิ่มเติมเหล่านั้น ซึ่งอาจมีประโยชน์สําหรับระบบเดิมที่อัปเดตได้ยาก แต่คุณไม่ควรใช้ค่าที่มีความละเอียดอ่อนเหล่านี้เพื่อแสดง HTML เริ่มต้น

ดูข้อมูลเพิ่มเติม

หากต้องการดูสตริง User Agent ที่สั้นลงในการใช้งาน ให้ดูข้อมูลต่อไปนี้

  • ดูสตริง User Agent ที่ลดขนาดแล้วสําหรับอุปกรณ์ของคุณได้ที่ goo.gle/reduced-ua-demo
  • ดูคำแนะนำไคลเอ็นต์ User-Agent ทั้งหมดของ JavaScript และส่วนหัว HTTP สำหรับอุปกรณ์ของคุณได้ที่ goo.gle/ua-ch-demo
  • ส่งสตริง User Agent ที่ลดขนาดแล้วในเบราว์เซอร์ของคุณโดยเปิดใช้ #reduce-user-agent Flag ของ Chrome

นอกจากนี้ คุณยังลงทะเบียนเข้าร่วมช่วงทดลองใช้การลด User Agent จากต้นทางเพื่อรับ User Agent ที่ลดลงในเว็บไซต์ได้ แม้ว่าเราจะสิ้นสุดช่วงทดลองใช้นี้ในช่วงต้นเดือนมีนาคมเนื่องจากเรากำลังเพิ่มการส่ง User Agent ที่ลดลงโดยค่าเริ่มต้น

เรามีแหล่งข้อมูลเพิ่มเติมในหน้า Landing Page เกี่ยวกับการลด User Agent และคุณยังแจ้งปัญหาในที่เก็บ GitHub สำหรับการลด User Agent โดยเฉพาะได้ด้วย