หุ่นยนต์สามารถเอาชนะ CAPTCHAs ได้อย่างไร


84

ฉันมีแบบฟอร์มอีเมลเว็บไซต์ ฉันใช้ CAPTCHA ที่กำหนดเองเพื่อป้องกันสแปมจากหุ่นยนต์ อย่างไรก็ตามเรื่องนี้ฉันยังได้รับจดหมายขยะ

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

ฉันจะป้องกันสิ่งนี้ได้อย่างไร ฉันควรเปลี่ยนเป็น CAPTCHA ประเภทอื่นหรือไม่


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

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


86
ฉันต้องการที่จะตอบคำถามของคุณ: มนุษย์สามารถเอาชนะแคปต์ชาได้อย่างไร: บ่อยกว่านั้นไม่ใช่ว่าฉันจะต้องใช้เวลาหลายครั้งในการผ่าน
Pieter B

14
หากใครบางคนคิดว่าคำถามนี้สมควรได้รับการลงคะแนนเสียงอย่างน้อยก็อธิบายว่าทำไม
totymedli

10
@Blrfl ฉันไม่เข้าใจว่าหัวข้อนี้เป็นอย่างไร

47
หากคุณต้องการให้เราตอบคำถามของคุณก่อนอื่นให้พิสูจน์ว่าคุณไม่ใช่หุ่นยนต์
Pete Kirkham

7
@ Blrfl มันมีทุกอย่างที่เกี่ยวกับการพัฒนาซอฟต์แวร์ที่มีคุณภาพ
Izkata

คำตอบ:


72

วิธีที่ง่ายที่สุดสองวิธีในการผ่าน CAPTCHA:

  • ใช้ฟาร์มของมนุษย์เช่นขอให้ผู้คนเติมเงิน CAPTCHAs ให้เหมือนกับที่ProTypersทำ

  • ใช้ OCR

อาจมีข้อผิดพลาดทั้งในกลไก CAPTCHA เองหรือแอปพลิเคชันรอบตัวซึ่งอนุญาตให้บางคนข้าม CAPTCHA ได้

โดยวิธีการที่บทความ W3C เข้าไม่ถึงของ CAPTCHA: ทางเลือกในการทดสอบทัวริงทัวริงบนเว็บอธิบายเช่นเดียวกับวิธีการที่ CAPTCHA อาจถูกบุกรุก:

[... ] หนึ่งในการโจมตีครั้งแรกที่บันทึกไว้ในระบบคือนักเรียน Carnegie Mellon ที่เชื่อมโยงภาพ CAPTCHA กับการเข้าถึงเว็บไซต์สำหรับผู้ใหญ่ดังนั้นจึงดึงดูดแรงงานมนุษย์ฟรีเพื่อรับรองความถูกต้อง [ ... ]

โครงการภายนอก [... ] ได้แสดงวิธีการและผลลัพธ์ที่บ่งชี้ว่าหลาย ๆ ระบบสามารถเอาชนะได้โดยคอมพิวเตอร์ที่มีความแม่นยำระหว่าง 88% ถึง 100% โดยใช้การรู้จำอักขระด้วยแสง

ดังนั้นคุณจะป้องกันการโจมตีเหล่านั้นได้อย่างไร

  • หากคุณมีกำหนดเอง CAPTCHA ดำเนินการของคุณคุณอาจพยายามที่จะย้ายไปหนึ่งที่นิยมเช่นreCAPTCHA

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

  • หากคุณใช้กลไก CAPTCHA ที่ได้รับความนิยมการย้ายไปยังกลไกที่กำหนดเองหรือกลไกยอดนิยมอื่นอาจป้องกัน OCR

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

คุณอาจต้องการย้ายจากภาพ CAPTCHA เป็นเสียง (ถ้าคุณไม่ได้ใช้ทั้งคู่และควร) แต่นั่นหมายความว่าผู้ใช้ที่มีความบกพร่องทางการได้ยินจะไม่สามารถใช้แอปพลิเคชันของคุณได้


FrustratedWithFormsDesignerและGalacticCowboyกล่าวถึงใน CAPTCHAs เฉพาะโดเมนความคิดเห็น ฉันพยายามค้นหาเนื้อหาบางส่วนเกี่ยวกับความมีประสิทธิภาพ แต่ไม่ประสบความสำเร็จดังนั้นนี่เป็นเพียงความเห็นส่วนตัวของฉัน:

  1. CAPTCHAs เฉพาะโดเมนนั้นอาจสร้างความรำคาญอย่างมหาศาลเมื่อผู้ใช้งานจริงไม่มีความคิดเกี่ยวกับคำตอบ

    ตัวอย่าง: ฉันกำลังเยี่ยมชมหน้าเว็บไซต์ที่มุ่งเน้นภาพยนตร์ ฉันสังเกตเห็นความผิดพลาดในบทความและต้องการแสดงความคิดเห็นเพื่อแจ้งผู้เขียนถึงความผิดพลาดนั้น แบบฟอร์มแสดงความคิดเห็นถามฉันในฐานะกลไก CAPTCHAs เพื่อให้ชื่อของนักแสดงที่ปรากฏบนภาพถ่าย ฉันไม่รู้ว่าใครเป็นนักแสดงคนนี้ดังนั้นสิ่งเดียวที่ฉันทำได้คือออกจากเว็บไซต์ (หรือใช้เวลาสองนาทีถัดไปโดยใช้ Google Images)

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

  2. ปัญหาส่วนใหญ่ของโดเมนเหล่านั้นสามารถแก้ไขได้โดยทางโปรแกรม ทั้งสองตัวอย่างที่ฉันให้นั้นสามารถแก้ไขได้อย่างง่ายดายโดยใช้แหล่งข้อมูลภายนอก (พจนานุกรม Google รูปภาพและพจนานุกรมคำพ้องความหมาย) ตัวอย่างหนึ่งเกี่ยวกับทรานซิสเตอร์ที่ได้รับจาก FrustratedWithFormsDesigner นั้นดีกว่า แต่ก็อาจจะแก้ไขได้ด้วยบอทแบบกำหนดเอง

  3. ไม่มีใครต่อต้านฟาร์มของมนุษย์

  4. ทั้งที่พวกเขาสร้างข้อมูลเช่นเดียวกับ CAPTCHAs ข้อความสามัญวาดตัวละครที่บิดเบี้ยวซึ่งในกรณีนี้วิธีการผลิตที่สามารถตัวเองใช้ประโยชน์ในการปรับแต่งบอทหรือพวกเขาพบข้อมูลบางเช่นเดียวกับreCAPTCHA เตะข้อความจากหนังสือที่สแกนซึ่งในกรณีที่ ธ ปทสามารถ ใช้ข้อมูลนี้เทียบกับมัน (ตัวอย่างเช่นหากคุณใช้คำจากพจนานุกรมขอให้ผู้ใช้ระบุคำพ้องบอทสามารถใช้พจนานุกรมเดียวกันนี้เพื่อให้สำเร็จ 100%)


4
+1 สำหรับสังเกตว่าไม่มี CAPTCHA รับประกันการทำงาน
นีล

8
ฉันเคยเห็น captchas นวนิยายที่เฉพาะเจาะจงมากโดเมน หนึ่งในนั้นแสดงภาพตัวต้านทานและผู้ใช้ต้องป้อนความต้านทาน (มีลิงก์ไปยังหน้าช่วยเหลือสำหรับผู้ที่ไม่ทราบวิธีการอ่านแถบสีตัวต้านทาน) อีกรูปหนึ่งมีรูปตัวอย่างขนาดเล็กของโน้ตดนตรีและผู้ใช้ต้องป้อนบันทึกบางอย่าง (เช่น "โน้ตในคอร์ดที่สองเท่านั้น") พวกเขายังคงเล่นเกมได้ แต่ค่าใช้จ่ายสำหรับผู้ส่งอีเมลขยะอาจไม่คุ้มค่า
FrustratedWithFormsDesigner

2
@MainMa มีการโพสต์รายงานทางเทคโนโลยีบางแห่งเกี่ยวกับคนที่ออกแบบบอทที่เอาชนะ captchas ได้อย่างรวดเร็วอย่างน่าทึ่งเพราะมันไม่สนใจภาพและแปลความหมายของคิวเสียงแทนดังนั้นคุณจะต้องเพิ่มความคงที่ให้กับ ระบบเสียงอันหนึ่งซึ่งทำให้ผู้ใช้ยากขึ้นอีกต่อไป
RhysW

@RhysW: บทความ W3C ที่ฉันกล่าวถึงยังกล่าวถึงว่าการย้ายจากภาพเป็นเสียงไม่ได้แก้ปัญหาบอทและอาจทำให้เรื่องง่ายขึ้นสำหรับบอท
Arseni Mourzenko

24
ฟาร์มมนุษย์ ทำไมฉันถึงนึกภาพเมทริกซ์?
LarsTech

37

กำลังเพิ่มคำตอบของ MainMa ...

ผู้ส่งอีเมลขยะหลอกให้คนอื่นทำ CAPTCHA เพื่อพวกเขา

โดยทั่วไปผู้ส่งอีเมลขยะตั้งค่าไซต์ warez หรือไซต์ลามกที่ดูเหมือนจะมี CAPTCHA อยู่ แต่ไม่ใช่ CAPTCHA จริง บอทดึง CAPTCHA ออกจากเว็บไซต์ที่พวกเขาต้องการสแปม (หรือหาประโยชน์) จากนั้นแสดงบนไซต์ warez หรือไซต์ลามกที่มีคนทำมันให้เสร็จ จากนั้นค่า CAPTCHA จะถูกส่งกลับไปยังบอทของพวกเขา ...

ผู้ส่งอีเมลขยะมากขึ้นอีกเล็กน้อย

ฉันใช้reCAPTCHAและฉันพบว่ามันไร้ค่า ฉันยังใช้ตัวกรองสแปมที่กำหนดเองที่จับสแปมที่ผ่าน reCAPTCHA ที่ผ่านมาและฉันต้องตรวจสอบทุกสองสามวันเพื่อหาผลบวกปลอม

ฟอรั่มของฉันเป็นแบบเขียนเองทั้งหมดและได้รับปริมาณการใช้งานน้อยมาก ฉันไม่เชื่อว่ามีใครเข้ารหัสเฉพาะการโจมตีไซต์ของฉัน ยังตัวกรองสแปมของฉันจับข้อความสแปม 2k ต่อวัน! ไม่มีใครปรากฏบนเว็บไซต์ ผู้ส่งอีเมลขยะไม่ได้รับประโยชน์จากการสแปมฉัน แต่พวกเขาก็ยังทำ

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

ทุกปีพวกเขากำหนดเป้าหมายเว็บไซต์ของฉันด้วยข้อความสแปมนับพันต่อวันเท่านั้นที่จะได้รับข้อความผ่านทุกเดือนและข้อความนั้นจะถูกลบด้วยตนเองในวันต่อมา มันถูกที่สแปม!

นี่จะเป็นการต่อสู้สำหรับปีต่อ ๆ ไป โดยเฉพาะอย่างยิ่งสำหรับเว็บไซต์ผู้ดูแลคนเดียวเช่นฉัน


แก้ไข 6/22/2017 : ฉันต้องการเพิ่มที่เนื่องจากโพสต์นี้ google reCAPTCHA ปรับปรุงใหม่อย่างสมบูรณ์และเป็นของการเขียนนี้มันทำงานได้อย่างไม่มีที่ติ แม้ว่าฉันจะสงสัยว่ามีข้อผิดพลาดเล็กน้อยหรือความเจ็บปวดสำหรับผู้ใช้เนื่องจากโพสต์ลดลงเล็กน้อยตั้งแต่ฉันติดตั้ง การเปลี่ยนแปลงครั้งใหญ่ 2 ประการคือ

1) พวกเขากำลังใช้รูปภาพแทนข้อความ (ดังนั้น OCR ไม่มาก)

2) พวกเขากำลังรวมเข้ากับกิจกรรมของผู้ใช้ในทุกไซต์ที่ใช้ reCAPTCHA ดังนั้นถ้าคุณผ่าน reCAPTCHA ในไซต์ A ให้ไปที่ไซต์ B อาจไม่ได้แจ้งให้คุณพิสูจน์ว่าคุณเป็นมนุษย์! นอกจากนี้ (ฉันคิดว่า) ถ้าคุณกด reCAPTCHA มากเกินไปในหลาย ๆ ไซต์มันจะติดธงคุณเช่นกัน ฉันแน่ใจว่ากำลังใช้ AI ประเภทอื่น ๆ ตามกิจกรรมของผู้ใช้เช่นกัน

ฉันแน่ใจว่ามันเป็นเรื่องของเวลาจนกว่าผู้ส่งอีเมลขยะจะชนะเรื่องนี้เช่นกัน ...


นี่อาจเป็นข้อโต้แย้งที่แข็งแกร่งที่สุดสำหรับ reCAPTCHA สำหรับเว็บไซต์ขนาดเล็ก: Google มีแหล่งข้อมูลเพิ่มเติมเพื่อให้ทันกับเทคนิคการสแปมในปัจจุบัน
สตีเฟ่นซี. เหล็ก

15

คุณเคยลองใช้ captcha แมวสุนัข? ฉันมีฟอรัมที่มีแคปต์ชามาตรฐานและเปลี่ยนมันและฉันไม่มีสแปมจากแขกป้อนคำอธิบายรูปภาพที่นี่


12

เป็นไปได้ว่าเว็บไซต์ของคุณถูกกำหนดเป้าหมายโดยกำลังแรงงานราคาถูกที่ไม่เหมาะสมและมนุษย์กำลังป้อนวลี CAPTCHA ของคุณด้วยตนเอง

หากวิธีที่คุณใช้ไม่ซับซ้อนเกินไปอาจเป็นไปได้ว่าผู้โจมตีของคุณกำลังจดจำรูปภาพ

นอกจากนี้ยังเป็นไปได้ว่าคุณมีจุดบกพร่องในรหัสของคุณที่อนุญาตให้ CAPTCHA ถูกข้าม

อย่าตั้งสมมติฐานว่าหุ่นยนต์กำลังเต้นแคปต์ชาของคุณ คิดว่าระบบของคุณเป็นแบบองค์รวมและดูว่ามันถูกบุกรุก


ฉันจะรวมรูปภาพและโครงร่าง CSS ที่มนุษย์ไม่สามารถสังคายนาได้ง่าย
Erik Reppen

2
คำสองคำ ... Mechanical Turk อเมซอนได้ทำให้ captcha หยุดทำงานอย่างไม่น่าเชื่อ
Michael Brown

10

คนอื่นพูดถึงว่าผู้ส่งอีเมลขยะหลีกเลี่ยง CAPTCHAs อย่างไร นี่คือเคล็ดลับบางประการเกี่ยวกับ ฉันจะป้องกันสิ่งนี้ได้อย่างไร :

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

  1. ใช้รูปแบบหม้อน้ำผึ้ง
  2. ใช้คำถาม CAPTCHA หรือลอจิก คำถามพื้นฐานเช่น "แอปเปิ้ลปลามือหก - อันไหนเป็นส่วนของร่างกาย"
  3. มีความล่าช้า หากโพสต์แบบฟอร์มภายใน 5 วินาทีของการโหลดหน้าละเว้นการร้องขอหุ่นยนต์ส่วนใหญ่จะโพสต์ภายในไม่ถึงหนึ่งวินาที
  4. มีการตรวจสอบที่อยู่ IP - หากคุณสังเกตเห็นแมงมุมที่คลานเว็บไซต์ของคุณซึ่งไม่อยู่ในรายการสีขาว (google, bing) จากนั้นบัญชีดำและห้ามที่อยู่ IP ของมัน โดยเฉพาะอย่างยิ่งนี่จะเป็นแบบไดนามิก / อัตโนมัติในรหัส / ซอฟต์แวร์

6

เพื่อสะท้อนคำตอบอื่น ๆ คุณอาจพบบอทที่ใช้ฟาร์มมนุษย์เพื่อป้อนแคปช่าสำหรับพวกเขา

ฉันเพิ่งพูดคุยเกี่ยวกับเทคนิค (และเปิดตัวโมดูล Drupal ประกอบ) ที่ป้องกันบอทสแปมโดยต้องการ JavaScript ฝั่งไคลเอ็นต์ เท่าที่ฉันทราบนี่ได้ทำงานกับประสิทธิภาพ 100% ในทุกเว็บไซต์ที่ใช้รหัสนี้ แนวคิดคือการใช้ AJAX เพื่อสร้างแฮชที่ไม่ซ้ำกันและส่งไปพร้อมกับข้อมูลในแบบฟอร์มอื่น ๆ แล้วคำนวณแฮชเดียวกันนั้นบนแบ็กเอนด์เมื่อส่งฟอร์มแล้วเปรียบเทียบค่าทั้งสอง

รายละเอียดทั้งหมดในโพสต์บล็อกของฉัน (บังเอิญเนื่องจากคุณพูดถึงการใช้ PHP + MySQL เหล่านี้เป็นเทคโนโลยีเดียวกับที่อธิบายไว้ที่นั่น) - เปิดตัวโมดูล: Badbot; กำจัดสแปม ...


1
มันจะทำงานจนกว่ามันจะแพร่หลายและสแปมเมอร์ใช้เบราว์เซอร์ที่ไม่มีหัว
ซาเวียร์ Combelle

1
การใช้เบราว์เซอร์ที่ไม่มีส่วนหัวจะเปลี่ยนแปลงอะไรได้อย่างไร
Tatiana Racheva

-2

หากไซต์ของคุณเป็นทวิตเตอร์และมีคนกำหนดเป้าหมายเป็นพิเศษ (แทนที่จะเป็นบอทหามัน) จากนั้นคุณสามารถหยุดอ่าน ...

ไม่เช่นนั้นอาจจะคุ้มค่าที่จะไม่ทำให้ฟอร์มของคุณดูไม่เหมือนแบบฟอร์ม 1. ไม่มีฟิลด์ที่มี 'อีเมล' ในประเภทชื่อหรือตัวยึดตำแหน่งใช้ชื่อที่สั้นหรือทำให้เข้าใจผิดสำหรับฟิลด์ทั้งหมด 2. อย่าใช้องค์ประกอบแบบฟอร์ม html จริงและปุ่มส่ง ค่อนข้างใช้ AJAX เพื่อโพสต์เมื่อคลิก div ปกติ (สไตล์ให้ดูเหมือนปุ่ม) 3. อย่าใส่เหตุการณ์ onclick ใน html เพิ่มฟังใน JavaScript 4. ใช้ JavaScript เพื่อเติมเคล็ดลับใด ๆ 'ป้อนที่อยู่อีเมลของคุณที่นี่' เป็นไปได้ว่าบอทจะไม่เรียก JS เมื่อสืบค้นหน้าเว็บ (ไม่แน่ใจในที่นี้ แต่ทำอย่างนั้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.