ใช้ recaptcha กรอง spam จาก bot

recaptcha v.2
recaptcha v.2

มนุษย์เราสร้างโปรแกรมดีก็เยอะ ไม่ดีก็แยะ
โปรแกรมบางตัวทำตัวเหมือนมนุษย์แบบสปาย
พอจะเปิดบริการให้ใครเข้าถึงได้ ก็ต้องกรอง
ว่าคำขอใด เป็นของมนุษย์ หรือไม่ใช่ของมนุษย์
เดี๋ยวนี้ google บริการ recaptcha
ช่วยคัดกรองความเป็นมนุษย์

http://www.thaiall.com/captcha.php
แต่โปรแกรมที่จะใช้งานก็ต้องรองรับ recaptcha
ช่วงบ่ายวันนี้ ลองใช้ recaptcha v.2 ง่ายกว่า v.1 เยอะ
ใช้เครื่องที่ทำงาน กรองได้สบาย ทั้งเขียนง่าย และง่ายผู้ใช้
แต่บางเครื่องก็มีปัญหาใช้คำสั่งที่ใคร ๆ เขาใช้ .. ก็ไม่ได้
ต้องไปหาคำสั่งอื่นมาทดแทน สรุปว่าต้องไปใช้
ฟังก์ชัน curl แทน file_get_contents
เพราะเครื่องที่จะใช้ไม่บริการฟังก์ชันนี้
ปล.เครื่องที่มีปัญหา เช่าเค้าอยู่ อยู่กันมานานล่ะ

http://www.thaiall.com/captcha_click.php

ขั้นตอน
1. เตรียม Server ที่รองรับ PHP
2. สมัครใช้ recaptcha จาก google.com
3. กำหนด host name และ domain name ที่ใช้
4. คัดลอก public & private key ไปใช้ใน code
5. เขียน code คือ form กับ verify
6. ทดสอบ และใช้งาน

ใช้ recaptcha ของ google กับ site ใหม่

recaptcha สำหรับป้องกันหุ่นยนต์
recaptcha สำหรับป้องกันหุ่นยนต์
25 ก.พ.59 วันนี้ทำงานคอมพิวเตอร์เสร็จไปอีกงานหนึ่ง
คือ เพื่อนต้องการมีระบบอัพโหลดแฟ้มส่งบทความวิชาการ
ในเว็บไซต์ journal ซึ่งเป็นเงื่อนไขหนึ่งในการส่งวารสาร
เข้าไปใน TCI Database พร้อมกับระบบเว็บบทความที่ไม่เป็น Static
จากตัวอย่างที่เพื่อนให้ดู ก็เห็นว่าใช้ WordPress
1. หา WordPress 4.4.2 มาลงในเครื่องบริการของเพื่อน
ก็ปรับแต่งและเลือกธีม ผมเลือก Twenty Fifteen แบบเมนูซ้าย
เพิ่ม plugin : disable comment
การสร้างเมนูด้านซ้ายก็ใช้ ข้อความใน widget เขียน html
สำหรับการลิงค์ไปโพสต์ต่าง ๆ ตามปกติ
เพราะแต่ละตัวเลือกไม่ได้ลิงค์ไปที่เพจ (page) แต่ลิงค์เข้าบันทึก (post)
มีลิงค์ส่งบทความอันเดียวที่ลิงค์ไปเพจ และใช้ iframe มาแสดงผลในเพจ
2. เขียนระบบอัพโหลดบทความอย่างง่าย
เป็น 1 ใน 3 วิธีส่งบทความ อีก 2 วิธีคือ ไปรษณีย์ และอีเมล
การเปิดให้ส่งบทความก็ต้องกรองกันก่อนว่าตัวจริง ไม่ใช่หุ่นยนต์
3. จึงไปขอใช้บริการ recaptcha ของ google
ซึ่งมี code ที่เคยใช้อยู่ที่ thaiall.com
พบว่าพอย้ายเครื่องบริการก็ต้องไปขอ secret key กับ site key กันใหม่
เพราะตอนตรวจต้องใช้ secret key ใน code แต่ตอนส่งต้องกำหนด site key
4. สรุปว่า .. ขอ key ทั้งสองใหม่จาก recaptcha service โดยใช้ ip ของเครื่องบริการ
แล้วได้รับ key ทั้งสองมาใช้ใน code เดิม ไม่พบปัญหาอะไร
ซึ่ง code ที่ใช้อยู่ที่ http://www.thaiall.com/captcha.php

ใช้ recaptcha ของ google ก็น่าจะ ok แต่ไม่เป็นเช่นนั้น

captcha ของ bumblebeeware ด้วย cgi
captcha ของ bumblebeeware ด้วย cgi


5 ส.ค.56
ผมมีเครื่องบริการอยู่ตัวหนึ่งเป็น linux บริการ php 4.4.9 ก็ใช้มาหลายปีแล้วนะครับ ส่วนภาษา perl เป็นรุ่น 5.8.8 แล้วตอนนำ recaptcha ของ google มาใช้กับภาษา php ทำโดยเพิ่มแฟ้มของ php จำนวน 1 แฟ้มเข้าเครื่องบริการก็สามารถใช้บริการได้ปกติ โดยทดสอบ recaptcha ที่ทำงานด้วย php ที่
http://www.thaiall.com/captcha.php

แต่ระบบต่าง ๆ ในเครื่องบริการที่เขียนด้วย perl ตั้งแต่ปี 2542 นั้น ยังไม่ได้ติด captcha เพื่อป้องกัน bot จึงนำ recaptcha มาติดตั้ง แต่พบว่ารุ่นของ perl ที่ใช้อยู่ในเครื่องบริการ ไม่รองรับคำสั่งแบบใหม่ที่ต้องใช้ use module สำหรับหัวข้อปัญหาคือ recaptcha ของ google กับ perl อยู่ร่วมกันไม่ได้ ที่ผมพบ คือ เครื่องบริการไม่ได้อัพเกรดรุ่นของ perl เป็นรุ่นใหม่ ทำให้ใช้กับ module ใหม่ของ recaptcha ไม่ได้ หากย้ายเครื่องบริการหรือเปลี่ยนรุ่น perl ก็ไม่ได้ เพราะมี script เก่า ๆ ทำงานอยู่เพียบเลย

สรุปว่าใช้ script ของ bumblebeeware ซึ่งเป็น cgi ที่เขียนด้วย perl ที่ทำงานบน 5.8.8 ได้ ซึ่ง script ประกอบด้วย 3 ส่วน คือ form.cgi ทำหน้าที่แสดงตัวอักษร 4 ตัวให้ดูแล้วก็พิมพ์ตาม จากนั้นก็จะให้ captcha.cgi ทำหน้าที่แสดงตัวอักษรกราฟฟิกที่ได้จากการสุ่ม (random) แล้วส่งผลให้ check-captcha.cgi ทำหน้าที่ตรวจสอบว่าที่กรอกเข้ามานั้นตรงกันหรือไม่
โดยเข้าไปศึกษาเพิ่มเติมที่
http://bumblebeeware.com/captcha/
แล้วดาวน์โหลดแฟ้มที่เกี่ยวข้องที่
http://bumblebeeware.com/downloads/captchaforperl.tar.gz
แล้วผมก็ทดสอบฟอร์มไว้ที่
http://www.thaiall.com/captcha/form.cgi
บริการ recaptcha ของ google
http://www.google.com/recaptcha