Sử dụng Stop Forum Spam để kiểm tra spambot

1. Nỗi khổ web developer.

Niềm vui lớn nhất của web developer là website hay blog được nhiều người dùng thường xuyên ghé thăm và đăng ký tài khoản để sử dụng. Cứ mỗi người dùng đăng ký sử dụng thì niềm vui đó cứ như được nhân lên. Tuy nhiên, nhiều tài khoản đăng ký vào website chúng ta nhưng chúng không hề kích hoạt để sử dụng. Những tài khoản này còn làm phình to database của chúng ta một cách đáng kể. Bạn hãy lưu ý, chúng là spambot đấy.

Việc ngăn chặn những spambot này làm “bẩn” database của chúng ta cũng khá dễ dàng: chặn từ lúc đăng ký. Tuy nhiên, câu hỏi đặt ra là chúng ta làm sao biết được email, username được submit lên từ form đăng ký là spambot hay chỉ là người sử dụng bình thường. Câu trả lời của chúng ta là stopforumspam.com

2. Đôi điều về Stop Forum Spam

stopforumspam.com có database chứa danh sách các spambot. Ngoài ra, stopforumspam.com còn đưa ra những API giúp chúng ta query một email, username hay một địa chỉ IP có phải là spambot. Và điều cuối cùng là mọi thứ điều được cung cấp sử dụng hoàn toàn miễn phí. Tuy nhiên, Stop Forum Spam chỉ cho phép chúng ta request 5000 lần mỗi ngày. Các bạn có thể tìm hiểu thêm Stop Forum Spam tại đây

3.  Các API

a. Kiểm tra email

http://www.stopforumspam.com/api?email=spammer@yourdomain.com

b. Kiểm tra username

http://www.stopforumspam.com/api?username=yourname

c. Kiểm tra IP

http://www.stopforumspam.com/api?ip=72.197.66.244

Định dạng được Stop Forum Spam trả về có dạng là XML

<response success="true">
<type>ip</type>
<appears>yes</appears>
<lastseen>2007-09-18 05:48:53</lastseen>
<frequency>2</frequency>
</response>

4. Một hàm đơn giản và form nho nhỏ để kiểm tra

<?php
function checkSpambots($mail,$ip,$name)
{
  $spambot = false;
  $xml_string = file_get_contents('http://www.stopforumspam.com/api?email='.$mail);
  $xml = new SimpleXMLElement($xml_string);
  if($xml->appears == 'yes')
  {
    $spambot = true;
  }
  elseif($spambot != true)
  {
    $xml_string = file_get_contents('http://www.stopforumspam.com/api?ip='.$ip);
    $xml = new SimpleXMLElement($xml_string);
    if($xml->appears == 'yes')
    {
      $spambot = true;
    }
  }
  elseif($spambot != true)
  {
    $xml_string = file_get_contents('http://www.stopforumspam.com/username?username='.$name);
    $xml = new SimpleXMLElement($xml_string);
    if($xml->appears == 'yes')
    {
      $spambot = true;
    }
  }
  return $spambot;
}
if($_POST['submit'])
{
  $spambot = checkSpambots($_POST['email'],$_SERVER['REMOTE_ADDR'],$_POST['name']);
  if($spambot == true)
  {
    echo "Đây là spambot!";
  }
  else
  {
    echo "Không phải spambot.";
  }
}
?>

<form method='post'>
Tên: <input type='text' name='name'><br>
E-mail: <input type='text' name='email'><br>
<input type='submit' name='submit' value='check'>
</form>

Hết! Happy coding :D.


Leave a Reply

Your email address will not be published. Required fields are marked *