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