PowerScan
TH

สตริง User-Agent และ Client Hints: เผยอะไรและอะไรถูกระงับไว้

ลายนิ้วมือเบราว์เซอร์ · อ่าน 6 นาที · โดย PowerScan

ภาพ: Unsplash

สตริง user agent เป็นสัญญาณระบุตัวตนที่เก่าแก่ที่สุดบนเว็บ และเป็นสัญญาณที่เปลี่ยนมากที่สุดในไม่กี่ปีที่ผ่านมา การอ่านมันให้ดีหมายถึงการรู้ว่าอะไรยังอยู่ในนั้น อะไรถูกระงับไว้โดยตั้งใจ และรายละเอียดที่ถูกลบไปอยู่ที่ไหน

สตริงบอกอะไร

สตริง Chromium ปัจจุบันบน Windows หน้าตาแบบ Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 โทเค็นในอดีต (Mozilla/5.0, AppleWebKit, like Gecko, Safari) อยู่ที่นั่นเพื่อความเข้ากันได้กับสคริปต์ที่เขียนเมื่อหลายสิบปีก่อน และไม่มีข้อมูลใด ๆ ส่วนที่มีประโยชน์คือแพลตฟอร์ม (Windows NT 10.0 แม้บน Windows 11) สถาปัตยกรรม และเวอร์ชันหลักของเบราว์เซอร์

สิ่งที่เคยอยู่ที่นั่นถูกลบออกโดยตั้งใจ เวอร์ชันย่อยและแพตช์ตอนนี้เป็น 0.0.0 เวอร์ชัน Windows ถูกตรึงที่ 10.0 สตริง Android ไม่มีรุ่นอุปกรณ์อีกต่อไป นี่คือ "user agent reduction" ที่ Chromium ปล่อยระหว่างปี 2022 ถึง 2023 เพราะสตริงได้กลายเป็นพื้นผิว fingerprinting

Client Hints: ข้อมูลเดิม เมื่อมีการร้องขอ

รายละเอียดที่ถูกลบไม่ได้หายไป มันย้ายไปที่ User-Agent Client Hints เซิร์ฟเวอร์ขอฟิลด์เฉพาะได้ด้วยเฮดเดอร์ Accept-CH แล้วเบราว์เซอร์จะส่งเฮดเดอร์เช่น Sec-CH-UA-Platform-Version หรือ Sec-CH-UA-Model ในคำขอถัดไป คำใบ้ที่มี entropy ต่ำ (แบรนด์และเวอร์ชันหลัก แพลตฟอร์ม แฟล็กมือถือ) ถูกส่งโดยค่าเริ่มต้น ส่วนที่มี entropy สูง (เวอร์ชันเต็ม สถาปัตยกรรม bitness รุ่น เวอร์ชันแพลตฟอร์ม) ถูกส่งเฉพาะให้ไซต์ที่ขอ และสคริปต์ก็ขอชุดเดียวกันได้ผ่าน navigator.userAgentData.getHighEntropyValues()

เป้าหมายของการออกแบบคือไซต์ต้องประกาศว่าต้องการอะไร ซึ่งทำให้การเก็บข้อมูลมองเห็นและตรวจสอบได้ ในทางปฏิบัติ ไซต์ที่ต้องการทำ fingerprint ก็ยังขอทุกอย่างได้ ความต่างคือการขอเป็นคำขอที่เบราว์เซอร์มองเห็น บันทึก หรือปฏิเสธได้

ปัญหาความสอดคล้อง

เพราะข้อเท็จจริงเดียวกันมีให้จากสองแหล่ง จึงเปรียบเทียบกันได้ เบราว์เซอร์ที่เปลี่ยนสตริง user agent ให้อ้างว่าเป็น macOS แต่ปล่อยให้ navigator.userAgentData.platform รายงานว่าเป็น Windows ได้สร้างความขัดแย้งที่ตรวจจับได้ง่ายมาก เช่นเดียวกับคุณสมบัติ navigator.platform ฟอนต์เฉพาะระบบปฏิบัติการที่หน้าเว็บมองเห็น และสตริง renderer ของ WebGL ซึ่งระบุไดรเวอร์กราฟิกที่มีเฉพาะบนระบบปฏิบัติการเดียว การปลอมแค่สตริงเป็นกลยุทธ์ที่แพ้มาหลายปีแล้ว

อ่านของคุณเอง

เครื่องมือวินิจฉัยแสดงสตริงดิบ เบราว์เซอร์และเวอร์ชันที่แยกออกมาจากมัน และเอนจิน (Blink, Gecko หรือ WebKit) โปรดทราบว่าทุกเบราว์เซอร์บน iOS รายงานเป็น WebKit ไม่ว่าแบรนด์จะบอกอะไร เพราะ Apple กำหนดไว้ หากชื่อเบราว์เซอร์ที่แยกออกมาทำให้คุณแปลกใจ แสดงว่าสตริงถูกเปลี่ยนโดยส่วนขยายหรือการตั้งค่าโปรไฟล์ ว่านั่นเป็นปัญหาหรือไม่ขึ้นอยู่กับว่าส่วนที่เหลือของเบราว์เซอร์เห็นด้วยกับการเปลี่ยนแปลงนั้นหรือเปล่า

บทความทั้งหมด · เริ่มการสแกน