Làm cách nào robot có thể đánh bại CAPTCHA?


84

Tôi có một mẫu e-mail trang web. Tôi sử dụng CAPTCHA tùy chỉnh để ngăn spam từ robot. Mặc dù vậy, tôi vẫn nhận được thư rác.

Tại sao? Làm thế nào để robot đánh bại CAPTCHA? Họ có sử dụng một số loại OCR tiên tiến hay chỉ nhận giải pháp từ nơi nó được lưu trữ?

Làm thế nào tôi có thể ngăn chặn điều này? Tôi có nên đổi sang loại CAPTCHA khác không?


Tôi chắc chắn rằng các e-mail đến từ biểu mẫu, bởi vì nó được gửi từ người gửi email của tôi phục vụ các tin nhắn biểu mẫu. Ngoài ra phong cách thư là như nhau.

Để ghi lại, tôi đang sử dụng PHP + MySQL, nhưng tôi không tìm kiếm giải pháp cho vấn đề này. Tôi đã quan tâm đến tình hình chung làm thế nào các robot đánh bại các công nghệ này. Tôi chỉ nói tình huống này là một ví dụ, để bạn có thể hiểu rõ hơn những gì tôi đang hỏi về.


86
Tôi muốn phản bác lại câu hỏi của bạn: làm thế nào Con người có thể đánh bại CAPTCHA: thường xuyên hơn không phải tôi phải mất nhiều lần để vượt qua.
Pieter B

14
Nếu ai đó nghĩ rằng câu hỏi này xứng đáng với một downvote, ít nhất là giải thích cho tôi tại sao.
totymedli

10
@Blrfl, tôi không hiểu làm thế nào điều này lạc đề.

47
Nếu bạn muốn chúng tôi trả lời câu hỏi của bạn, trước tiên hãy chứng minh bạn không phải là robot.
Pete Kirkham

7
@Blrfl Tuy nhiên, nó có mọi thứ để phát triển phần mềm chất lượng.
Izkata

Câu trả lời:


72

Hai cách dễ nhất để vượt qua CAPTCHA:

  • Sử dụng trang trại của con người, tức là yêu cầu mọi người điền CAPTCHA để kiếm tiền, giống như ProTypers vậy.

  • Sử dụng OCR.

Cũng có thể có một lỗi trong chính cơ chế CAPTCHA hoặc ứng dụng xung quanh, cho phép ai đó bỏ qua CAPTCHA.

Nhân tiện, bài viết W3C không thể truy cập của CAPTCHA: Các lựa chọn thay thế cho các thử nghiệm Turing trực quan trên web giải thích cũng như cách CAPTCHA có thể bị xâm phạm:

[...] Một trong những cuộc tấn công được ghi nhận đầu tiên vào hệ thống là của một sinh viên Carnegie Mellon, người đã liên kết hình ảnh CAPTCHA với quyền truy cập vào một trang web người lớn, do đó có được lao động tự do của con người để phá vỡ xác thực. [...]

Các dự án bên ngoài [...] đã chỉ ra các phương pháp và kết quả chỉ ra rằng nhiều hệ thống có thể bị đánh bại bởi các máy tính có độ chính xác từ 88% đến 100%, sử dụng nhận dạng ký tự quang học.

Vậy làm thế nào bạn có thể ngăn chặn những cuộc tấn công đó?

  • Nếu bạn có CAPTCHA được triển khai tùy chỉnh, bạn có thể thử chuyển sang một loại phổ biến, như reCAPTCHA .

    Điều này sẽ giúp nếu CAPTCHA của bạn quá dễ dàng với OCR hoặc nếu có lỗi được khai thác thành công.

  • Nếu bạn sử dụng cơ chế CAPTCHA phổ biến, việc chuyển sang một cơ chế tùy chỉnh hoặc sang một cơ chế phổ biến khác có thể ngăn chặn OCR.

Về mặt kỹ thuật, không có gì ngăn cản trang trại của con người: bạn có thể tạo GIF động trong đó một số khung hiển thị văn bản khác nhau rất nhanh và chỉ có một khung hình thực sự được hiển thị bởi người dùng, bạn có thể làm biến dạng hoặc uốn cong văn bản theo mọi hướng hoặc tìm cách mới, thay thế để ngăn chặn Các OCR từ nhận dạng văn bản, vẫn con người trả tiền để giải CAPTCHA sẽ giải quyết chúng thành công.

Bạn có thể muốn chuyển từ CAPTCHA trực quan sang âm thanh (nếu bạn chưa sử dụng cả hai và bạn nên), nhưng điều này có nghĩa là người dùng bị khiếm thính sẽ không thể sử dụng ứng dụng của bạn.


FrustratedWithFormsDesignerGalacticCowboy đã đề cập trong các bình luận CAPTCHA dành riêng cho tên miền. Tôi đã cố gắng tìm một số tài liệu về hiệu quả của những thứ đó, nhưng không thành công, vì vậy đây chỉ là ý kiến ​​cá nhân của tôi:

  1. CAPTCHA cụ thể theo tên miền có thể cực kỳ khó chịu khi người dùng thực tế không biết gì về câu trả lời.

    Ví dụ: Tôi đang truy cập một trang trên trang web hướng phim. Tôi nhận thấy một lỗi trong một bài viết và muốn bình luận về nó để thông báo cho tác giả về lỗi đó. Mẫu nhận xét yêu cầu tôi, với tư cách là một cơ chế CAPTCHA, cung cấp tên của nữ diễn viên được hiển thị trên ảnh. Tôi không biết nữ diễn viên này là ai, vì vậy điều duy nhất tôi có thể làm là rời khỏi trang web (hoặc dành hai phút tiếp theo bằng Google Images).

    Một ví dụ khác: một trang web yêu cầu đưa ra một từ đồng nghĩa của "bí ẩn". Nghe có vẻ dễ đối với một người không khiếm khuyết, nói tiếng Anh trôi chảy, sẽ không thể giải quyết được nếu không có sự trợ giúp bên ngoài cho những người không nói tiếng Anh tốt hoặc những người bị khuyết tật phát triển, không tính đến việc tìm từ đồng nghĩa hoặc trái nghĩa luôn luôn khó khăn

  2. Hầu hết các vấn đề cụ thể theo miền có thể được giải quyết bằng lập trình. Cả hai ví dụ tôi đưa ra đều được giải quyết dễ dàng bằng cách sử dụng các tài nguyên bên ngoài (từ điển Google Images và Từ đồng nghĩa). Một trong những bóng bán dẫn được đưa ra như một ví dụ của FrustratedWithFormsDesigner là tốt hơn, nhưng vẫn có thể được giải quyết với một bot tùy chỉnh.

  3. Không ai cưỡng lại trang trại của con người.

  4. Họ tạo dữ liệu, giống như CAPTCHA văn bản thông thường vẽ các ký tự bị biến dạng, trong trường hợp đó, thuật toán tạo có thể được khai thác để điều chỉnh các bot hoặc chúng tìm thấy dữ liệu ở đâu đó, giống như reCAPTCHA lấy văn bản từ sách được quét , trong trường hợp đó bot có thể sử dụng dữ liệu này để chống lại nó (ví dụ: nếu bạn lấy từ trong từ điển, yêu cầu người dùng cung cấp từ đồng nghĩa, bot có thể sử dụng chính từ điển đó để thành công 100%).


4
+1 để lưu ý rằng không có CAPTCHA nào được đảm bảo để hoạt động
Neil

8
Tôi đã thấy một số captcha mới rất đặc trưng cho miền. Một trong số họ hiển thị hình ảnh của điện trở và người dùng phải nhập điện trở (có một liên kết đến trang trợ giúp cho những người không biết cách đọc các dải màu điện trở). Một bức khác có hình ảnh một đoạn ký hiệu âm nhạc nhỏ và người dùng phải nhập một số nốt nhất định (chẳng hạn như "nốt chỉ trong hợp âm thứ hai"). Họ vẫn có thể chơi được, nhưng chi phí cho những kẻ gửi thư rác có thể không đáng.
Thất vọngWithFormsDesigner

2
@MainMa có một bài đăng trên một báo cáo công nghệ ở đâu đó về một người đã thiết kế một bot đánh bại captchas rất nhanh, bởi vì nó đã bỏ qua hình ảnh và thay vào đó diễn giải âm thanh của âm thanh với nó, vì vậy cuối cùng bạn sẽ phải thêm tĩnh vào âm thanh một, điều này làm cho người dùng thậm chí còn khó khăn hơn
RhysW

@RhysW: bài báo W3C tôi đã đề cập cũng đề cập rằng việc chuyển từ hình ảnh sang âm thanh không giải quyết được vấn đề bot và thậm chí có thể làm cho mọi thứ dễ dàng hơn cho bot.
Arseni Mourzenko

24
Nông trại con người. Tại sao tôi hình dung Ma trận?
LarsTech

37

Thêm vào câu trả lời của MainMa ...

Kẻ gửi thư rác lừa người khác làm CAPTCHA cho họ

Về cơ bản, những kẻ gửi thư rác đã thiết lập một trang web warez hoặc một trang web khiêu dâm dường như có CAPTCHA trên đó, nhưng đó không phải là CAPTCHA thực sự. Một bot lấy CAPTCHA từ trang web mà họ muốn spam (hoặc nói cách khác là khai thác), sau đó hiển thị nó trên trang web warez hoặc một trang web khiêu dâm nơi ai đó hoàn thành nó cho họ. Sau đó, giá trị CAPTCHA được chuyển lại cho bot của họ ...

Thêm một chút về Spammers

Tôi sử dụng reCAPTCHA và về cơ bản, nó vô dụng. Tôi cũng sử dụng bộ lọc thư rác tùy chỉnh để bắt thư rác đã qua reCAPTCHA và tôi cần xem lại sau mỗi vài ngày để tìm kiếm thông tin sai.

Diễn đàn của tôi cũng là tất cả các tùy chỉnh bằng văn bản và nó nhận được rất ít lưu lượng truy cập. Tôi không tin bất cứ ai mã hóa một cuộc tấn công cụ thể vào trang web của tôi. Tuy nhiên, bộ lọc thư rác của tôi bắt được 2k tin nhắn rác mỗi ngày! Không ai được hiển thị trên trang web. Kẻ gửi thư rác không nhận được lợi ích từ việc spam tôi, nhưng họ vẫn làm.

Tôi có thể thấy các mẫu trong các lần thử spam vì tôi đăng nhập tất cả. Tôi có thể nói với bạn điều này: gạt sang một bên cách họ vượt qua CAPTCHA, những kẻ gửi thư rác rõ ràng đang sử dụng kỹ thuật vũ phu thay đổi các trường được điền và loại dữ liệu và từ trộn lẫn các trường đó. Rõ ràng họ làm điều này rất rẻ (bao gồm cả bỏ qua CAPTCHA) đến nỗi họ thậm chí không phải trả tiền để phân tích các trang web riêng lẻ để xem liệu những gì họ đang làm có hoặc không hoạt động.

Hết năm này qua năm khác, họ tiếp tục nhắm mục tiêu trang web của tôi với hàng ngàn tin nhắn rác mỗi ngày chỉ để truy cập một lần mỗi tháng và một tin nhắn sẽ bị xóa thủ công một ngày sau đó. Đó là giá rẻ để spam!

Đây sẽ là một trận chiến trong nhiều năm tới. Riêng đối với các trang web điều hành một người đàn ông nhỏ như của tôi.


EDIT 6/22/2017 : Tôi muốn thêm rằng vì bài đăng này google đã hoàn toàn tân trang reCAPTCHA và khi viết bài này, nó đã hoạt động hoàn hảo. Mặc dù tôi nghi ngờ rằng có một chút tích cực sai hoặc gây đau khổ cho người dùng vì bài đăng đã giảm một chút kể từ khi tôi triển khai nó. Hai thay đổi lớn là

1) Họ đang sử dụng Hình ảnh thay vì văn bản (Vì vậy, không còn OCR nữa)

2) Họ đang kết hợp nó với hoạt động của người dùng trên tất cả các trang web sử dụng reCAPTCHA. Vì vậy, nếu bạn vượt qua reCAPTCHA trên trang A, thì hãy truy cập Trang B, thậm chí có thể không nhắc bạn chứng minh bạn là con người! Ngoài ra (tôi nghĩ) nếu bạn đánh quá nhiều reCAPTCHA trên quá nhiều trang thì nó cũng sẽ gắn cờ bạn. Tôi chắc chắn rằng nó cũng đang sử dụng các loại AI khác dựa trên hoạt động của người dùng.

Tôi chắc chắn chỉ là vấn đề thời gian cho đến khi những kẻ gửi thư rác cũng đánh bại điều này ...


Đây có lẽ là đối số mạnh nhất cho reCAPTCHA cho một trang web nhỏ: Google có nhiều tài nguyên hơn để theo kịp các kỹ thuật spam hiện tại.
Stephen C. Steel

15

Bạn đã bao giờ thử sử dụng captcha chó mèo chưa? Tôi có một diễn đàn có captcha tiêu chuẩn và đã thay đổi nó và tôi không có spam khách.nhập mô tả hình ảnh ở đây


12

Có thể trang web của bạn đang bị một lực lượng lao động cực kỳ khai thác nhắm mục tiêu và một con người đang tự nhập các cụm từ CAPTCHA của bạn.

Nếu giải pháp bạn đang sử dụng không quá phức tạp, có thể kẻ tấn công của bạn đang thực hiện nhận dạng hình ảnh.

Cũng có khả năng là bạn có một lỗi ở đâu đó trong mã của bạn cho phép bỏ qua CAPTCHA.

Đừng đưa ra giả định rằng robot đang đánh bại CAPTCHA của bạn. Hãy suy nghĩ về hệ thống của bạn một cách toàn diện và xem nếu nó đã bị xâm phạm.


Tôi sẽ kết hợp các sơ đồ hình ảnh và CSS mà con người sẽ không thể sắp xếp dễ dàng.
Erik Reppen

2
Hai từ ... Turk cơ khí. Amazon đã làm cho captcha sụp đổ một nỗ lực cực kỳ rẻ.
Michael Brown

10

Những người khác đã thảo luận về cách những kẻ gửi thư rác phá vỡ CAPTCHA. Dưới đây là một số mẹo về Làm thế nào tôi có thể ngăn chặn điều này :

Lưu ý rằng không có viên đạn bạc và những kẻ gửi thư rác dường như đi trước trò chơi 1 bước. Vì vậy, bạn sẽ phải sử dụng kết hợp nhiều kỹ thuật

  1. Sử dụng một hình thức nồi mật ong
  2. Sử dụng câu hỏi CAPTCHA hoặc Logic. Những câu hỏi cơ bản như "táo, cá, tay, sáu - trong đó có một phần cơ thể"
  3. Có một sự chậm trễ. Nếu biểu mẫu được đăng trong vòng 5 giây sau khi tải trang, hãy bỏ qua yêu cầu, hầu hết các robot sẽ đăng trong vòng chưa đến một giây
  4. Có một số giám sát địa chỉ IP - nếu bạn nhận thấy một con nhện thu thập dữ liệu trang web của bạn không nằm trong danh sách trắng (google, bing) thì hãy đưa vào danh sách đen và cấm địa chỉ IP của nó. Tốt nhất là điều này sẽ là động / tự động trong mã / phần mềm

6

Để lặp lại các câu trả lời khác, rất có thể bạn sẽ gặp các bot sử dụng trang trại của con người để nhập captcha cho chúng.

Gần đây tôi đã thảo luận về một kỹ thuật (và phát hành một mô-đun Drupal đi kèm) để chặn các bot spam bằng cách yêu cầu JavaScript phía máy khách. Theo như tôi biết, điều này đã hoạt động với hiệu quả 100% trên tất cả các trang web đã sử dụng mã này. Ý tưởng là sử dụng AJAX để tạo ra một hàm băm duy nhất và gửi nó cùng với dữ liệu biểu mẫu khác, sau đó tính toán cùng hàm băm đó trên phụ trợ sau khi biểu mẫu được gửi và so sánh hai giá trị.

Chi tiết đầy đủ trong bài đăng trên blog của tôi (thật trùng hợp, vì bạn đã đề cập đến việc sử dụng PHP + MySQL, đây là những công nghệ tương tự được mô tả ở đó) - Phát hành mô-đun: Badbot; loại bỏ thư rác ...


1
Điều đó sẽ hoạt động cho đến khi nó trở nên phổ biến và spammer sử dụng trình duyệt không đầu.
Xavier Combelle

1
Làm thế nào để sử dụng một trình duyệt không đầu thay đổi bất cứ điều gì?
Tatiana Racheva

-2

Nếu trang web của bạn là twitter và ai đó đã nhắm mục tiêu cụ thể (thay vì bot tìm thấy nó) thì bạn có thể ngừng đọc ...

Nếu không, có thể không đáng để làm cho biểu mẫu của bạn KHÔNG giống như một biểu mẫu. 1. Không có các trường có 'e-mail' trong loại, tên hoặc giữ chỗ, sử dụng tên ngắn hoặc sai cho tất cả các trường. 2. Không sử dụng phần tử biểu mẫu html thực tế và nút gửi. Thay vì sử dụng AJAX để đăng nó khi nhấp vào một div bình thường (được tạo kiểu để trông giống như một nút). 3. Đừng đặt sự kiện onclick vào html, hãy thêm trình nghe vào JavaScript. 4. Sử dụng JavaScript để điền bất kỳ mẹo nào 'nhập địa chỉ email của bạn vào đây' vì có thể các bot sẽ không thực sự kích hoạt JS khi truy tìm các trang (không chắc chắn về điều này, nhưng dù sao tôi cũng làm điều đó).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.