อภิธานศัพท์ · Fingerprinting
Canvas fingerprinting
การระบุอุปกรณ์จากความแตกต่างเพียงเล็กน้อยในวิธีการเรนเดอร์การวาด HTML canvas
นิยาม
Canvas fingerprinting คือเทคนิคที่หน้าเว็บวาดข้อความหรือรูปทรงด้วย HTML Canvas API และอ่านค่าพิกเซลที่ได้กลับมา เนื่องจากกระบวนการเรนเดอร์ขึ้นอยู่กับ GPU, ไดรเวอร์กราฟิก, ฟอนต์ และการทำ anti-aliasing ผลลัพธ์ที่ได้จึงอาจแตกต่างกันเล็กน้อยในแต่ละอุปกรณ์ และค่า hash ของผลลัพธ์นั้นจะกลายเป็นสัญญาณลายนิ้วมือหนึ่งอย่าง
วิธีการทำงาน
- สคริปต์จะสร้างองค์ประกอบ canvas (ซึ่งมักจะมองไม่เห็น) และวาดข้อความ, emoji, ไล่เฉดสี หรือรูปทรงด้วยบริบท 2D
- มันจะอ่านผลลัพธ์ด้วยวิธีการต่างๆ เช่น toDataURL() ซึ่งจะคืนค่ารูปภาพเป็น data URL หรือ getImageData()
- ข้อมูลพิกเซลจะถูกนำไปทำ hash การตั้งค่าที่เหมือนกันมักจะให้ค่า hash ที่เหมือนกัน ส่วนฮาร์ดแวร์หรือชุดฟอนต์ที่ต่างกันมักจะไม่เหมือนกัน
ทำไมจึงสำคัญ
- มันไม่ต้องการการขออนุญาตและทำงานได้โดยไม่ต้องใช้คุกกี้ ดังนั้นจึงถูกใช้อย่างแพร่หลายโดยสคริปต์ติดตามและสคริปต์ป้องกันการทุจริต
- มันเป็นหนึ่งในสัญญาณที่เบราว์เซอร์ antidetect และเบราว์เซอร์ที่เน้นความเป็นส่วนตัวพยายามควบคุม ไม่ว่าจะโดยการทำให้ผลลัพธ์มีความสม่ำเสมอหรือโดยการเพิ่มสัญญาณรบกวน (noise)
ข้อจำกัดและความเข้าใจผิดทั่วไป
- "Canvas เพียงอย่างเดียวก็ระบุตัวตนฉันได้" มันเป็นเพียงหนึ่งสัญญาณ และมักจะถูกนำไปรวมกับสัญญาณอื่นๆ เช่น WebGL, ฟอนต์ และข้อมูลหน้าจอ
- "การเพิ่มสัญญาณรบกวนแบบสุ่มนั้นมองไม่เห็น" สัญญาณรบกวนที่เปลี่ยนไปในทุกการอ่านสามารถถูกตรวจจับได้เองโดยการวาดรูปเดิมสองครั้งแล้วนำมาเปรียบเทียบกัน
ตัวอย่าง: การวาดประโยคเดียวกันด้วยฟอนต์เดียวกันบนแล็ปท็อปที่มีกราฟิกแบบออนบอร์ด และบนเดสก์ท็อปที่มี GPU แยก อาจทำให้เกิดความแตกต่างของพิกเซลที่มองไม่เห็นด้วยตาเปล่า แต่แตกต่างกันเมื่อนำไปทำ hash
ไม่มีเบราว์เซอร์หรือพร็อกซีใดสามารถรับประกันได้ว่าบัญชีจะไม่ถูกจำกัด โปรดปฏิบัติตามกฎของแต่ละแพลตฟอร์ม
คำศัพท์ที่เกี่ยวข้อง
- Browser fingerprint — การผสมผสานระหว่างลักษณะเฉพาะของเบราว์เซอร์และอุปกรณ์ที่สามารถระบุตัวตนเบราว์เซอร์ได้โดยไม่ต้องใช้คุกกี้
- WebGL fingerprinting — การใช้ข้อมูลกราฟิก WebGL และผลลัพธ์การเรนเดอร์เพื่อระบุตัวตนอุปกรณ์
คู่มือที่เกี่ยวข้อง
ต้นฉบับ
- MDN: Canvas API (เอกสารเบราว์เซอร์)
- MDN: HTMLCanvasElement.toDataURL() (เอกสารเบราว์เซอร์)
- W3C: การบรรเทาการทำ Browser Fingerprinting ในข้อกำหนดเว็บ (มาตรฐาน)
ตรวจสอบแล้ว 2026-11-07