การลด User Agent (UA) จะลดข้อมูลระบุตัวตนที่แชร์ในสตริง User Agent ซึ่งอาจใช้สำหรับการสร้างลายนิ้วมือแบบพาสซีฟ ตอนนี้การเปลี่ยนแปลงเหล่านี้พร้อมให้บริการแก่ผู้ใช้ทั่วไปแล้ว คำขอทรัพยากรทั้งหมดจึงมีส่วนหัว User-Agent ที่ลดลง ด้วยเหตุนี้ ค่าที่ส่งคืนจากอินเทอร์เฟซ Navigator บางรายการจึงลดลง
ซึ่งรวมถึง navigator.userAgent, navigator.appVersion และ
navigator.platform
นักพัฒนาเว็บควรตรวจสอบโค้ดของเว็บไซต์เพื่อดูการใช้งานสตริง User-Agent หากเว็บไซต์ของคุณอาศัยการแยกวิเคราะห์สตริง User-Agent เพื่ออ่านรุ่นอุปกรณ์ เวอร์ชันแพลตฟอร์ม หรือเวอร์ชันเบราว์เซอร์แบบเต็ม คุณจะต้องใช้ API ของคำแนะนำสำหรับไคลเอ็นต์ของ User-Agent
คำแนะนำสำหรับไคลเอ็นต์ User Agent (UA-CH)
คำแนะนำไคลเอ็นต์ User-Agent อนุญาตให้เข้าถึง ชุดข้อมูล User-Agent ทั้งหมด แต่เฉพาะในกรณีที่เซิร์ฟเวอร์ประกาศอย่างชัดเจนว่า ต้องการข้อมูลบางอย่างโดยเฉพาะ
การนำข้อมูลผู้ใช้ที่เปิดเผยโดยไม่ได้ตั้งใจออกจะช่วยให้เราวัดและลดปริมาณข้อมูลที่เปิดเผยโดยเจตนาผ่านส่วนหัวของคำขอ, JavaScript API และกลไกอื่นๆ ได้ดีขึ้น
เหตุใดเราจึงต้องลด UA และ UA-CH
ในอดีต สตริง User-Agent จะออกอากาศสตริงข้อมูลขนาดใหญ่เกี่ยวกับเบราว์เซอร์ ระบบปฏิบัติการ และเวอร์ชันของผู้ใช้ทุกครั้งที่มีคำขอ HTTP ซึ่งเป็นปัญหาด้วยเหตุผล 2 ประการ ดังนี้
- ความละเอียดและรายละเอียดที่มากเกินไปอาจนำไปสู่การระบุตัวตนของผู้ใช้ได้
- ความพร้อมใช้งานของข้อมูลนี้โดยค่าเริ่มต้นอาจนำไปสู่การติดตามอย่างลับๆ
UA และ UA-CH ที่ลดลงช่วยปรับปรุงความเป็นส่วนตัวของผู้ใช้ด้วยการแชร์เฉพาะข้อมูลพื้นฐานโดยค่าเริ่มต้น
User-Agent ที่ลดขนาดลงจะมีแบรนด์และเวอร์ชันที่สำคัญของเบราว์เซอร์ แหล่งที่มาของคำขอ (เดสก์ท็อปหรืออุปกรณ์เคลื่อนที่) และแพลตฟอร์ม คำแนะนำสำหรับไคลเอ็นต์ User Agent ช่วยให้คุณขอข้อมูลที่เฉพาะเจาะจงเกี่ยวกับอุปกรณ์หรือเงื่อนไขของผู้ใช้ได้ เพื่อเข้าถึงข้อมูลเพิ่มเติม
นอกจากนี้ เมื่อเวลาผ่านไป สตริง User-Agent ก็ยาวขึ้นและซับซ้อนมากขึ้น ซึ่งทำให้การแยกวิเคราะห์สตริงมีแนวโน้มที่จะเกิดข้อผิดพลาด UA-CH ให้ข้อมูลที่มีโครงสร้างและเชื่อถือได้ ซึ่งตีความได้ง่ายกว่า
โค้ดที่มีอยู่ซึ่งแยกวิเคราะห์สตริง UA ไม่ควร
หยุดทำงาน (แม้ว่าจะแสดงข้อมูลน้อยลง) และคุณจะต้องย้ายข้อมูลไปยัง UA-CH
หากเว็บไซต์ต้องการข้อมูลไคลเอ็นต์ที่เฉพาะเจาะจง
UA และ UA-CH ที่ลดลงทำงานอย่างไร
ต่อไปนี้เป็นตัวอย่างสั้นๆ เกี่ยวกับวิธีการทำงานของสตริง User-Agent ที่ลดลงและ UA-CH ดูตัวอย่างแบบเจาะลึกเพิ่มเติมได้ที่การปรับปรุงความเป็นส่วนตัวของผู้ใช้และประสบการณ์ของนักพัฒนาแอปด้วยคำแนะนำสำหรับไคลเอ็นต์ของ User Agent
ผู้ใช้เปิดเบราว์เซอร์และป้อน example.com ในแถบที่อยู่
เบราว์เซอร์จะส่งคำขอเพื่อโหลดหน้าเว็บ
- เบราว์เซอร์จะรวมส่วนหัว
User-Agentไว้กับสตริง User Agent ที่ลดลง เช่นUser-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36 เบราว์เซอร์จะรวมข้อมูลเดียวกันนั้นไว้ในส่วนหัวคำแนะนำไคลเอ็นต์ User-Agent เริ่มต้น เช่น
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- เบราว์เซอร์จะรวมส่วนหัว
เซิร์ฟเวอร์สามารถขอให้เบราว์เซอร์ส่งคำแนะนำไคลเอ็นต์เพิ่มเติม เช่น รุ่นอุปกรณ์ โดยใช้ส่วนหัวการตอบกลับ
Accept-CHเช่นAccept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Modelเบราว์เซอร์จะใช้นโยบายและการกำหนดค่าของผู้ใช้เพื่อพิจารณาว่าข้อมูลใด ได้รับอนุญาตให้ส่งกลับไปยังเซิร์ฟเวอร์ในส่วนหัวของคำขอที่ตามมา เช่น
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
คำแนะนำสำหรับไคลเอ็นต์ที่สำคัญ
หากต้องการชุดคำแนะนำไคลเอ็นต์ที่เฉพาะเจาะจงในคำขอเริ่มต้น คุณสามารถใช้ส่วนหัวการตอบกลับ Critical-CH ได้ ค่า Critical-CH ต้องเป็นชุดย่อยของค่าที่ Accept-CH ร้องขอ
เช่น คำขอเริ่มต้นอาจรวมคำขอสำหรับ Device-Memory และ
Viewport-Width โดยระบบจะถือว่า Device-Memory มีความสำคัญ
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
หากเบราว์เซอร์ต้องการคำแนะนำที่สำคัญ (Critical-CH) เพื่อแสดงหน้าเว็บอย่างถูกต้อง เซิร์ฟเวอร์จะขอข้อมูลเพิ่มเติมนี้ได้โดยใช้ส่วนหัว Accept-CH จากนั้นเบราว์เซอร์จะส่งคำขอใหม่สำหรับหน้าเว็บ รวมถึงคำแนะนำที่สำคัญได้
กล่าวโดยสรุปคือ Accept-CH จะขอค่าทั้งหมดที่คุณต้องการสำหรับหน้าเว็บ ส่วน Critical-CH จะขอเฉพาะค่าที่จำเป็นต้องมีเมื่อโหลดเพื่อโหลดหน้าเว็บอย่างถูกต้อง โปรดดูข้อมูลเพิ่มเติมในข้อกำหนดความน่าเชื่อถือของคำแนะนำไคลเอ็นต์
ตรวจหาอุปกรณ์แท็บเล็ตด้วย UA-CH API
เนื่องจากเส้นแบ่งระหว่างอุปกรณ์เคลื่อนที่ แท็บเล็ต และเดสก์ท็อปยังคง ไม่ชัดเจนและรูปแบบที่เปลี่ยนแปลงได้เป็นเรื่องปกติมากขึ้น (หน้าจอพับ การสลับระหว่างโหมดแล็ปท็อปและแท็บเล็ต) จึงขอแนะนำให้ใช้การออกแบบที่ ปรับตามอุปกรณ์และการตรวจหาฟีเจอร์เพื่อนำเสนออินเทอร์เฟซผู้ใช้ที่เหมาะสม
อย่างไรก็ตาม ข้อมูลที่เบราว์เซอร์ระบุสำหรับทั้งสตริง User-Agent และคำแนะนำสำหรับไคลเอ็นต์ User-Agent มาจากแหล่งที่มาเดียวกัน ดังนั้นตรรกะในรูปแบบเดียวกัน จึงควรใช้งานได้
เช่น หากเลือกรูปแบบนี้ในสตริง UA
- รูปแบบโทรศัพท์:
'Android' + 'Chrome/[.0-9]* Mobile' - รูปแบบแท็บเล็ต:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
คุณอาจตรวจสอบอินเทอร์เฟซส่วนหัว UA-CH เริ่มต้นที่ตรงกันได้ดังนี้
- รูปแบบโทรศัพท์:
Sec-CH-UA-Platform: "Android",Sec-CH-UA-Mobile: ?1 - รูปแบบแท็บเล็ต:
Sec-CH-UA-Platform: "Android",Sec-CH-UA-Mobile: ?0
หรืออินเทอร์เฟซ JavaScript ที่เทียบเท่า
- รูปแบบโทรศัพท์:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true - รูปแบบแท็บเล็ต:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
สําหรับกรณีการใช้งานเฉพาะฮาร์ดแวร์ คุณขอชื่อรุ่นอุปกรณ์ได้ผ่านคำแนะนำSec-CH-UA-Modelที่มีเอนโทรปีสูง
ฉันจะใช้และทดสอบ UA ที่ลดลงได้อย่างไร
เริ่มต้นด้วยตรวจสอบโค้ดของเว็บไซต์ เพื่อดูอินสแตนซ์และการใช้งานสตริง User-Agent หากเว็บไซต์ของคุณอาศัยการแยกวิเคราะห์สตริง User-Agent เพื่ออ่านรุ่นอุปกรณ์ เวอร์ชันแพลตฟอร์ม หรือเวอร์ชันเบราว์เซอร์แบบเต็ม คุณจะต้องใช้ API ของ UA-CH
เมื่ออัปเดตเป็น UA-CH API แล้ว คุณควรทดสอบเพื่อให้แน่ใจว่าได้รับข้อมูลที่คาดไว้จาก User-Agent การทดสอบมี 3 วิธี โดยแต่ละวิธีจะมีความซับซ้อนเพิ่มขึ้น
ความพร้อมใช้งานที่ปรับขนาดสำหรับการลด User-Agent หมายถึงสตริง UA ที่ลดลงอย่างสมบูรณ์ ซึ่งจัดส่งในอุปกรณ์ Chrome ทั้งหมด การลดขนาดเริ่มขึ้นพร้อมกับการเผยแพร่ Chrome เวอร์ชันย่อยในไตรมาสที่ 2 ปี 2022
ทดสอบสตริงที่กำหนดเองในเครื่อง
หากต้องการทดสอบเว็บไซต์โดยใช้สตริง User-Agent ที่กำหนดเองเพื่อจำลอง
อุปกรณ์ต่างๆ ให้เปิด Chrome ด้วย
--user-agent="Custom string here"แฟล็กบรรทัดคำสั่ง ดูข้อมูลเพิ่มเติมเกี่ยวกับ
แฟล็กบรรทัดคำสั่งได้ที่นี่
หรือจะใช้โปรแกรมจำลองอุปกรณ์ในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome ก็ได้
แปลงสตริงในโค้ดของเว็บไซต์
หากคุณประมวลผลสตริง user-agent ของ Chrome ที่มีอยู่แล้วในโค้ดฝั่งไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์ คุณสามารถแปลงสตริงนั้นเป็นรูปแบบใหม่เพื่อทดสอบความเข้ากันได้
คุณสามารถทดสอบได้โดยการลบล้างและแทนที่สตริง หรือ
สร้างเวอร์ชันใหม่และทดสอบควบคู่กันไป
การรองรับคำแนะนำไคลเอ็นต์และคำแนะนำที่สำคัญ
มี Client Hints เริ่มต้น 3 รายการ ที่ส่งคืนไปยังเซิร์ฟเวอร์ ได้แก่ ชื่อเบราว์เซอร์และเวอร์ชันหลัก บูลีน ที่ระบุว่าเบราว์เซอร์อยู่ในอุปกรณ์เคลื่อนที่หรือไม่ และชื่อระบบปฏิบัติการ โดยจะส่งหลังจากแฮนด์เชคโปรโตคอล Transport Layer Security (TLS) ซึ่งพร้อมใช้งานและ รองรับในเบราว์เซอร์ของคุณอยู่แล้ว
อย่างไรก็ตาม อาจมีบางครั้งที่คุณต้องดึงข้อมูลสำคัญเพื่อให้เว็บไซต์แสดงผล
เพิ่มประสิทธิภาพคำแนะนำที่สำคัญ
แฮนด์เชคของ TLS เป็นขั้นตอนแรกในการสร้าง การเชื่อมต่อที่ปลอดภัยระหว่างเบราว์เซอร์กับเว็บเซิร์ฟเวอร์ ส่วนหัวการตอบกลับ Critical-CH ได้รับการออกแบบมาเพื่อบอกเบราว์เซอร์ให้ลองส่งคำขออีกครั้งทันทีหากคำขอแรก ถูกส่งโดยไม่มีคำแนะนำที่สำคัญ
Sec-CH-UA-Model 2 ครั้ง ครั้งแรกเป็นคำแนะนำไคลเอ็นต์ที่มี Accept-CH และอีกครั้งเป็นคำแนะนำที่สำคัญที่มี Critical-CHหากต้องการเพิ่มประสิทธิภาพคำแนะนำที่สำคัญ (ส่วนหัว Critical-CH) คุณต้องสกัดกั้นการแฮนด์เชคนี้และระบุโมเดลสำหรับคำแนะนำไคลเอ็นต์ ขั้นตอนเหล่านี้อาจซับซ้อนและต้องใช้ความรู้ขั้นสูง
ACCEPT_CHเฟรม HTTP/2 และ HTTP/3
รวมกับส่วนขยาย TLS ALPS
เป็นการเพิ่มประสิทธิภาพระดับการเชื่อมต่อเพื่อส่งค่ากำหนด Client Hint ของเซิร์ฟเวอร์
ให้ทันคำขอ HTTP แรก ซึ่งต้องมีการกำหนดค่าที่ซับซ้อน และเราขอแนะนำให้ใช้การกำหนดค่านี้กับข้อมูลที่สำคัญจริงๆ เท่านั้น
BoringSSL (ซึ่งเป็น Fork ของ OpenSSL) ช่วยให้คุณทำงานกับฟีเจอร์ทดลองของ Google ใน Chromium ได้ ปัจจุบัน ALPS ใช้งานได้ใน BoringSSL เท่านั้น
หากต้องการใช้คำแนะนำที่สำคัญ โปรดดูคำแนะนำเกี่ยวกับ ความน่าเชื่อถือและการเพิ่มประสิทธิภาพของคำแนะนำที่สำคัญ
คำถามที่พบบ่อย
ระบบจะส่งคำแนะนำที่ระบุผ่านส่วนหัว Accept-CH นานเท่าใด
ระบบจะส่งคำแนะนำที่ระบุผ่านส่วนหัว Accept-CH เป็นระยะเวลาของเซสชันเบราว์เซอร์หรือจนกว่าจะมีการระบุชุดคำแนะนำอื่น
UA-CH ใช้ได้กับ HTTP/2 และ HTTP/3 ไหม
UA-CH ใช้ได้กับการเชื่อมต่อทั้ง HTTP/2 และ HTTP/3
โดเมนย่อย (และ CNAME) ต้องมีหน้าเว็บระดับบนสุด Permissions-Policy เพื่อเข้าถึง UA-CH ที่มีเอนโทรปีสูงไหม
ระบบจะจํากัด UA-CH ที่มีเอนโทรปีสูงในส่วนหัวของคําขอสําหรับคําขอแบบข้ามต้นทาง
โดยไม่คํานึงถึงวิธีที่กําหนดต้นทางนั้นในฝั่ง DNS การมอบสิทธิ์ต้อง
จัดการผ่าน Permissions-Policy สำหรับทรัพยากรย่อยแบบข้ามต้นทาง หรือรับผ่าน
JavaScript ที่เรียกใช้ในบริบทแบบข้ามต้นทาง
การลด User-Agent ส่งผลต่อการตรวจหาบอทอย่างไร
การเปลี่ยนแปลงสตริง User-Agent ของ Chrome ไม่ส่งผลโดยตรงต่อสตริง User-Agent ที่บ็อตเลือกส่ง
บ็อตอาจเลือกที่จะอัปเดตสตริงของตนเองเพื่อให้สอดคล้องกับข้อมูลที่ Chrome ส่ง แต่การเลือกใช้ดังกล่าวขึ้นอยู่กับการตัดสินใจของบ็อตเอง Chrome ยังคงส่งรูปแบบ User-Agent เดียวกัน และบ็อต ที่ต่อท้ายตัวระบุของตนเองไว้ท้ายสตริง User-Agent ของ Chrome จะยังคงทำเช่นนั้นได้
หากมีข้อกังวลเกี่ยวกับบอทที่เฉพาะเจาะจง คุณอาจต้องติดต่อเจ้าของโดยตรงเพื่อสอบถามว่ามีแผนที่จะเปลี่ยนสตริง User-Agent หรือไม่
มีส่วนร่วมและแชร์ความคิดเห็น
- ช่วงทดลองใช้จากต้นทาง: แชร์ความคิดเห็นเกี่ยวกับช่วงทดลองใช้จากต้นทางก่อนหน้านี้
- การสาธิต: ลองการสาธิตการลด User Agent
- GitHub: อ่านคำอธิบาย UA-CH ถามคำถามและติดตามการสนทนา
ดูข้อมูลเพิ่มเติม
- การปรับปรุงความเป็นส่วนตัวของผู้ใช้และประสบการณ์ของนักพัฒนาแอป ภาพรวมสำหรับนักพัฒนาเว็บ
- ย้ายข้อมูลจากสตริง UA ไปยัง UA-CH: บทแนะนำสำหรับนักพัฒนาเว็บ
- เจาะลึก Privacy Sandbox