Hướng dẫn sử dụng BotDetect CAPTCHA để bảo vệ trang Python

Lưu ý quan trọng

Vì ví dụ mẫu này sử dụng phiên bản BotDetect CAPTCHA được hiện thực dưới dạng COM component, cả máy chủ và máy lập trình của bạn phải sử dụng hệ điều hành họ Windows. Hiện tại, chúng tôi chưa hỗ trợ trang Python chạy trên các hệ điều hành khác.

Yêu cầu hệ thống

Bắt đầu bằng cách tải về Dự án mẫu BotDetect CAPTCHA Python.

LanapBotDetectHandler.py

Dự án mẫu Python chứa file LanapBotDetectHandler.py, nó là một file PHP mà bạn có thể dùng trong ứng dụng PHP của bạn.

File này sử dụng BotDetect CAPTCHA COM để tạo hình ảnh CAPTCHA ngẫu nhiên, sau đó được hiển thị trên trang PHP. Bạn có thể dùng nó "nguyên mẫu" mà không cần phải thay đổi – chỉ cần copy vào cùng thư mục mã nguồn PHP.

Hiển thị hình ảnh CAPTCHA

Cách dễ nhất để hiển thị hình ảnh CAPTCHA là dùng thẻ <img> như sau trong mã HTML của trang Python:

<img src="LanapBotDetectHandler.py?Command=CreateImage" 
  alt="CAPTCHA image" id="CaptchaImage" />

Nếu bạn đã cài đặt BotDetect và copy file LanapBotDetectHandler.py vào cùng thư mục với trang của bạn, đoạn mã này sẽ hiển thị như dưới đây:

Hình ảnh ví dụ BotDetect Python CAPTCHA

Thiết lập các thuộc tính khác của CAPTCHA

Nếu bạn muốn thiết lập các thuộc tính khác (như kích thước ảnh, kiểu...) chỉ cần truyền chúng dưới dạng tham số của chuỗi truy vấn. Ví dụ:

<img src="LanapBotDetectHandler.php?Command=CreateImage&
  TextStyle=28&ImageWidth=300&imageHeight=40&CodeLength=7&
  CodeType=1&Format=PNG" alt="CAPTCHA image" id="CaptchaImage" />

Hình ảnh sinh ra sẽ giống như sau:

Hình ảnh ví dụ BotDetect Python CAPTCHA

Tất cả những tham số khác (ngoài ?Command=CreateImage) là tuỳ chọn, và nếu tham số không được cung cấp, giá trị mặc định sẽ được sử dụng.

Ví dụ, tham số TextStyle xác định giải thuật vẽ CAPTCHA được sử dụng (trong số 50 giải thuật của BotDetect CAPTCHA). Bạn có thể tìm thấy danh sách các giá trị hợp lệ, ví dụ cách sử dụng và hình mẫu tại Tham khảo TextStyle.

Bạn có thể tìm thấy thông tin chi tiết về tất cả các tham số của CAPTCHA trong BotDetect Component Interface.

Sử dụng âm thanh CAPTCHA

Nếu bạn muốn sử dụng âm thanh CAPTCHA để tăng tính truy cập của trang web, cách dễ nhất như sau:

<a href="LanapBotDetectHandler.py?Command=CreateSound">
  <img src="speaker.gif" alt="Play Sound" style="border:0;" />
</a>

Biểu tượng cái loa được sử dụng như đường dẫn để phát âm thanh CAPTCHA. Bạn cũng có thể dùng đường dẫn bằng chữ (vd: "Play Sound") hoặc hình ảnh khác phù hợp với ứng dụng của bạn.

Sử dụng JavaScript để phát âm thanh CAPTCHA

Ví dụ trước rất đơn giản, nhưng không hoàn hảo - nó mở âm thanh CAPTCHA trực tiếp, rồi cho người dùng tải về.

Sẽ thân thiện hơn nếu phát âm thanh CAPTCHA tự động, nếu trình duyệt hỗ trợ. Bạn có thể làm điều này bằng đoạn mã sau:

<a href="LanapBotDetectHandler.py?Command=CreateSound" 
  onclick="LBD_LoadSound('soundPlaceholder', 
    'LanapBotDetectHandler.py?Command=CreateSound'); 
    return false;">
  <img src="speaker.gif" alt="Play sound" style="border:0;" />
</a>
<div id="soundPlaceholder" style="visibility:hidden; border:0; 
  width:0; height:0;"></div>

Đoạn mã này dùng file BotDetectScript.js để thêm động đối tượng âm thanh CAPTCHA vào trang, và phát bằng chương trình plug-in được cấu hình trong trình duyệt ví dụ file (.wav được phát bởi Windows Media Player trong IE, và QuickTime trong Firefox, Opera trong Safari).

Chú ý rằng đoạn mã này sẽ hoạt động như đoạn mã đầu tiên nếu trình duyệt không hỗ trợ Javascript.

Tải lại hình ảnh CAPTCHA

Nếu bạn muốn thêm nút Reload cho phép người dùng thay đổi hình ảnh CAPTCHA, mã JavaScript cũng được bao gồm trong file BotDetectScript.js. Hàm LBD_ReloadImage dùng client ID của CAPTCHA <img>:

<a href="#" onclick='LBD_ReloadImage("CaptchaImage"); return false;' 
  title="Change the code">
    <img src="reload.gif" alt="Thay đổi mã" />
</a>

Xác thực người dùng

Trong cách dùng CAPTCHA thông thường, bạn sẽ phải có một textbox trên trang để nhận câu trả lời của người dùng, và so sánh giá trị được nhập vào với mã CAPTCHA. Phương thức Validate của BotDetect CAPTCHA so sánh giá trị của mã CAPTCHA và giá trị truyền vào.

code = captchaSession.data.get(codeKey)
captchaSession.data[codeKey] = ""
captchaSession.close()

form = cgi.FieldStorage() 
if(form.has_key("CaptchaCode")):
  userInput = form["CaptchaCode"].value
if(form.has_key("FirstName")):
  firstName = form["FirstName"].value
if(form.has_key("LastName")):	
  lastName = form["LastName"].value

if (userInput == code.lower()):
  display_result(firstName, lastName)
else:
  print "Location: ../index.py?FirstName=%s&LastName=%s&WrongCode=
    WrongCode\n" % (firstName, lastName)

Phiên bản hiện tại của BotDetect

Xin lưu ý

Trang này là bản dịch tiếng Việt không chính thức của trang gốc tiếng Anh: How To add BotDetect CAPTCHA protection to Python forms và có thể không chính xác, không đầy đủ hoặc không cập nhật.

Cập nhật ngày 2009-11-30. Áp dụng cho BotDetect ASP.NET CAPTCHA v2.0.15 và BotDetect ASP CAPTCHA v2.0.9.

language: English Español Tiếng Việt