Displaying articles with tag spam

Inverse Captcha

Posted by PunNeng, Fri Jun 06 16:59:00 UTC 2008

ดีใจมากครับ ในที่สุด blog ผมก็หมดปัญหาเรื่อง spam ไปเสียที เย้..

ทีแรกก็ใช้ akismet ก็ดีอยู่แล้ว แต่มันก็แสดงว่ามีอะไรเป็น spam บ้าง มันขัดหูขัดตามผมเหลือเกิน จนคิดว่าต้องใช้ captcha ช่วยละ

หลังจากการ search หา plugin ดูใน google ตัวแรกที่เจอคือ Inverse Captcha ครับ แค่ชื่อก็น่างงแล้ว

แต่หลังจากใช้ไป 1 อาทิตย์ ไม่มี spam หลุดมาสักตัว(ใน blog ของ Sven Fuchs เอง เขาก็ทดลองเดือนนึง) ไม่ต้องมี captcha แปะให้น่ารำคาญ ไม่ต้องเพ่งตัวอักษรที่อ่านยากแสนยาก

หลังจากที่ลองเล่นดูแล้ว ก็ได้ความว่า

ในหน้า post ลอง view source แถวๆ กล่อง comment จะมี input ประมาณนี้

comment[author]
comment[author_email]
comment[author_url]
comment[body]

แต่หลังจากที่เอาไอ้ inverse captcha นี้มาใส่ หน้าตาจะกลายเป็นแบบนี้

comment[author]
comment[author_xxxxxx]
comment[author_url]
comment[body]
comment[author_email] #display:none;

สิ่งที่เปลี่ยนไปคือ จะมี author_xxxxxx ซึ่ง xxxxxx นี้ จะถูก generate มาอีกที จะเรียกว่า random key ละกัน
แล้วตรงส่วนของช่อง email ปกติ ก็จะถูก display:none ไว้
อธิบายได้ว่า ถ้าเป็นคน จะมองไม่เห็นช่องนี้ แล้วก็จะไม่ใส่
แต่ถ้าเป็น bot มันจะ post email มาแน่นอน
ทำให้รู้ว่า ถ้าหากใส่ email มา แสดงว่าไม่ใช่คนแน่นอน

สำหรับตัว random key ก็จะถูก generate มา ใน plugin ของ mephisto ที่ผมใช้อยู่ ดูเหมือนจะยังไม่ใช่สิ่งที่ผมต้องการเป๊ะๆ
เพราะการ refresh 1 ครั้ง ตัว random key น่าจะเปลี่ยนไป แต่หลังจากลองงัดแงะดูแล้ว ดูเหมือนว่าจะมีปัญหากับ liquid template เลยไม่สามารถจัดการตรงนี้ได้ ยังไงจะลอง implement ให้ดูละกันครับ เพราะผมว่าตัว random key น่าจะเปลี่ยนไปทุกครั้งที่มีการ refresh หน้าเว็บ

ถ้า random key เหมือนเดิมทุกครั้ง bot อาจจะฉลาด แต่ถ้ามันเปลี่ยนไปทุกครั้ง bot คงไม่ฉลาดขนาดนั้นมั้งครับ

สรุปอีกที แนวคิดนี้ แค่เพิ่ม input มาตัวนึง แล้วเอาตัวปกติซ่อนไว้ ถ้าเป็นคน จะมองไม่เห็น แต่จะเห็นช่องที่ถูกเพิ่มมา เราก็จะสามารถเขียนตรวจได้ว่า ถ้ามี post จาก email ปกติมา นั่นแหละ คือ spam แต่ถ้ามาจากช่องที่ถูกเพิ่ม มันคือคน

ผมค่อนข้างประทับใจกับแนวคิดนี้ครับ มันง่ายดี กระบวณการ post ก็ยังเหมือนเดิม

ว่าแต่มัน inverse ยังไงเนี่ย =='

ปล. เดี๋ยวจะ implement ให้ดูอีกทีครับ จะได้เข้าใจในเชิงลึกอีกที

2 comments | Filed Under: General | Tags: spam

codegent: we're hiring