Akismet — сервис борьбы со спамом

Akismet - сервис борьбы со спамом

От автора: При разработке сайтов, так или иначе, необходимо бороться со спам сообщениями, особенно если предусмотрен механизм приема комментариев от пользователей. Поэтому в данном уроке я хотел бы поговорить о сервисе фильтрации сообщений Akismet.

скачать исходникискачать урок

Введение

Akismet or Automattic Kismet — это сервис фильтрации спама, который фильтрует спам ссылки в комментариях сайта. Фильтр работает путем сбора и объединения информации в специальные правила о спам комментариях с различных сайтов, а затем использует данные правила для блокировки нежелательных сообщений.

Akismet был введен в работу 25 октября 2005 года и в 2013 году отсеял более 100 миллиардов комментариев. Изначально данная система была разработана для CMS WordPress, то есть был создан плагин, посредством которого можно было работать с данной системой. Но сейчас на основе API данной системы создано множество расширений под различные CMS.

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Поэтому если Ваш сайт создан на одной из популярных CMS, скорее всего, есть уже готовое расширение, при помощи которого можно работать с данным сервисом. Но мы в данном уроке рассмотрим случай, когда сайт, разработан без использования готовых CMS, или фреймворков, то есть обычный PHP- сайт. Первым делом необходимо получить акаунт на официальном сайте сервиса http://akismet.com.

После регистрации, Вам предложат выбрать один из тарифных планов использования данной системы:

Для не коммерческих сайтов и для тестирования, можно выбрать бесплатный тарифный план. Выбрав при этом левый блок Personal, и передвинув, ползунок оплаты сервиса в крайнее левое положение.

После регистрации Вы получите специальный ключ API Key, который необходим для доступа к ресурсам сервиса. Подробная документация по использованию данного сервиса содержится по адресу http://akismet.com/development/api/#detailed-docs:

Проверка подлинности API KEY

Для сегодняшнего урока мы будем использовать вот такую тестовую страницу, которая содержит форму добавления нового комментария:

Исходный код данного файла:

В подключаемом файле config.php, объявлена константа API_KEY, в которой сохранен ключ доступа к API сервиса Akismet. Данный файл, я сразу же загрузил на реальный хостинг в интернете, поэтому будем работать с сервисом, практически на реальном сайте.

И первым делом необходимо проверить правильность ключа доступа к API системы Akismet. Для этого в файл добавим следующий код (я привожу только код PHP, который необходимо добавить в начале файла):

Как Вы видите, объявляем функцию akismet_verify_key(), которая проверит правильность ключа и вернет TRUE, если ключ верен и FALSE в противном случае. При этом функция принимает два параметра: первый – это проверяемый ключ, второй – адрес Вашего сайта.

В коде функции необходимо отправить запрос типа POST, на сервер сервиса Akismet. Данные, которые передаются в запросе, сохраняем в переменной $request. А непосредственно сам запрос (данные и необходимые заголовки) формируем в переменной $http_request в виде строки. Вспомогательные переменные:

$host — адрес сервера, который примет данные;

$path – обработчик запроса с данными;

$port — порт;

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

$akismet_ua — параметр USER_AGENT, который должен быть равен строке «WordPress/3.8.1 | Akismet/2.5.9″;

$content_length – количество символов с данными.

При этом если отобразить запрос на экране мы увидим следующее:

Запрос к серверу, отправляем, используя сокеты, а именно, через сокет открываем удаленный файл – функция fsockopen(), которая вернет нам дескриптор открытого файла. Далее мы производим запись в этот файл, таким образом, отправляем в него наш запрос, хранящийся в переменной $http_request, а далее читаем открытый файл и таким образом получаем ответ от сервера:

Если мы получаем ответ valid, значит, ключ верен.

Проверка комментария.

После проверки правильности ключа, необходимо проверить отправляемый комментарий, для этого создадим специальную функцию akesmet_comment_check(). Полный PHP код файла:

Для начала проверяем, пришли ли данные методом POST, если это так, значит, формируем массив $data, со следующими ячейками:

‘blog’=>адрес Вашего сайта,

‘user_agent’ => данные о браузере пользователя;

‘user_ip’ => ip – адрес пользователя;

‘referer’ => страница, с которой перешел пользователь на страницу отправки комментария;

‘permalink’ => адрес страницы отправки комментария;

‘comment_type’ => тип проверяемых данных;

‘comment_author’ => автор комментария;

‘comment_author_email’ => почта автора комментария;

‘comment_author_url’ => адрес сайта автора комментария;

‘comment_content’ => текст комментария.

Далее вызываем функцию akesmet_comment_check($key,$data), которой передаем сформированный массив и ключ доступа к сервису Akismet. Работа функции полностью аналогична функции проверки правильности ключа. За исключением того, что в переменной $host, добавляется к адресу сервера, ключ доступа к API сервиса, в переменной $path – теперь уже другой обработчик данных, и конечно переменная $request – содержит совсем другие данные.

При отправке комментария мы получим следующий ответ от сервера:

Если от сервера возвращается false, значит – комментарий в порядке, если – TRUE, значит это спам комментарий.

На этом данный урок можно завершать. Я Вам предложил сервис Akismet как один из инструментов борьбы со спамом, а решать уже Вам использовать его или нет. Конечно, он не идеален и я бы Вам рекомендовал, обязательно протестировать его работу перед использованием.

Всего Вам доброго и удачного кодирования!!!

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Разработка веб-приложения на PHP

Создайте веб-приложение на PHP на примере приема платежей на сайте

Получить

Метки: ,

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree