User-Agent Client Hints และการลด UA
เบราว์เซอร์ที่ใช้ Chromium ส่งสตริง User-Agent แบบลดทอน: รายละเอียดที่ระบุอุปกรณ์ได้แม่นยำที่สุดถูกตรึงเป็นค่าคงที่ และข้อมูลที่แม่นยำถูกย้ายไปไว้ใน User-Agent Client Hints (UA-CH) ซึ่งเว็บไซต์ต้องร้องขอเอง คู่มือนี้แยกวิเคราะห์สตริง Chrome บน Android แบบเดิมเทียบกับแบบลดทอน
ตัวอย่างพร้อมคำอธิบาย
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
- เบราว์เซอร์
- Chrome 99.0.4844.88
- เอนจิน
- Blink
- ระบบปฏิบัติการ
- Android 12
- ประเภทอุปกรณ์
- มือถือ
- อุปกรณ์
- Samsung SM-G991B
- สถาปัตยกรรม CPU
- ไม่ทราบ
- Bot / crawler
- ไม่
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
- เบราว์เซอร์
- Chrome 120.0.0.0
- เอนจิน
- Blink
- ระบบปฏิบัติการ
- Android 10
- ประเภทอุปกรณ์
- มือถือ
- อุปกรณ์
- K
- สถาปัตยกรรม CPU
- ไม่ทราบ
- Bot / crawler
- ไม่
สตริงแบบเดิมเปิดเผย Android 12, รุ่น Samsung SM-G991B และเวอร์ชันเต็ม 99.0.4844.88 ในสตริงแบบลดทอน Android 10 และรุ่น K เป็นค่าตัวยึดตำแหน่งที่อุปกรณ์ Android ทุกเครื่องส่ง และเวอร์ชันลงท้ายด้วย .0.0.0 ตัวแยกวิเคราะห์รายงานตามที่สตริงระบุทุกประการ — Android 10, รุ่น K — จึงมีเพียงเวอร์ชันหลัก 120 และโทเค็น Mobile ที่ยังมีข้อมูลจริง
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List
กฎสำคัญ
- สตริง Chrome แบบลดทอนเก็บไว้เพียงเวอร์ชันหลัก ส่วน minor, build และ patch เป็น 0.0.0 เสมอ
- บน Android เวอร์ชันระบบปฏิบัติการถูกกำหนดตายตัวเป็น 10 และรุ่นอุปกรณ์ถูกแทนที่ด้วย K บนเดสก์ท็อป แพลตฟอร์มถูกตรึงเป็นค่าต่างๆ เช่น Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7 หรือ X11; Linux x86_64
- ผ่าน HTTPS เบราว์เซอร์ Chromium ส่ง hint แบบ low-entropy สามตัวโดยค่าเริ่มต้น: Sec-CH-UA (แบรนด์และเวอร์ชันหลัก), Sec-CH-UA-Mobile และ Sec-CH-UA-Platform
- hint แบบละเอียด เช่น Sec-CH-UA-Platform-Version, Sec-CH-UA-Model และ Sec-CH-UA-Full-Version-List จะถูกส่งหลังจากเซิร์ฟเวอร์ร้องขอใน header ตอบกลับ Accept-CH เท่านั้น ใน JavaScript ให้ใช้ navigator.userAgentData.getHighEntropyValues()
- รายการแบรนด์มีรายการ “GREASE” ที่จงใจปลอมขึ้น เช่น “Not_A Brand” ให้มองหาแบรนด์ที่คุณต้องการแทนการเปรียบเทียบทั้ง header
- Windows 11 ยังคงส่ง Windows NT 10.0 ในสตริง User-Agent ส่วน Sec-CH-UA-Platform-Version ที่เป็น 13.0.0 ขึ้นไปบ่งบอกว่าเป็น Windows 11
- Client hints เป็นฟีเจอร์ของ Chromium จึงควรมี User-Agent เป็นทางสำรองสำหรับเบราว์เซอร์อื่น ตัวแยกวิเคราะห์นี้อ่านเฉพาะสตริง User-Agent ไม่ได้อ่าน client hints