API метод check_message

 

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

 

Обязательные параметры:

  • method_name - имя метода, должно быть 'check_message';
  • auth_key - API ключ. Чтобы получить ключ зарегистрируйтесь здесь: https://cleantalk.org/register?platform=api;
  • sender_email - email для проверки;
  • sender_ip - IP для проверки;
  • js_on - включен ли JavaScript в браузере;
  • submit_time - время подтверждения формы в секундах;

 

Список необходимых параметров, которые сильно влияют на фильтрацию. Без передачи этих параметров фильтрация может быть не качественной.

    • all_headers - HTTP заголовки;
    • sender_nickname - никнейм для проверки;
    • message - текст сообщения для проверки, может содержать HTML-тэги;
    • sender_info - информация об отправителе, должна быть json закодированной, следующие поля являются обязательными:
      • REFFERRER - контент $_server['HTTP_REFERER']
      • USER_AGENT - контент $_server['HTTP_USER_AGENT']

 

Не обязательные параметры:

      • sender_info - любая дополнительная информация об объекте проверки. Должна быть закодирована в JSON;
      • response_lang - язык ответа API;
      • post_info - тип комментария и URL формы проверки. Должен быть закодирован в JSON объекте, c обязательным ключём 'comment_type';
      • stoplist_check - флаг проверки по стоп-словам (1 или 0) (должно быть включено в аккаунте);

 

Примеры использования:

Wget запрос:

wget -O- --post-data='{"method_name":"check_newuser","auth_key":"ваш_ключ_доступа","sender_email":"stop_email@example.com","sender_nickname":"John Doe","sender_ip":"127.0.0.1","js_on":1,"submit_time":15}' https://moderate.cleantalk.org/api2.0

 

PHP реализация:

 

Загрузите библиотеку Cleantalk здесь. Папку с библиотекой нужно поместить в ту же папку что и файл php.

Также вы можете установить библиотеку через composer.

 

 

<?php

session_start();

 

require_once (dirname(__FILE__) . '/lib/Cleantalk.php');

require_once (dirname(__FILE__) . '/lib/CleantalkRequest.php');

require_once (dirname(__FILE__) . '/lib/CleantalkResponse.php');

require_once (dirname(__FILE__) . '/lib/CleantalkHelper.php');

 

// Получаем параметры конфигурации

$config_url = 'http://moderate.cleantalk.org/api2.0/';

$auth_key = 'ваш_ключ'; // Ваш ключ Cleantalk

 

if (count($_POST))

{

        $sender_nickname = 'John Dow';

        if (isset($_POST['login']) && $_POST['login'] != '')

                $sender_nickname = $_POST['login'];

 

        $sender_email = 'stop_email@example.com';

        if (isset($_POST['email']) && $_POST['email'] != '')

                $sender_email = $_POST['email'];

 

        $sender_ip = null;

        if (isset($_SERVER['REMOTE_ADDR']))

                $sender_ip = $_SERVER['REMOTE_ADDR'];

 

        $js_on = 0;

        if (isset($_POST['js_on']) && $_POST['js_on'] == date("Y"))

                $js_on = 1;

 

        $message = null;

        if (isset($_POST['message']) && $_POST['message'] != '')

                $message = $_POST['message'];

 

// Тут нужно указать параметры для вызова

$ct_request = new /lib/CleantalkRequest();

$ct_request->auth_key = $auth_key;

$ct_request->agent = 'php-api';

$ct_request->sender_email = $sender_email;

$ct_request->sender_ip = $sender_ip;

$ct_request->sender_nickname = $sender_nickname;

$ct_request->js_on = $js_on;

$ct_request->message = $message;

$ct_request->submit_time = time() - (int) $_SESSION['ct_submit_time'];

 

//Здесь можно разместить дополнительные параметры. Которые описаны в конце страницы.

$ct = new \lib\Cleantalk();

$ct->server_url = $config_url;

 

//Проверка

$ct_result = $ct->isAllowMessage($ct_request);

        if ($ct_result->allow == 1)

                echo 'Message allowed. Reason ' . $ct_result->comment;

        else

                echo 'Message forbidden. Reason ' . $ct_result->comment;

        echo '<br /><br />';

}

else

        $_SESSION['ct_submit_time'] = time();

?>

 

HTML разметка:

 

<form method="post">

        <label for="login">Login:<label>

        <input type="text" name="login" id="login" /> <br />

        <label for="email">Email:<label>

        <input type="text" name="email" id="email" value="" /> <br />

        <label for="message">Message:<label>

        <textarea name="message" id="message"></textarea> <br />

        <input type="hidden" name="js_on" id="js_on" value="0" />

        <input type="submit" />

        </form>

<script type="text/javascript">

var date = new Date(); document.getElementById("js_on").value = date.getFullYear();

</script>

 

Параметры submit_time и js_on крайне важны для проверки. submit_time это количество секунд между моментом отправки формы и загрузкой страницы. js_on может быть рассчитана путем оценки результата выполнения JavaScript в браузере и сравнение с эталонным значением на стороне сервера.

 

Пример использования дополнительных параметров (PHP):

 

$sender_info = array(

        'page_url' =>htmlspecialchars(@$_SERVER['SERVER_NAME'].@$_SERVER['REQUEST_URI']),

        'REFFERRER' => htmlspecialchars(@$_SERVER['HTTP_REFERER']),

        'USER_AGENT' => htmlspecialchars(@$_SERVER['HTTP_USER_AGENT']),

        'fields_number' => sizeof($_POST),

);

$sender_info = json_encode($sender_info);

        if ($sender_info === false) $sender_info = '';

$ct_request->sender_info = $sender_info;

$ct_request->stoplist_check = 1;

$ct_request->all_headers = json_encode(apache_request_headers());

$post_info['comment_type'] = 'general_comment';

$post_info = json_encode($post_info);

        if ($post_info === false) $post_info = '';

$ct_request->post_info = $post_info;

Вы так же можете посмотреть мануал на GitHub.

 

Ответ сервера:

Ответ сервера не зависит от платформы запроса.

{ "stop_queue" : 0, "inactive" : 0, "version" : "7.47", "spam" : 1, "js_disabled" : 0, "comment" : "*** Forbidden. Sender blacklisted. ***", "codes" : "FORBIDDEN BL", "blacklisted" : 1, "fast_submit" : 0, "account_status" : "1", "id" : "433289e278ae059f8fc58914fc890de2", "allow" : 0 }

 

Разъяснение ответа:

      • stop_queue - прервать последовательность размещения комментария (комментарий почти 100% спам);
      • spam - комментарий - спам, возможна отправка на ручную модерацию если флаг stop_queue == 0;
      • js_disabled - выключен ли JavaScript;
      • comment - комментарий сервера относительно отправителя, для вывода пользователю;
      • codes - код ответа сервера;
      • blacklisted - отправитель находится в черном списке;
      • fast_submit - слишком быстрая отправка;
      • account_status - включен ли аккаунт;
      • id - ID запроса (полезно знать при обращении в тех поддержку);
      • allow - разрешено ли сообщение (1) или нет (0);

 

Т.е. если allow = 1, то сообщение не спам. Если allow = 0 - сообщение не разрешено, это спам. Возможны варианты:

allow = 0 && stop_queue = 1 - точно спам.

allow = 0 && stop_queue = 0 - скорее всего спам. В этом случае также возможны варианты:

allow = 0 && stop_queue = 0 && spam = 0 - отправить на ручную модерацию.

allow = 0 && stop_queue = 0 && spam = 1 - поместить в папку Spam в WordPress.

Остальное - информационные флаги для вывода подходящих сообщений визитёрам сайта. 

Подробно коды ответа сервера вы можете изучить в конце этой статьи https://cleantalk.org/help/api-without

 

Доступные возможности:

  • Персональные черные / белые списки помогают вам блокировать нежелательных пользователей или разрешать действия пользователей, которые были распознаны как спамеры.
  • Опция "Стоп-Слова" позволяет вам блокировать комментарии и имена пользователей, которые содержат любое слово из вашего списка Стоп-Слов.
  • Чёрный список стран позволяет блокировать все комментарии/регистрации пользователям из отмеченных вами стран.

Примечание: Опции "Черный список стран"и "Стоп-Слова"доступны после покупки Расширенного Пакета. Подробности можно увидеть на странице обновления подписки.

 

 


Возможно, будет так же интересно