CAPTCHA hoạt động như thế nào?
Trình duyệt của Scrapeless Agent không có CAPTCHA trong các phiên trình duyệt được sử dụng cho tự động hóa web.
CAPTCHA hoạt động bằng cách thu thập chứng cứ về một tương tác và kiểm tra xem chứng cứ đó có phù hợp với chính sách xác minh người dùng của dịch vụ hay không. Trong một thử thách có thể thấy, người dùng có thể xác định hình ảnh hoặc nhập văn bản hiển thị. Các hệ thống khác đánh giá tương tác với ít nỗ lực có thể thấy. Ranh giới triển khai quan trọng là giữa những gì xảy ra trong trình duyệt và những gì máy chủ của ứng dụng được bảo vệ chấp nhận.
Một dấu kiểm trên một trang là một sự kiện giao diện người dùng. Nó không tự nó chứng minh rằng ứng dụng đã xác minh phản hồi hoặc phê duyệt hành động được yêu cầu. Một tích hợp đáng tin cậy kết nối kết quả thử thách với xác minh phía máy chủ và sau đó là hoạt động kinh doanh, như chấp nhận một biểu mẫu.
Các Diễn viên trong Quy trình Xác minh
Một tích hợp CAPTCHA được lưu trữ điển hình liên quan đến trình duyệt của khách truy cập, ứng dụng được bảo vệ, và nhà cung cấp thử thách. Trình duyệt hiển thị hoặc chạy thử thách. Nhà cung cấp đánh giá phản hồi và cung cấp kết quả hoặc mã phản hồi. Máy chủ của ứng dụng xác minh chứng cứ đó trước khi quyết định có tiếp tục hay không.
Các trách nhiệm này nên giữ sự phân biệt. Trình duyệt không thể an toàn giữ bí mật xác minh của ứng dụng, và cờ thành công phía máy khách không nên được chấp nhận như là chứng cứ có thẩm quyền. Máy chủ cũng vẫn chịu trách nhiệm cho các kiểm tra thông thường như xác thực trường, quyền tài khoản và xử lý nộp trùng lặp.
Một sơ đồ triển khai hữu ích do đó sẽ cho thấy việc nộp biểu mẫu mang mã phản hồi đến ứng dụng, sau đó là bước xác minh từ máy chủ đến máy chủ. Ứng dụng sau đó ghi nhận quyết định của mình. Việc bỏ qua bước ở giữa đó tạo ra một giao diện trông được bảo vệ trong khi để lại hoạt động hậu quả phụ thuộc vào đầu vào do khách kiểm soát.
Điều gì xảy ra trước khi một câu đố xuất hiện
Hệ thống thử thách có thể đánh giá bối cảnh trước khi quyết định có hiển thị một nhiệm vụ tương tác hay không. Các tín hiệu và quy trình quyết định chính xác khác nhau tùy thuộc vào sản phẩm và cấu hình. Sự xuất hiện của một ô kiểm không có nghĩa là hệ thống chỉ dựa vào nơi người dùng nhấp, và sự vắng mặt của một câu đố không xác lập rằng không có xác minh nào diễn ra.
Tránh giải thích rằng quy kết mọi kết quả cho một hành vi đơn nhất như chuyển động của con trỏ. Một khách truy cập sử dụng bàn phím hoặc công nghệ hỗ trợ vẫn là người dùng hợp pháp. Một hệ thống coi một mẫu tương tác ưa thích là phổ quát có nguy cơ loại trừ những người mà trình duyệt và phương pháp đầu vào của họ hoạt động khác biệt.
Đối với các đội ứng dụng, câu hỏi thực tiễn là nhà cung cấp công khai những kết quả nào và mỗi kết quả có ý nghĩa gì. Phân biệt giữa một thử thách được hoàn thành thành công, một phản hồi bị từ chối, một phản hồi bị thiếu, và một sự không thể kỹ thuật để hoàn thành xác minh. Những trạng thái đó có thể cần các thông điệp người dùng khác nhau ngay cả khi không cái nào cho phép hoạt động được bảo vệ tiến hành tự động.
Mã phản hồi và xác minh máy chủ
Một mã phản hồi là chứng cứ được sản xuất bởi một tương tác xác minh cụ thể, tùy thuộc vào các hạn chế của nhà cung cấp. Ứng dụng gửi mã đó đến dịch vụ xác minh của nhà cung cấp và kiểm tra kết quả trả về. Các mã nên được coi là giá trị nhạy cảm ngắn hạn thay vì bằng chứng bền vững rằng một khách truy cập là con người vĩnh viễn.
Ví dụ, xác minh phản hồi reCAPTCHA yêu cầu xác thực backend, và mã phản hồi của nó chỉ sử dụng một lần với thời gian hợp lệ hai phút. Những quy tắc đó thuộc về sản phẩm đó; đừng giả định rằng mỗi triển khai CAPTCHA đều sử dụng cùng một tuổi thọ hoặc các trường phản hồi.
Theo yêu cầu của nhà cung cấp đã chọn để xác thực kết quả và bất kỳ trường ngữ cảnh nào mà nó trả về. Một mã hợp lệ liên quan đến một trang web hoặc hành động khác không nên được chấp nhận chỉ vì một trường boolean nào đó nói thành công. Các kiểm tra chính xác phải khớp với tích hợp hơn là một ví dụ chung được sao chép từ một nhà cung cấp khác.
Ứng dụng vẫn đưa ra quyết định cuối cùng
Việc hoàn thành CAPTCHA là một đầu vào cho quyết định của ứng dụng. Ứng dụng có thể vẫn từ chối một biểu mẫu không hợp lệ, một hành động tài khoản không được phép, hoặc một yêu cầu bên ngoài chính sách truy cập của nó. Xác minh con người không thay thế xác thực, ủy quyền, hoặc các quy tắc kinh doanh.
Sự tách biệt này có thể thấy trong một quy trình đăng ký tài khoản minh họa. Một khách truy cập có thể hoàn thành thử thách chính xác nhưng nộp một địa chỉ email không đáp ứng xác thực định dạng. Biểu mẫu nên giải thích lỗi trường đó mà không ám chỉ rằng CAPTCHA đã sai. Ngược lại, một địa chỉ email hợp lệ không nên cho phép gửi khi xác minh thử thách bị thiếu.
Sử dụng mô hình phản hồi HTTP để báo cáo kết quả một cách nhất quán, trong khi giữ cho cơ thể phản hồi đủ cụ thể để ứng dụng có thể hiển thị trạng thái chính xác. Đừng suy luận thành công chỉ vì trình duyệt nhận được một trang với trạng thái vận chuyển thành công.
Tại sao một thử thách đã hoàn thành vẫn có thể thất bại
Một thử thách đã hoàn thành có thể thất bại ở ranh giới ứng dụng nếu phản hồi đã hết hạn, đã được sử dụng, hoặc không khớp với bối cảnh tích hợp mong đợi. Trang cũng có thể nộp trước khi kết quả có sẵn. Đây là các chế độ thất bại khác nhau và đáng được các nhãn chẩn đoán riêng biệt.
Một hình thức dài minh họa vấn đề thời gian. Nếu quá trình xác minh diễn ra gần đầu vào và người truy cập dành thời gian đáng kể để hoàn thành các trường khác, thì chứng cứ có thể không còn hợp lệ khi biểu mẫu được gửi. Thiết kế tương tác sao cho xác thực tương ứng với hành động được bảo vệ thực tế, sử dụng vòng đời được hỗ trợ bởi nhà cung cấp.
Nhiều tab và việc nộp đơn trùng lặp tạo ra một loại nhầm lẫn khác. Mỗi thể hiện của biểu mẫu nên theo dõi trạng thái riêng của nó, và máy chủ nên liên kết kết quả xác minh với hoạt động dự định. Tránh lưu các mã phản hồi trong sự kiện phân tích hoặc ảnh chụp màn hình hỗ trợ. Ghi lại kết quả và một định danh tương quan nội bộ thay vì mã tự nó.
Khả năng truy cập là một phần của cơ chế
Một cơ chế CAPTCHA phải tính đến những người truy cập không thể hoàn thành định dạng thử thách đã chọn. Nhận diện hình ảnh có thể loại trừ một số người dùng có khuyết tật về thị lực; các nhiệm vụ bằng âm thanh có thể tạo ra những rào cản khác nhau. Cung cấp một định dạng thay thế chỉ hữu ích nếu tương tác hoàn chỉnh có thể sử dụng cùng với thiết bị và công nghệ hỗ trợ của người đó.
Của W3C phân tích về khả năng truy cập CAPTCHA giải thích tại sao các nhiệm vụ xác minh con người có thể đặt ra những gánh nặng không đều. Xem khả năng truy cập như một đầu vào cho việc chọn lựa và thử nghiệm, không chỉ là một thay đổi thẩm mỹ cho container thử thách.
Kiểm tra chuyển động tiêu điểm, nhãn, thông báo lỗi và con đường phục hồi khi không thể hoàn thành xác minh. Bảo tồn các mục nhập biểu mẫu của người dùng khi thích hợp. Một người truy cập không nên phải tái tạo một lần nộp dài vì một thử thách hết hạn, và giao diện nên giải thích bước hỗ trợ tiếp theo mà không tiết lộ bí mật nội bộ.
Kiểm tra toàn bộ chuỗi xác thực
Kiểm tra CAPTCHA nên bao gồm cả kết quả hợp lệ và không hợp lệ trong một môi trường được dự kiến để thử nghiệm. Sử dụng các cơ sở thử nghiệm được tài liệu hóa của nhà cung cấp nơi có thể. Một bài kiểm tra chỉ kiểm tra xem một widget có render hay không để lại các giai đoạn xác minh máy chủ và quyết định kinh doanh chưa được kiểm tra.
Bao gồm chứng cứ thiếu, chứng cứ bị từ chối, chứng cứ đã sử dụng, và một xác minh hợp lệ tiếp theo là một đầu vào kinh doanh không hợp lệ. Xác nhận rằng ứng dụng báo cáo mỗi trường hợp một cách chính xác. Kiểm tra rằng hoạt động được bảo vệ không thể được thực hiện qua một con đường nộp thứ hai mà bỏ qua bước xác minh.
Giữ chứng cứ thử nghiệm trong phạm vi những gì nó chứng minh. Một thử thách ở chế độ thử nghiệm thành công chứng tỏ rằng sự tích hợp tuân theo dòng chảy mong đợi; nó không đo lường độ chính xác phát hiện bot trong môi trường sản xuất. Tương tự, một ảnh chụp màn hình của một widget đã hoàn thành là chứng cứ giao diện hữu ích nhưng không thể cho thấy liệu backend có thực hiện xác minh hay không.
Quan sát CAPTCHA trong Tự động hóa Trình duyệt
Tự động hóa trình duyệt nên phân biệt trang yêu cầu với trang thử thách và với kết quả bị từ chối truy cập. Lưu đủ ngữ cảnh không nhạy cảm để xác định trạng thái nào đã xảy ra: URL cuối, tiêu đề có thể nhìn thấy, và liệu nội dung mong đợi có xuất hiện hay không. Một parser chấp nhận bất kỳ văn bản nào được trả về có thể vô tình lưu trữ hướng dẫn thử thách như tài liệu mục tiêu.
Trình duyệt Nó Giá Trị Không Có Tín Dụng cung cấp một môi trường trình duyệt được quản lý với việc xử lý thử thách tích hợp. Thảo luận luồng trình duyệt đám mây bao gồm mối quan hệ giữa thực thi trình duyệt, dấu vân tay, và xử lý CAPTCHA. Ứng dụng vẫn nên xác minh trang cuối và dừng lại khi không được phép truy cập.Sử dụng các điều khiển được tài liệu hóa của sản phẩm cho phiên thay vì giả định rằng kết quả thử thách là có thể di chuyển giữa các ngữ cảnh trình duyệt không liên quan. Xem xét giá dịch vụ hiện tại khi lập kế hoạch luồng công việc, và đo lường nội dung mục tiêu có thể sử dụng thay vì số lượng tương tác thử thách đã thực hiện.
Đo lường Xem Sự Hỗ Trợ của Tích Hợp
Một tích hợp CAPTCHA nên được đánh giá bằng cách nó giảm thiểu hành vi lạm dụng mục tiêu trong khi cho phép người dùng dự định hoàn thành nhiệm vụ. Tỷ lệ hoàn thành một mình là không đủ: một thử thách nghiêm ngặt có thể đàn áp cả các lần gửi lạm dụng và sử dụng hợp pháp. So sánh những kết quả quan trọng với ứng dụng.
Phân tích các tương tác thất bại theo gia đình trình duyệt, phương pháp nhập và giai đoạn luồng công việc khi mà sự đo lường đó là phù hợp và bảo vệ quyền riêng tư. Một thất bại tập trung ở hành động nộp cuối cùng có thể chỉ ra các vấn đề vòng đời mã. Một thất bại tập trung giữa những người dùng bàn phím có thể chỉ ra một giao diện không thể truy cập.
Định nghĩa một con đường leo thang được hỗ trợ cho những người truy cập hợp pháp vẫn bị chặn. Điều đó có thể là một con đường xác minh thay thế hoặc liên hệ với nhà điều hành dịch vụ. Cơ chế nên có một chủ sở hữu hoạt động có thể điều tra chuỗi đầy đủ thay vì yêu cầu người dùng đoán cài đặt trình duyệt nào đã gây ra việc từ chối.
Kết luận
CAPTCHA hoạt động thông qua một chuỗi thu thập chứng cứ, xác thực phản hồi và chính sách ứng dụng. Xây dựng và thử nghiệm chuỗi đó như một tổng thể. Tương tác trình duyệt, kết quả nhà cung cấp và hành động kinh doanh cuối cùng đều cần một trạng thái rõ ràng, vì vậy chỉ báo thành công có thể nhìn thấy không bao giờ trở thành bảo vệ duy nhất trên một hoạt động quan trọng.
Kiểm tra Kết quả Trình duyệt Sau Khi Xác Minh
Sử dụng Trình duyệt Nó Giá Trị Không Có Tín Dụng cho tự động hóa được phép và kiểm tra rằng nội dung trang mong đợi có mặt.
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.
Nhận $5 Tín Dụng của bạn →Câu hỏi thường gặp
H: Nhấp vào hộp kiểm có hoàn tất xác minh không?
Nhấp vào hộp kiểm có thể bắt đầu hoặc hoàn tất một tương tác phía khách hàng, nhưng ứng dụng được bảo vệ vẫn cần kết quả xác minh yêu cầu bởi tích hợp của nó. Máy chủ nên xác minh phản hồi trước khi chấp nhận hành động được bảo vệ.
H: Tại sao một mã CAPTCHA có thể hết hạn?
Một mã CAPTCHA có thể hết hạn vì nhà cung cấp giới hạn thời gian mà chứng cứ từ một tương tác vẫn có thể sử dụng. Thời gian sống là cụ thể cho sản phẩm. Sắp xếp xác minh với việc gửi biểu mẫu và làm theo vòng đời đã được tài liệu hóa của nhà cung cấp.
H: Một mã có thể được sử dụng lại trên một biểu mẫu khác không?
Một mã không nên được giả định là có thể sử dụng lại hoặc chuyển nhượng giữa các biểu mẫu. Các nhà cung cấp có thể hạn chế thời gian sống, số lượt sử dụng, trang web hoặc hành động. Ứng dụng phải xác minh ngữ cảnh cần thiết cho tích hợp đã chọn.
H: CAPTCHA có thay thế một đăng nhập không?
CAPTCHA không thay thế một đăng nhập. Xác minh con người đánh giá một tương tác, trong khi xác thực thiết lập danh tính tài khoản. Một hành động tài khoản được bảo vệ có thể yêu cầu cả hai, tiếp theo là một kiểm tra ủy quyền tách biệt.
Hỏi: Một công việc tự động hóa nên lưu lại điều gì khi gặp một thử thách?
Một công việc tự động hóa nên lưu lại một mô tả đã được làm sạch của trạng thái và các bằng chứng cần thiết để xác định trang. Tránh giữ lại các khóa bí mật hoặc mã thông báo phản hồi. Giữ kết quả thử thách tách biệt với dữ liệu mục tiêu để các hệ thống downstream không thể nhầm lẫn chúng với việc trích xuất thành công.