Tản mạn về bot và chống bot
Tính năng comment được đưa vào blog nhằm đảm bảo sự tương tác 2 chiều giữa người viết và người đọc blog. Vấn đề là, cái gì cũng có mặt trái của nó. Blog càng nổi tiếng thì số lượng comment spam càng nhiều. Đó là những comment hoàn toàn vô nghĩa, do bot submit, hầu hết đều chỉ chứa link quảng cáo các site với nội dung không liên quan đến bài viết. Lấy ví dụ như blog TechCrunch, tính riêng RSS reader đã lên con số 620000, thì việc phải giải quyết với 15000 comment spam một ngày là điều hoàn toàn không khả thi, nếu không sử dụng hình thức chống bot nào.
Mặc định WordPress chống bot bằng blacklist. Những IP, email, nội dung comment được định nghĩa trong blacklist sẽ bị đánh dấu là spam mà không cần chuyển vào moderation queue. Comment nào chứa hơn n đường link (với n do người dùng tự chọn) cũng sẽ bị coi là nghi vấn, và cần phải kiểm duyệt thủ công. Tuy nhiên độ hiệu quả của 2 hình thức này tỉ lệ nghịch với quy mô của blog.
Cách khác là dùng plugin Akismet của Automattic. Các comment, trackback hay pingback khi được submit sẽ được chuyển tới server của Akismet để xử lý, qua đó xác định độ “thật” của nội dung đó. Rất hiệu quả, chỉ cần nhìn vào con số 3.6 tỉ comment spam bị chặn lại là thấy.
92% lượng comment là spam. Vậy nên chống bot trên các trang web, cũng như comment spam trong các blog, không phải là điều gì đó mới mẻ. Một giải pháp thường được đưa vào sử dụng là CAPTCHA, yêu cầu người muốn comment/người muốn đăng ký thành viên/whoever căng mắt ra đọc một chuỗi số và/hoặc ký tự trong một ảnh bé xíu và điền vào form. Mỗi trang web một loại CAPTCHA, muôn hình vạn trạng. Có người làm ắt có người phá, CAPTCHA decoder cũng lũ lượt ra đời, nhưng xem ra CAPTCHA của những trang web lớn như Google, Yahoo! hay Hotmail vẫn thuộc loại khó nhằn. Theo quan điểm cá nhân thì tớ có cảm tình với CAPTCHA của Google nhất - không quá đánh đố người sử dụng, và những ký tự trong CAPTCHA thường đều *nghe có vẻ có nghĩa*:
So với CAPTCHA của Hotmail có lẽ là một trời một vực:
Nhưng CAPTCHA của Hotmail vẫn chưa là gì nếu đem so với CAPTCHA của một số trang web khác:
Nếu có hứng thú, bạn có thể xem thêm bài viết Craziest CAPTCHAs on the web.
CAPTCHA phổ biến, hiệu quả (vì nếu không thì Google hay Yahoo! chẳng sử dụng làm gì), tuy nhiên cũng có mặt trái của nó. Với những người có thị lực không được tốt lắm, thì bảo họ đọc CAPTCHA quả không phải là điều đơn giản. Còn người mù thì dĩ nhiên là bó tay và phải phụ thuộc vào tính năng đọc CAPTCHA thành tiếng (như của Hotmail). Nếu người đó vừa mù vừa điếc thì… tớ chịu.
Cũng không thể không nhắc đến một *kỹ thuật mới* để chống lại CAPTCHA, bên cạnh dùng phần mềm nhận dạng chữ viết (OCR), là dùng chính người thật để giải CAPTCHA. Tháng 10.2007, một malware đã tận dụng những hình ảnh “mát mẻ” để dụ người sử dụng giải các CAPTCHA lấy từ nơi khác. Xem thêm tại Wikipedia.
Tương tự CAPTCHA, để nhận biết nội dung submit có đúng là của người không, một số giải pháp khác cũng được đưa vào sử dụng. Ví dụ như buộc người dùng thực hiện một phép tính đơn giản, đại loại kiểu:
Tiến xa hơn thì chuyển qua… đánh đố:
Một chiêu khác ngoài “đố mày 1+1 bằng mấy” là sử dụng KittenAuth hay hotcaptcha. Với KittenAuth, một loạt hình ảnh được đưa ra ở dạng grid - 3×3 hoặc 4×4. Người dùng sẽ phải chọn những hình thỏa mãn yêu cầu nào đó, ví dụ “chọn tất cả ảnh mèo”, hay “chọn 3 ảnh chứa cá heo”:
Tương tự với hotcaptcha, có khác là ảnh động vật được thay bằng ảnh người thật, và với thực tế ảnh hotcaptcha sử dụng lấy từ trang web nổi tiếng HotOrNot, thì chắc bạn cũng đoán được nhiệm vụ của mình khi phải giải hotcaptcha:
KittenAuth, hay hotcapcha, dĩ nhiên đều có khuyết điểm của CAPTCHA, nghĩa là người không có mắt tốt phải bó tay. hotcaptcha còn có điểm yếu khác, đó là phụ thuộc vào JavaScript, và không phải ai cũng bật tùy chọn này.
Nếu như CAPTCHA được sử dụng với mục đích xác định xem nội dung được submit có phải là do người thật thực hiện không, thì có một vài hình thức khác đi theo hướng ngược lại: xác định xem nội dung đó có phải do bot thực hiện không.
Đó có thể là kiểm tra thời gian submit form xem có hợp lý không. Sinh vật nào có thể điền hoàn chỉnh một form dài hơn một trang màn hình trong 0.5 giây ngoài bot nhỉ?
Đó cũng có thể là dùng CSS, ẩn đi một số form field, và đặt cho những field đó những tên thông thường như name, email, url. Nếu người thật điền form, họ sẽ không nhìn thấy những field đó, và dĩ nhiên nội dung của chúng sẽ là rỗng. Ngược lại, bot sẽ điền tứ tung tất cả các form, và tự mình chứng tỏ mình là bot. Xem thêm bài viết Fighting spam with CSS.
Cách này tận dụng CSS, nên nếu người dùng sử dụng text browser hay browser không hỗ trợ CSS, thì họ cũng nhìn thấy những field được cho là ẩn. Giải quyết trường hợp này cũng là vấn đề cần quan tâm.
Nói chung, chống bot không có phương pháp nào hiệu quả 100%. Webmaster phải tự chọn cho mình một phương pháp hiệu quả. CodingHorror chẳng hạn, blog này có hơn 68000 RSS reader, chỉ sử dụng một CAPTCHA không thay đổi theo thời gian là từ “orange”, nhưng cũng đã hạn chế được hầu hết các bot. Số comment spam còn lại, khi được lọc qua bằng Akismet, được giải quyết triệt để.
Bài viết được gửi hôm 30.11.07 · Mang các từ khóa akismet, bot, captcha, comment spam
Bài viết liên quan:









