Skip to content

CAPTCHA สำหรับฟอร์มบนมือถือ: ป้องกันบอทโดยไม่ต้องมีปริศนา

คำตอบสั้น ๆ: การป้องกันบอทที่ดีที่สุดสำหรับฟอร์มบนมือถือคือการเลี่ยงปริศนารูปภาพทั้งหมด ส่งบันเดิลขนาดเล็ก ทำงานได้ในเว็บวิวและเบราว์เซอร์ที่เน้นความเป็นส่วนตัว และไม่ลงโทษผู้ใช้เพราะสัญญาณลายนิ้วมืออ่อน Cap คือทางเลือกแทน CAPTCHA ที่ฟรี โอเพนซอร์ส และโฮสต์เองได้ ซึ่งสร้างมาเพื่อสิ่งนี้พอดี: ช่องติ๊กที่แตะครั้งเดียว หนุนหลังด้วย proof-of-work และ challenge แบบ instrumentation แทนปริศนาหรือการสร้างโปรไฟล์

ทำไม CAPTCHA ถึงแย่กว่าบนมือถือ?

มือถือคือจุดที่ CAPTCHA ทำร้ายอัตราการเปลี่ยนเป็นลูกค้ามากที่สุด:

  • ตารางรูปภาพไม่พอดีจอ "เลือกไฟจราจรทั้งหมด" บนจอ 6 นิ้วหมายถึงต้องเพ่ง ต้องซูม และแตะพลาด การวนให้ลองใหม่ที่แค่น่ารำคาญบนเดสก์ท็อป กลายเป็นเรื่องน่าโมโหบนมือถือ
  • คีย์บอร์ดและการเติมข้อมูลอัตโนมัติถูกขัดจังหวะ challenge ที่โผล่กลางฟอร์มจะทำให้คีย์บอร์ดหุบ ทำลายการเติมข้อมูลอัตโนมัติ และทำให้ผู้ใช้หลุดจากตำแหน่งที่กรอกอยู่
  • สัญญาณอ่อนกว่าสำหรับระบบ "ล่องหน" ระบบที่อิงลายนิ้วมือและพฤติกรรมพึ่งการขยับเมาส์และตัวตนบนเครือข่ายที่คงที่ แต่บนมือถือไม่มีเมาส์ มี NAT ระดับผู้ให้บริการอย่างหนัก (ผู้ใช้หลายพันคนอยู่หลัง IP เดียว) และมีการกันการติดตามอย่างเข้มใน Safari สัญญาณน้อยลงก็แปลว่าเดาผิดมากขึ้น และการเดาผิดก็กลายเป็นปริศนาหรือการบล็อก
  • เว็บวิว ทราฟฟิกมือถือสัดส่วนมหาศาลมาจากเบราว์เซอร์ในแอป (Instagram, TikTok, Gmail) ซึ่งดู "น่าสงสัย" ในสายตาระบบที่อิงลายนิ้วมือ
  • แบนด์วิดท์และแบตเตอรี่ สคริปต์ CAPTCHA ขนาดเกิน 500 KB บนมือถือระดับกลางผ่านเครือข่ายมือถือ คือต้นทุนจริงตั้งแต่ก่อนผู้ใช้จะพิมพ์อะไรเสียอีก

การป้องกันบอทที่เป็นมิตรกับมือถือต้องมีอะไร

  1. ไม่มีปริศนาภาพ ไม่ว่าจะในกรณีสำรองใด ๆ ถ้าระบบสามารถเสิร์ฟตารางรูปภาพได้ สุดท้ายผู้ใช้มือถือก็จะได้เจอ
  2. มนุษย์ผ่านได้แน่นอน ไม่มีคะแนนความเสี่ยงที่แย่ลงเมื่อเจอ IP มือถือหลัง NAT หรือเว็บวิว
  3. บันเดิลเล็ก ตัวป้องกันไม่ควรมีต้นทุนมากกว่าตัวฟอร์มเอง
  4. UX ที่เน้นการสัมผัส แตะไม่เกินหนึ่งครั้ง มีการบอกความคืบหน้าชัดเจน และไม่รบกวนคีย์บอร์ด
  5. ต้นทุนที่ปรับได้ เวลาที่ใช้แก้ควรเป็นปุ่มที่คุณควบคุมเอง เครื่องระดับล่างจะได้ไม่ต้องรอนาน

Cap ทำงานอย่างไรบนฟอร์มมือถือ

  • แตะครั้งเดียว แล้วดูความคืบหน้า ผู้ใช้แตะช่องติ๊ก จากนั้นเปอร์เซ็นต์ความคืบหน้าจะไล่ขึ้นขณะที่ proof-of-work ทำงานในเบราว์เซอร์ ไม่มีรูปภาพ ไม่ต้องพิมพ์ และคีย์บอร์ดไม่หุบ ส่วนในโหมดลอยหรือโหมด programmatic จะไม่มีอะไรให้เห็นเลยจนกว่าจะส่งฟอร์ม
  • วิดเจ็ตราว 20 KB เป็น web component ตัวเดียว ไม่พึ่งเฟรมเวิร์ก และประหยัดเมื่อใช้เครือข่ายมือถือ ดูการวัดประสิทธิภาพ
  • ไม่มีการลงโทษจากลายนิ้วมือ Cap ไม่สนใจว่าผู้เข้าชมจะอยู่หลัง NAT ของผู้ให้บริการ อยู่ในเว็บวิวของ Instagram หรือใช้ Safari บน iOS ที่เปิดกันการติดตาม เพราะ proof-of-work เป็นการคำนวณชุดเดียวกันสำหรับทุกคน
  • ความยากเป็นของคุณ ตั้งค่าแยกรายคีย์ได้บนเซิร์ฟเวอร์ standalone เบาลงสำหรับทราฟฟิกชำระเงินของผู้บริโภคบนเครื่อง Android ระดับกลาง และหนักขึ้นสำหรับ endpoint สมัครสมาชิกที่เสี่ยงถูกใช้ในทางที่ผิด
  • instrumentation ยังทำงานอยู่ challenge แบบ instrumentation ตรวจว่ามีสภาพแวดล้อมเบราว์เซอร์จริง จึงจับระบบอัตโนมัติแบบ headless ที่ PoW อย่างเดียวจับไม่ได้ โดยไม่ต้องสร้างโปรไฟล์ของมนุษย์

มีข้อแลกเปลี่ยนที่ควรพูดตรง ๆ: proof-of-work กินเวลา CPU และมือถือระดับล่างก็แก้ช้ากว่าเดสก์ท็อป Cap บรรเทาด้วยความยากที่ปรับได้และการบอกความคืบหน้าที่มองเห็น อีกทั้งงานนี้เกิดขึ้นครั้งเดียวต่อฟอร์ม ไม่ใช่ทุกครั้งที่เปิดหน้า

ตัวเลือกอื่นเป็นอย่างไรบนมือถือ

  • reCAPTCHA v2 / hCaptcha: ตารางรูปภาพคือประสบการณ์บนมือถือที่แย่ที่สุด และทั้งคู่ก็ถอยกลับไปใช้มัน อีกทั้งไคลเอนต์ของ reCAPTCHA ยังหนักเกิน 500 KB Cap กับ reCAPTCHA → · Cap กับ hCaptcha →
  • reCAPTCHA v3: ล่องหนก็จริง แต่อิงคะแนน และสัญญาณที่อ่อนบนมือถือ (NAT, เว็บวิว) ก็ฉุดคะแนนลง โดยไม่มีทางอุทธรณ์
  • Turnstile: ล่องหนและเบา แต่ขับเคลื่อนด้วยลายนิ้วมือ ฟีเจอร์ความเป็นส่วนตัวใน Safari บนมือถือและในเว็บวิวเป็นต้นเหตุของความผิดพลาดที่รู้กันดี และคุณแก้คำตัดสินของมันไม่ได้ Cap กับ Turnstile →
  • FriendlyCaptcha: ใช้ PoW เหมือน Cap ในเชิงกลไกจึงใช้ได้ดีบนมือถือ แต่โฮสต์ให้ คิดราคาตามโควตา และมีแค่ PoW Cap กับ FriendlyCaptcha →
  • SilentShield: การวิเคราะห์พฤติกรรมพึ่งรูปแบบการใช้เมาส์ คีย์บอร์ด และการเลื่อนหน้า ซึ่งเป็นสัญญาณที่บางกว่าและมีรูปแบบต่างออกไปบนอุปกรณ์สัมผัส คุณภาพการจำแนกบนมือถือจึงตรวจสอบได้ยากโดยธรรมชาติ อีกทั้งยังเป็นบริการปิดที่คิดราคาตามโควตา Cap กับ SilentShield →

หมายเหตุเรื่องการนำไปใช้

  • วางวิดเจ็ตไว้ใน <form> ของคุณ แล้ว Cap จะแทรกฟิลด์ cap-token ให้อัตโนมัติ โดยไม่ต้องเขียน JavaScript เริ่มต้นใช้งาน →
  • สำหรับ SPA และเว็บวิวในแอป ให้ใช้เหตุการณ์ solve หรือโหมด programmatic เพื่อควบคุมขั้นตอนได้เต็มที่
  • ทดสอบบน Android ระดับกลางตัวจริงผ่านเครือข่ายมือถือ ไม่ใช่แค่เรือธงบน Wi-Fi แล้วปรับความยากจนกว่าเวลาที่ใช้แก้จะรู้สึกเหมือนเสร็จทันทีสำหรับกลุ่มผู้ใช้ของคุณ
  • ถ้าคุณกำลังปกป้อง API ของแอปเนทีฟแทนที่จะเป็นฟอร์มบนเว็บ เซิร์ฟเวอร์ standalone ของ Cap ก็ตรวจสอบ token จากไคลเอนต์ใดก็ได้ที่รัน challenge ในเว็บวิวได้

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

CAPTCHA แบบไหนดีที่สุดสำหรับฟอร์มบนมือถือ?

แบบที่ไม่มีทางแสดงปริศนาและไม่ตัดสินผิดเลย โมเดลของ Cap ที่ใช้ช่องติ๊กบวก proof-of-work นั้นกำหนดผลได้แน่นอน มีขนาดราว 20 KB และออกแบบมาเพื่อการสัมผัสเป็นหลัก

จะหยุดสแปมในฟอร์มบนมือถืออย่างไร?

ใช้การเก็บต้นทุนแทนการตั้งคำถาม proof-of-work ทำให้การส่งข้อมูลแต่ละครั้งแพงในเชิงการประมวลผลสำหรับบอทที่ทำในสเกลใหญ่ ขณะที่ยังเป็นแค่การแตะครั้งเดียวสำหรับมนุษย์

CAPTCHA แบบล่องหนดีกว่าบนมือถือไหม?

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

Cap ใช้งานบนมือถือได้ไหม?

ได้ ทั้ง Safari บนมือถือ, Chrome, Firefox และเว็บวิวในแอป อีกทั้งปรับความยากได้ เวลาที่ใช้แก้จึงสั้นแม้บนเครื่องที่ช้ากว่า

CAPTCHA ตัวไหนสร้างแรงเสียดทานกับผู้ใช้น้อยที่สุด?

ตัวเลือกที่ไม่มีปริศนา ได้แก่ Cap, Turnstile, FriendlyCaptcha, ALTCHA และ SilentShield โดย Cap คือตัวที่โอเพนซอร์สและโฮสต์เองได้ ซึ่งแรงเสียดทานต่ำมาจากการออกแบบกลไก ไม่ใช่จากคำตัดสินของตัวจำแนก

ดูเพิ่มเติม

เผยแพร่ภายใต้สัญญาอนุญาต Apache 2.0