MyTetra Share
Делитесь знаниями!
Как на форуме PunBB 1.4.4 самостоятельно защититься от спама с помощью запроса на stopforumspam.com
Время создания: 07.02.2017 09:32
Текстовые метки: stopforumspam.com, спам, проверка email, антиспам, PunBB, форум, php, блокировка, защита, спаммеры, spam, spammers
Раздел: Компьютер - Программирование - Язык PHP - PunBB
Запись: xintrea/mytetra_syncro/master/base/1486449135l7890rg97i/text.html на raw.github.com

Инструментарий


Сайт 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, на форме регистрации будет появляться сообщение:




Внимание! Следующие проблемы препятствуют регистрации:

  • Spam detected



Эту защиту можно применять в любых проектах, в которых происходит размещение пользовательского контента на страницах сайта.


Реальность показывает, что спамеры генерируют e-mail адреса с такой скоростью, что проверять только e-mail зачастую недостаточно - эти e-mail появляются в базе StopForumSpam с задержкой, и спамеры успевают зарегистрироваться и наплодить на форумах рекламных сообщений. Поэтому рекомендуется так же проверять и IP (как это сделать, в принципе, понятно из примеров выше). Проверку по IP спамеры просто так обойти не могут, во всяком случае до момента полного внедрения IPv6 во всей сети Интернет.



 
MyTetra Share v.0.65
Яндекс индекс цитирования