เขตเวลาไม่ตรงกัน: การตรวจความสอดคล้องที่ถูกที่สุดบนเว็บ

ในบรรดาการตรวจความสอดคล้องทั้งหมดที่เว็บไซต์รันได้ การเปรียบเทียบเขตเวลาเป็นวิธีที่ถูกที่สุด มันต้องการเพียงการเรียก JavaScript หนึ่งครั้งและการสืบค้นหนึ่งครั้งที่เซิร์ฟเวอร์ทำอยู่แล้ว และเป็นหนึ่งในเหตุผลที่พบบ่อยที่สุดที่บัญชีถูกจับตามองเป็นครั้งที่สอง
สองเขตเวลา สองแหล่งที่มา
เขตเวลาแรกมาจากที่อยู่ของคุณ เซิร์ฟเวอร์รู้ว่าคำขอมาจากไหน และใช้ฐานข้อมูลภูมิศาสตร์จับคู่ที่อยู่นั้นกับภูมิภาคและเขตเวลาของมัน สำหรับการเชื่อมต่อจากปารีส นั่นคือ Europe/Paris สิ่งนี้เกิดขึ้นที่เซิร์ฟเวอร์ เบราว์เซอร์ของคุณไม่มีสิทธิ์เปลี่ยน
เขตเวลาที่สองมาจากเบราว์เซอร์ของคุณ Intl.DateTimeFormat().resolvedOptions().timeZone ส่งคืนชื่อ IANA ที่ระบบปฏิบัติการตั้งค่าไว้ และ new Date().getTimezoneOffset() ส่งคืนค่าออฟเซ็ต UTC ปัจจุบัน ถ้าเครื่องตั้งเป็นเบอร์ลิน หน้าเว็บจะเห็น Europe/Berlin ไม่ว่าแพ็กเก็ตจะมาจากที่ไหน
ทำไมจึงไม่ตรงกัน
เหตุผลที่บริสุทธิ์ใจคือการเดินทาง แล็ปท็อปที่ไม่เคยเปลี่ยนภูมิภาคของนาฬิกา และเครือข่ายองค์กรที่ออกอินเทอร์เน็ตในอีกประเทศหนึ่ง เหตุผลที่เว็บไซต์สนใจคือพร็อกซี เบราว์เซอร์ในประเทศหนึ่งที่ใช้ที่อยู่ในอีกประเทศ โดยไม่มีใครคิดถึงนาฬิกา ปารีสกับเบอร์ลินมีออฟเซ็ตเท่ากัน ดังนั้นออฟเซ็ตอย่างเดียวจะตรงกัน แต่ชื่อ IANA ไม่ตรง การตรวจที่เปรียบเทียบชื่อจะจับได้ นี่คือเหตุผลที่เครื่องมือวินิจฉัยแสดงทั้งชื่อของเบราว์เซอร์และชื่อของที่อยู่ แทนที่จะแสดงออฟเซ็ตตัวเลข
ความไม่ตรงกันหมายความว่าอย่างไร
โดยตัวมันเองไม่ได้ชี้ขาดอะไร คนจริงๆ จำนวนมากก็ทำให้เกิดมัน แต่มันเป็นสัญญาณที่ถูก และระบบให้คะแนนบวกสัญญาณถูกๆ เข้าด้วยกัน ความไม่ตรงกันบวกกับที่อยู่ที่จัดเป็นโฮสติ้งบวกกับแคนดิเดต WebRTC ในที่ที่สามเป็นเรื่องคนละเรื่องกับความไม่ตรงกันอย่างเดียว
ทำให้สองค่าตรงกัน
มีสองวิธีที่จะได้ผลที่สอดคล้องกัน ตั้งเขตเวลาของระบบปฏิบัติการให้ตรงกับที่อยู่ ซึ่งได้ผลแต่ทำยากเมื่อหลายโปรไฟล์ใช้ที่อยู่ต่างกัน หรือให้โปรไฟล์เบราว์เซอร์แทนที่เขตเวลาที่มันรายงาน ซึ่งเป็นสิ่งที่เบราว์เซอร์ที่สร้างมาเพื่อวัตถุประสงค์นี้ทำ เขตเวลาของโปรไฟล์ตามที่อยู่ที่มันเปิดด้วย ชื่อทั้งสองจึงตรงกันโดยอัตโนมัติ วิธีที่สองต้องครอบคลุมออฟเซ็ตปัจจุบัน การเปลี่ยนเวลาออมแสง และสตริงวันที่ที่แปลเป็นภาษาท้องถิ่นด้วย เพราะสคริปต์เปรียบเทียบทุกอย่างได้ โปรไฟล์ที่รายงาน Europe/Paris แต่จัดรูปแบบวันที่ด้วยออฟเซ็ตของเบอร์ลินแค่ย้ายความขัดแย้งไปที่อื่น
สิ่งที่ควรมองหาในรายงาน
เครื่องมือวินิจฉัยที่แสดง "เขตเวลาตาม IP" และ "เขตเวลา" เคียงกัน และทำเครื่องหมายเมื่อสองค่าต่างกัน กำลังทำสิ่งเดียวกับที่การตรวจของเว็บไซต์ทำ ถ้าตรงกัน การตรวจผ่าน ถ้าไม่ตรง ตอนนี้คุณรู้ว่าควรเปลี่ยนค่าไหน ไม่ว่ากรณีไหน การเปรียบเทียบนั้นเองคือส่วนที่มีประโยชน์ ไม่ใช่คะแนนที่แนบมา


