อภิธานศัพท์ · Fingerprinting
User agent (User-Agent string)
การระบุตัวตนของเบราว์เซอร์และ OS ที่เบราว์เซอร์ส่งใน User-Agent header และเปิดเผยต่อ JavaScript
นิยาม
ใน HTTP user agent คือซอฟต์แวร์ไคลเอนต์ที่ทำการร้องขอ และ User-Agent request header คือข้อความสตริงที่ส่งไปเพื่อให้เซิร์ฟเวอร์สามารถระบุแอปพลิเคชัน ระบบปฏิบัติการ ผู้ผลิต และเวอร์ชันได้ MDN ระบุว่าข้อมูลนี้ก่อให้เกิดความกังวลด้านความเป็นส่วนตัวมาโดยตลอดเนื่องจากสามารถนำไปใช้ในการทำ fingerprinting ได้ เบราว์เซอร์ Chromium สมัยใหม่จะส่งสตริงที่ลดทอนลงและย้ายค่ารายละเอียดไปยัง User-Agent Client Hints (header Sec-CH-UA-* และ navigator.userAgentData)
วิธีการทำงาน
- เบราว์เซอร์จะส่ง User-Agent ไปพร้อมกับทุกการร้องขอ; ค่าทั่วไปของ Chrome บนเดสก์ท็อปจะมีลักษณะเหมือน "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" โทเค็น "Mozilla/5.0", "KHTML, like Gecko" และ "Safari" ถูกเก็บไว้เพื่อความเข้ากันได้ทางประวัติศาสตร์
- เนื่องจากการลดทอน User-Agent (เริ่มใช้ตั้งแต่ Chrome 101 ถึง 110) Chrome จะตรึงเวอร์ชันย่อยไว้ที่ 0.0.0, ใช้สตริงแพลตฟอร์มเดสก์ท็อปแบบคงที่ และใน Android จะส่ง "Android 10; K" แบบคงที่แทนเวอร์ชัน OS และรุ่นอุปกรณ์จริง ค่าที่ลดทอนลงแบบเดียวกันนี้จะปรากฏใน navigator.userAgent และ navigator.platform
- Chromium เบราว์เซอร์ยังส่ง Client Hints ที่มีเอนโทรปีต่ำโดยค่าเริ่มต้นด้วย เช่น Sec-CH-UA (แบรนด์และเวอร์ชันหลัก), Sec-CH-UA-Mobile และ Sec-CH-UA-Platform เซิร์ฟเวอร์สามารถขอคำใบ้ที่มีเอนโทรปีสูง เช่น เวอร์ชันแพลตฟอร์ม, รุ่น, สถาปัตยกรรม หรือรายการเวอร์ชันเต็มด้วย Accept-CH response header และเบราว์เซอร์จะเป็นผู้ตัดสินใจว่าจะส่งอะไรกลับไป
ทำไมจึงสำคัญ
- User agent เป็นหนึ่งในสัญญาณแบบพาสซีฟ (passive signals) ใน browser fingerprint: มันจะมาพร้อมกับทุกคำขอโดยไม่ต้องมีการรันสคริปต์ใดๆ
- ระบบตรวจจับสามารถเปรียบเทียบ User-Agent string กับ Client Hints และค่า JavaScript (navigator.platform, ขนาดหน้าจอ, การรองรับการสัมผัส) โปรไฟล์ที่มีค่าไม่ตรงกันจะดูโดดเด่นกว่าโปรไฟล์ที่เป็นค่าทั่วไป
- Antidetect browsers อนุญาตให้แต่ละโปรไฟล์ตั้งค่า user agent ของตนเอง; เครื่องมือที่ดีจะรักษา Client Hints, แพลตฟอร์ม และเวอร์ชันของ browser-engine ให้สอดคล้องกัน
ข้อจำกัดและความเข้าใจผิดทั่วไป
- "การเปลี่ยน User-Agent string เปลี่ยน browser fingerprint ของฉัน" มันเปลี่ยนเพียงค่าเดียว; Client Hints, JavaScript APIs, ผลลัพธ์จาก Canvas/WebGL และฟอนต์ ยังคงอธิบายการตั้งค่าจริง เว้นแต่สิ่งเหล่านั้นจะถูกเปลี่ยนให้สอดคล้องกันด้วย
- "User-Agent string แสดง OS และอุปกรณ์ที่แน่นอนของฉัน" ใน Chrome เวอร์ชันที่ลดข้อมูลลง มันไม่แสดงแบบนั้นอีกต่อไป — Windows 8.1 และ Windows 11 ทั้งคู่รายงาน "Windows NT 10.0" และอุปกรณ์ Android รายงาน "Android 10; K"
- "User agent ที่หายากหรือใหม่มากจะปลอดภัยกว่า" ค่าที่ไม่ปกติหรือข้อมูลที่ไม่ตรงกันจะทำให้คุณถูกระบุตัวตนได้ง่ายขึ้น; ในขณะที่การผสมผสานที่พบได้ทั่วไปและมีความสอดคล้องกันภายในจะมีความโดดเด่นน้อยกว่า
ตัวอย่าง: โปรไฟล์หนึ่งอ้างว่า "Macintosh; Intel Mac OS X 10_15_7" ใน User-Agent ของมัน แต่คำใบ้ Sec-CH-UA-Platform บอกว่า "Windows" และ navigator.platform คืนค่า "Win32" เว็บไซต์ที่เปรียบเทียบค่าทั้งสามนี้สามารถเห็นได้ว่าโปรไฟล์นี้ไม่ใช่สิ่งที่มันอ้าง
ไม่มีเบราว์เซอร์หรือพร็อกซีใดสามารถรับประกันได้ว่าบัญชีจะไม่ถูกจำกัด โปรดปฏิบัติตามกฎของแต่ละแพลตฟอร์ม
คำศัพท์ที่เกี่ยวข้อง
- Browser fingerprint — การผสมผสานระหว่างลักษณะเฉพาะของเบราว์เซอร์และอุปกรณ์ที่สามารถระบุตัวตนเบราว์เซอร์ได้โดยไม่ต้องใช้คุกกี้
- Canvas fingerprinting — การระบุอุปกรณ์จากความแตกต่างเพียงเล็กน้อยในวิธีการเรนเดอร์การวาดภาพบน HTML canvas
- Browser profile — ชุดข้อมูลเบราว์เซอร์ที่แยกต่างหาก — คุกกี้, ประวัติ, การตั้งค่า, ส่วนขยาย — ที่ถูกเก็บแยกจากโปรไฟล์อื่น
คู่มือที่เกี่ยวข้อง
ต้นฉบับ
- MDN: User-Agent header (เอกสารเบราว์เซอร์)
- MDN: HTTP Client hints (เอกสารเบราว์เซอร์)
- Chromium: User-Agent Reduction (เอกสารเบราว์เซอร์)
- Chrome for Developers: User-Agent Client Hints (เอกสารเบราว์เซอร์)
ตรวจสอบแล้ว 2026-11-07