Инструментарий
Сайт stopforumspam.com - это общественный проект, предоставляющий сведения об E-mail и IP-адресах с которых осуществляются спамерские атаки на форумы. База простоянно обновляется и актуализируется. Имеется API для автоматизированных запросов. Использование бесплатное, но авторы проекта охотно принимают донаты.
Пример запроса к StopForumSpam для проверки email:
http://www.stopforumspam.com/api?&email=olya-komosko@mail.ru&f=serial
Ответ будет дан в виде сериализованного ассоциативного PHP-массива:
a:2:{
s:7:"success"; i:1;
s:5:"email"; a:4:{
s:8:"lastseen";s:19:"2017-02-06 16:29:28";
s:9:"frequency";i:22;
s:7:"appears";i:1;
s:10:"confidence";d:83.019999999999996;
}
}
Тут невооруженным взглядом видно, что в ответе параметр appears (появление в базе спамеров) равен 1, а параметр confidence (уверенность) равен 83%.
Можно запросить информацию и в формате json, причем можно указать не только e-mail, но и другие параметры (например, имя пользователя, IP):
http://www.stopforumspam.com/api?
& username =Xrumervj
& email =lp982db@buyanessaycheape.top
& ip =194.44.92.140
&f=json
Ответ будет примерно такой:
{
"success": 1,
"username": {
"frequency": 0,
"appears": 0
},
"email": {
"frequency": 0,
"appears": 0
},
"ip": {
"lastseen": "2017-03-02 20:49:32",
"frequency": 41,
"appears": 1,
"confidence": 90.11,
"delegated": "ua",
"country": "ua",
"asn": 3255
}
}
Здесь видно, что по имени пользователя и e-mail информации в базе StopForumSpam нет (т. к. это еще новые нагенерированные спамерами имя и e-mail), но по IP можно увидеть, что с данного адреса спам шлется регулярно.
Продробнее о формате - на странице описания API: http://www.stopforumspam.com/usage
Так же можно получать ответы в виде XML и Json.
Для блокировки регистрации спамеров можно воспользоваться двумя решениями.
Решение 1
На странице http://www.stopforumspam.com/contributions есть готовые плагины для всех популярных форумов. Там же есть плагины для PunBB, PhpBB, FluxBB, MyBB, YaBB, плагины для фреймверков DJango, Symphony, для системы блогов WordPress и для прочих платформ.
Линк на тему с поддержкой плагина StopForumSpam.com Antispam для BunBB на официальном форуме:
http://punbb.informer.com/forums/topic/23348/extension-release-stopforumspamcom-antispam/
Решение 2
Для PunBB 1.4.4 можно сделать следующую правку. Необходимо найти файл include/email.php, и добавить в него функцию:
function is_spam_email($email)
{
if(strlen(trim($email))==0)
return false;
try
{
$data = unserialize(file_get_contents('http://www.stopforumspam.com/api?&email='.urlencode($email).'&f=serial'));
// Если сервис StopForumSpam не отвечает
if($data===false)
return false;
// Если в ответе нет нужных полей
if(!(isset($data['email']['appears']) and isset($data['email']['confidence'])))
return false;
if($data['email']['appears']!=0 and $data['email']['confidence']>=70)
return true; // Email в базе спаммеров
else
return false;
}
catch (Exception $e)
{
return false; // Попытка запроса была неудачной
}
}
Затем надо найти файл register.php и добавить в него код в районе 152-162 строки:
if(is_spam_email($email1))
$errors[] = 'Spam detected';
После этих изменений, если попробовать зарегистрироваться с указанием спаммеровского E-mail, на форме регистрации будет появляться сообщение:
Внимание! Следующие проблемы препятствуют регистрации:
|
Эту защиту можно применять в любых проектах, в которых происходит размещение пользовательского контента на страницах сайта.
Реальность показывает, что спамеры генерируют e-mail адреса с такой скоростью, что проверять только e-mail зачастую недостаточно - эти e-mail появляются в базе StopForumSpam с задержкой, и спамеры успевают зарегистрироваться и наплодить на форумах рекламных сообщений. Поэтому рекомендуется так же проверять и IP (как это сделать, в принципе, понятно из примеров выше). Проверку по IP спамеры просто так обойти не могут, во всяком случае до момента полного внедрения IPv6 во всей сети Интернет.