แบบทดสอบพิมพ์ตรวจจับการโกงอย่างไร? วิธีที่เราตรวจของเรา

แบบทดสอบพิมพ์ตรวจจับการโกงด้วยการตรวจบันทึกการกดแป้นที่อยู่เบื้องหลังแต่ละคะแนน ระบบของเราคำนวณทุกผลใหม่จากบันทึกการกดแป้น ตรวจแฮช ทดสอบโครงสร้างและจังหวะเวลาของบันทึก และกันผลแบบจับเวลาใดๆ ที่เกิน 130 WPM ซึ่งมีจังหวะเวลาดูผิดปกติด้วยไว้นอกตารางสาธารณะจนกว่าคุณจะผ่านการทดสอบซ้ำ การตรวจจังหวะเวลาจับบอตที่ทำแบบลวกๆ ได้ ส่วนการทดสอบซ้ำบังคับให้บอตที่ทำอย่างประณีตต้องทำทุกอย่างใหม่อีกรอบ

บอตตัวแรกที่ผ่านการตรวจจังหวะเวลาของเราได้คือบอตของเราเอง

ตัวช่วยทดสอบแบบ end-to-end ของเรากดปุ่มทุก 40 มิลลิวินาทีคงที่ เพราะสคริปต์ทดสอบก็ทำแบบนั้น เซิร์ฟเวอร์คำนวณผลใหม่ ยืนยันแฮช แล้วให้คะแนนรอบนั้นว่าน่าสงสัย ความแปรปรวนระหว่างการกดแป้นเป็นศูนย์ rollover เป็นศูนย์ เวลากดค้างเท่ากันทุกครั้ง เราต้องเพิ่มความคลาดเคลื่อนแบบสุ่มรายคำ และการหยุด "คิด" 80 ถึง 300 มิลลิวินาทีเป็นครั้งคราว ก่อนที่ชุดทดสอบของเราเองจะส่งผลที่ดูเหมือนมนุษย์ได้ ตัวเลือกนี้ยังอยู่ในโค้ด ชื่อว่า humanLike

การตรวจเหล่านี้ใช้ได้กับทุกอย่างที่ไม่พยายามหลบ และอะไรก็ตามที่พยายามก็ผ่านได้ การออกแบบจึงวางน้ำหนักจริงไว้ที่การทดสอบซ้ำ

ขั้นที่หนึ่ง: คำนวณทุกอย่างใหม่

เบราว์เซอร์ของคุณไม่ได้ส่ง WPM มาให้เรา มันส่งบันทึกการกดแป้น (ทุกเหตุการณ์ keydown, keyup, input และ composition พร้อมเวลาจากนาฬิกาแบบเดินหน้าอย่างเดียว performance.now()) ค่าที่มันคำนวณได้ และแฮช SHA-256 ของผลในรูปแบบมาตรฐาน

เซิร์ฟเวอร์รันโค้ดคำนวณค่าเดียวกันกับบันทึกแล้วเปรียบเทียบ ถ้าตัวเลขใดต่างกันเกิน 0.01 ผลจะถูกปฏิเสธเป็น metrics_mismatch ถ้าแฮชไม่ตรง จะถูกปฏิเสธเป็น hash_mismatch ส่วนขยายเบราว์เซอร์ที่แก้ช่อง WPM ซึ่งเป็นการโกงที่พบบ่อยที่สุดบนเว็บที่เชื่อข้อมูลจากฝั่งผู้ใช้ จะไม่ผ่านตรงนี้ ฟังก์ชันชุดเดียวกันสร้างตัวเลขบนหน้าจอของคุณและในฐานข้อมูล นั่นคือเหตุผลที่หน้าค่าวัด ของเรารับประกันได้ว่าตัวอย่างการคำนวณจะได้ผลตรงกันถึงทศนิยมสองตำแหน่ง

ทำไมไม่จับเวลาแบบทดสอบที่เซิร์ฟเวอร์? เพราะคะแนนของคุณจะรวมเวลาเครือข่ายเข้าไปด้วย ทุกการกดแป้นจะมาถึงเราช้าไปเล็กน้อย ด้วยระยะที่แปรผันตามการเชื่อมต่อของคุณ และคนที่พิมพ์เร็วแต่อินเทอร์เน็ตช้าจะเสียความเร็วที่เขามีจริง บันทึกให้นาฬิกาฝั่งผู้ใช้เพื่อความแม่นยำ และการคำนวณใหม่ที่เซิร์ฟเวอร์เพื่อความซื่อตรง

ขั้นที่สอง: บันทึกนี้สมเหตุสมผลไหม?

ก่อนการวิเคราะห์จังหวะเวลาใดๆ มีการตรวจรูปร่างของข้อมูลที่ส่งมาแบบตรงไปตรงมา:

  • แบบทดสอบต้องยาวอย่างน้อย 15 วินาทีหรือ 10 คำ รอบที่สั้นกว่านั้นมีสัญญาณรบกวนมากเกินกว่าจะจัดอันดับ และปั่นตัวเลขได้ง่ายที่สุด
  • ผลต้องไม่มาถึงก่อนเวลาที่แบบทดสอบจะจบได้ คือเวลาเริ่มบวกความยาวของแบบทดสอบเอง ผล 60 วินาทีที่มาถึงยี่สิบวินาทีหลังเริ่มคือสิ่งที่ไม่ได้เกิดขึ้นจริง
  • จำนวนเหตุการณ์ต้องสอดคล้องกับจำนวนตัวอักษรที่พิมพ์
  • บนเดสก์ท็อป ทุกเหตุการณ์ input ต้องตามหลัง keydown ภายใน 50 มิลลิวินาที ข้อนี้จับข้อความที่วาง เหตุการณ์ input ที่สร้างด้วยสคริปต์ และเครื่องมือฉีดการกดแป้นส่วนใหญ่ ซึ่งส่งข้อความโดยไม่มีปุ่มจริงถูกกด การพิมพ์ผ่านระบบป้อนข้อมูล (IME composition) ได้รับการยกเว้น และผลจากโทรศัพท์ไม่ขึ้นตารางสาธารณะ
  • บันทึกที่ไม่มีจุดเริ่ม ไม่มีจุดจบ หรือมีเวลาที่ไม่เดินหน้าตามลำดับ ถือว่าผิดรูปแบบและถูกปฏิเสธทันที

ไม่มีข้อไหนฉลาดล้ำ แต่ก็กำจัดปริมาณส่วนใหญ่ออกไปได้

ขั้นที่สาม: จังหวะการกดแป้นบอกอะไรได้บ้าง?

นี่คือส่วนที่เราตั้งใจไม่เปิดเผยทั้งหมด รายการคุณลักษณะเป็นข้อมูลสาธารณะ แต่เกณฑ์ตัดสินและน้ำหนักไม่ใช่ เกณฑ์ที่เผยแพร่คือเป้าให้เล็ง ถ้าเราบอกว่า "ส่วนเบี่ยงเบนมาตรฐานต่ำกว่า N มิลลิวินาทีจะถูกตั้งธง" สคริปต์ทุกตัวในเวอร์ชันถัดไปจะใส่ N บวกหนึ่ง คุณลักษณะที่เราให้คะแนน:

ช่วงห่างเฉลี่ยระหว่างปุ่มและความแปรผันของมัน การพิมพ์ของมนุษย์ไม่สม่ำเสมอ ในการศึกษาของ Dhakal และคณะปี 2018 กับนักพิมพ์ 168,960 คน ช่วงห่างเฉลี่ยระหว่างการกดแป้นอยู่ที่ประมาณ 239 มิลลิวินาที โดยมีส่วนเบี่ยงเบนมาตรฐานประมาณ 112 มิลลิวินาที สคริปต์ที่พิมพ์ด้วยช่วงคงที่แทบไม่มีความแปรผัน งานวิจัยบน arXiv ปี 2025 เกี่ยวกับ CAPTCHA ที่อาศัยการกดแป้นพบสิ่งนี้เป๊ะๆ ในบอตทดสอบของตัวเอง ซึ่งพิมพ์ด้วยความหน่วงคงที่ 50 มิลลิวินาที นี่คือสัญญาณที่แรงที่สุดของเรา และเป็นสัญญาณที่ตัวช่วยทดสอบของเราไปสะดุด

สัดส่วนของช่วงห่างที่ต่ำกว่า 40 มิลลิวินาที ช่วงห่าง 40 มิลลิวินาทีถ้ารักษาไว้ต่อเนื่องคือ 1,500 ตัวอักษรต่อนาที หรือ 300 WPM ที่คำละห้าตัวอักษร นิ้วมนุษย์ก็ทำช่วงห่างสั้นขนาดนั้นได้บางครั้งเมื่อกดปุ่มซ้อนกันระหว่าง rollover ช่วงห่างสั้นหนึ่งครั้งจึงไม่มีความหมายอะไร แต่บันทึกที่ช่วงห่างส่วนใหญ่สั้นขนาดนั้นไม่ใช่การพิมพ์

เวลากดค้างของปุ่ม นิ้วจริงแปรผันหลายสิบมิลลิวินาที เหตุการณ์สังเคราะห์มักมีเวลากดค้างเท่ากันทุกครั้งหรือเกือบเป็นศูนย์ เพราะเครื่องมือยิง keydown และ keyup ติดกัน

อัตรา rollover คือความถี่ที่ปุ่มถัดไปถูกกดลงก่อนปุ่มก่อนหน้าถูกปล่อย Dhakal วัดอัตรา rollover เฉลี่ยได้ 25% โดยนักพิมพ์ที่เร็วส่วนใหญ่ทำ rollover ใน 40 ถึง 70% ของการกดแป้น และปุ่มซ้อนกันเฉลี่ย 30 มิลลิวินาที นักพิมพ์ที่ช้าแทบไม่ใช้เลย ผลที่เร็วแต่ไม่มี rollover จึงโดดเด่นออกมา บอตแทบไม่กดปุ่มซ้อนกัน

การหยุดที่นานที่สุด การแกว่งของความเร็วในแต่ละวินาที และสัดส่วนของช่วงห่างที่เกินหนึ่งวินาที มนุษย์ลังเลในแบบที่สคริปต์ต้องถูกสั่งให้เลียนแบบ

โมเดลให้คะแนนรวมคุณลักษณะเหล่านี้เข้าด้วยกันและอาจตั้งธงว่าผลนั้นน่าสงสัย ต่ำกว่า 130 WPM ธงเพียงอย่างเดียวไม่ได้ปฏิเสธอะไร ผลของคุณไม่เคยถูกซ่อนจากตัวคุณ การตรวจเหล่านี้ตัดสินแค่ว่าผลนั้นจะติดอันดับหรือไม่

การโกงแบบทดสอบพิมพ์ผ่านการตรวจจังหวะเวลาได้ไหม?

ได้ ถ้าการโกงสร้างมาอย่างประณีต งานวิจัยบน arXiv เดือนมกราคม 2026 โดย David Condrey ทดสอบเครื่องตรวจจับจากจังหวะการกดแป้นที่ใช้แยกข้อความที่มนุษย์พิมพ์ออกจากข้อความที่ AI สร้าง เครื่องตรวจเหล่านี้แยกการฉีดข้อความอัตโนมัติทั้งหมดได้สมบูรณ์แบบ แต่การโจมตีด้วยจังหวะเวลาแบบมนุษย์ (คนที่พิมพ์ข้อความ AI ใหม่ หรือโปรแกรมที่สุ่มความหน่วงจากข้อมูลการพิมพ์ของมนุษย์) หลบตัวจำแนกได้ทั้งห้าตัวในอัตราอย่างน้อย 99.8% งานวิจัยนี้เกี่ยวกับการตรวจผู้ประพันธ์ ไม่ใช่แบบทดสอบพิมพ์ แต่บทเรียนใช้ได้เหมือนกัน คือขั้นที่สามจับได้แค่พวกลวกๆ และไม่ค่อยได้อะไรมากกว่านั้น

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

ขั้นที่สามจึงเป็นตัวกรอง คำตัดสินมาจากขั้นที่สี่

ขั้นที่สี่: การทดสอบซ้ำเพื่อยืนยัน

ถ้าผลแบบจับเวลาเกิน 130 WPM และจังหวะเวลาดูผิดปกติด้วย คุณจะเห็นผลนั้นและผลจะถูกบันทึก แต่จะยังไม่ขึ้นตารางสาธารณะจนกว่าคุณจะผ่านการทดสอบซ้ำเพื่อยืนยัน ซึ่งเป็นแบบทดสอบ 30 วินาทีรอบใหม่ และคุณต้องทำได้อย่างน้อย 75% ของความเร็วที่อ้าง ความบังเอิญครั้งเดียวหรือบันทึกที่ยืมมาไม่รอดในรอบที่สอง

ทำไมต้อง 130 WPM? ค่านี้ประมาณสองเท่าครึ่งของค่าเฉลี่ย 51.56 WPM ในข้อมูลของ Dhakal สูงกว่านักพิมพ์ส่วนใหญ่มาก และใครที่พิมพ์เร็วขนาดนั้นจริงก็ทำได้สองครั้ง ผลที่เร็วขึ้นมาอย่างกะทันหันพร้อมจังหวะเวลาแปลกๆ คือรูปแบบที่บันทึกที่ยืมมาหรือสคริปต์สร้างขึ้น และถ้าเป็นผลจริง การทดสอบเพิ่มอีกหนึ่งรอบก็เป็นราคาที่เล็กน้อย

การทดสอบซ้ำเป็นแบบทดสอบพิมพ์ธรรมดาด้วยข้อความธรรมดา ไม่ใช่ภาพที่บิดเบี้ยวหรือหน้าที่เต็มไปด้วยสัญลักษณ์แปลกๆ ข้อความที่อ่านยากทำให้ทุกคนช้าลง และคนที่ช้าลงมากที่สุดคือนักพิมพ์เร็วที่ซื่อสัตย์ ซึ่งการทดสอบซ้ำมีไว้เพื่อยืนยันให้พวกเขา การยืนยันที่นักพิมพ์เร็วที่ซื่อสัตย์สอบไม่ผ่านแย่กว่าการไม่มีเลย ข้อความธรรมดายังทำให้การตรวจยุติธรรมด้วย เพราะบันทึกของการทดสอบซ้ำเองต้องผ่านการตรวจจังหวะเวลาแบบเดียวกับผลอื่นๆ

การจำกัดอัตราและการแบน

การส่งผลถูกจำกัดอัตรา คือสามสิบครั้งต่อนาทีต่อผู้ใช้ที่ลงชื่อเข้าใช้ และหกสิบครั้งต่อที่อยู่ IP บัญชีที่ทำให้การตรวจสะดุดซ้ำๆ จะถูกแบนแบบเงียบ (shadow ban) หมายถึงถูกซ่อนจากตารางอย่างเงียบๆ และเหตุการณ์ป้องกันการโกงร้ายแรงสามครั้งภายใน 24 ชั่วโมงจะทำให้เกิดการแบนนี้โดยอัตโนมัติ การนับเหตุการณ์ภายในช่วงเวลาหมายความว่าผลแปลกๆ ครั้งเดียวจะไม่ทำให้คุณเสียบัญชี ส่วนสคริปต์ที่ไม่ผ่านซ้ำแล้วซ้ำเล่าจะหยุดได้อย่างรวดเร็ว

ตารางอันดับ ตลอดกาลยังกำหนดให้บัญชีต้องพิมพ์มาแล้ว 30 นาที บัญชีใหม่ที่มีรอบสมบูรณ์แบบเพียงรอบเดียวจึงขึ้นอันดับหนึ่งไม่ได้

อะไรที่ทำให้ถูกตั้งธงโดยไม่ได้ตั้งใจ

ผลที่ถูกตั้งธงส่วนใหญ่ไม่ใช่การโกง วิธีที่ทำให้การตรวจสะดุดโดยสุจริตมีดังนี้

การแก้คำอัตโนมัติบนโทรศัพท์ การแทนคำมาถึงเป็นเหตุการณ์ input เดียวที่เปลี่ยนตัวอักษรหลายตัว เรานับเป็นการกดหนึ่งครั้ง ตั้งธง และกันผลนั้นไว้นอกตารางสาธารณะพร้อมหมายเหตุ ไม่ใช่การปฏิเสธ

การวางข้อความ การวางถูกบล็อก และผลที่มีการพยายามวางจะไม่ขึ้นตาราง

การสลับแท็บ โฟกัสที่ออกจากหน้าเกินสองวินาทีระหว่างแบบทดสอบจะทำเครื่องหมายว่าถูกขัดจังหวะ ผลจะถูกบันทึกและแสดง แต่ไม่ติดอันดับ

การหยุด ช่วงห่างที่เกินห้าวินาทีในแบบทดสอบคำหรือคำคมจะทำเครื่องหมายว่าผลถูกหยุด ได้รับการจัดการแบบเดียวกัน

IME composition การป้อนภาษาญี่ปุ่น เกาหลี และจีนมาถึงผ่านเหตุการณ์ composition เราจึงข้ามกฎ keydown สำหรับภาษาเหล่านี้ ถ้ายังมีอะไรดูผิดอยู่ นั่นคือบั๊ก และเราอยากได้บันทึกนั้น

ผลแบบออฟไลน์ ผลที่ซิงก์มาหลังจบแบบทดสอบเกินสิบนาทีจะอยู่ในประวัติของคุณโดยไม่ติดอันดับ เพราะเราตรวจสอบนาฬิกาของมันไม่ได้

การเร็วจริงๆ เมื่อเกิน 130 WPM คุณจะเจอการทดสอบซ้ำ ซึ่งน่าจะเป็นในวันแรกที่คุณทำได้ดี

วิธียื่นอุทธรณ์

ทุกผลที่ถูกกันออกจะแสดงเหตุผลไว้ในประวัติของคุณ ถ้าคุณคิดว่าเราตัดสินผลหรือข้อจำกัดผิด ให้ส่งอีเมลไปยังที่อยู่สำหรับอุทธรณ์ในหน้าป้องกันการโกง ของเรา จากอีเมลที่ผูกกับบัญชีของคุณ พร้อมลิงก์ผลหรือวันที่และเวลาของแบบทดสอบ เจ้าหน้าที่จะดูรีเพลย์การกดแป้นและตอบกลับภายในไม่กี่วัน การอุทธรณ์ไม่เคยถูกตัดสินโดยโมเดลอัตโนมัติเพียงอย่างเดียว

เราเพิ่งเผยแพร่คู่มือวิธีผ่านการตรวจไปหรือเปล่า? ส่วนหนึ่งก็ใช่ รายการคุณลักษณะค้นพบได้จากพฤติกรรมของระบบอยู่แล้ว และเกณฑ์ตัดสินยังเป็นความลับ การทดสอบซ้ำคือส่วนที่สำคัญ และวิธีผ่านมันคือการพิมพ์

คำถามที่พบบ่อย

แบบทดสอบพิมพ์ตรวจจับบอตอย่างไร?

แบบทดสอบที่ดีจะอ่านบันทึกการกดแป้น ดูว่าทุกตัวอักษรมีการกดปุ่มอยู่เบื้องหลังหรือไม่ ช่วงห่างระหว่างปุ่มแปรผันแค่ไหน และปุ่มถูกกดค้างและซ้อนกันอย่างไร สคริปต์มักสม่ำเสมอเกินไป บอตที่ทำอย่างประณีตเลียนแบบมนุษย์ได้ นั่นคือเหตุผลที่เราเพิ่มการทดสอบซ้ำ

บอตผ่านระบบกันโกงของแบบทดสอบพิมพ์ได้ไหม?

บอตที่ทำอย่างประณีตผ่านการตรวจจังหวะเวลาได้ งานวิจัยเกี่ยวกับเครื่องตรวจจับจากจังหวะการกดแป้นพบว่าจังหวะเวลาปลอมที่เลียนแบบมนุษย์หลบได้แทบทุกครั้ง นั่นคือเหตุผลที่เรากันผลที่เร็วไว้รอการทดสอบซ้ำ ซึ่งบอตต้องผ่านอีกครั้งด้วยบันทึกชุดที่สองที่ผ่านการตรวจแบบเดียวกัน

ทำไมผลแบบทดสอบพิมพ์ของฉันไม่ติดอันดับ?

ส่วนใหญ่เป็นเพราะแบบทดสอบสั้นกว่า 15 วินาทีหรือ 10 คำ หยุดนานเกินห้าวินาที สลับแท็บ หรือผลเกิน 130 WPM ที่รอการทดสอบซ้ำ ประวัติของคุณแสดงเหตุผลไว้

แหล่งที่มา