Пример без подключения PHP-библиотеки

 

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

Прямой GET запрос:

Такой способ можно использовать для отладки. Каждый параметр передается как GET параметр.

https://api.cleantalk.org/?method_name=spam_check&auth_key=123456&email=stop_email@example.com&ip=127.0.0.1

В ответе вы получите JSON строку. Смотрите ниже.

 

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

wget -O- --post-data='
{"method_name":"check_newuser","auth_key":"your_acccess_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

Если вы делаете тестовый запрос параметры submit_time и js_on необходимо оставить со значениями 12 и 1 соответственно.

 

Собственный API:

Пример использования, PHP часть:

<?php
session_start();
if (count($_POST))
{
        $sender_info = array(
                'user_agent' => $_SERVER['HTTP_USER_AGENT'],
                'referer' => $_SERVER['HTTP_REFERER'],
        );
        $js_on = 0;
        if (isset($_POST['js_on']) && $_POST['js_on'] == date("Y")) //Сравнеине даты сервера и браузера - оно должно быть одинаковым если JavaScript включен
                $js_on = 1;
        $params = array(
                'method_name' => 'check_newuser',
                'auth_key' => 'Ваш_ключ',
                'sender_email' => isset($_POST['email']) ? $_POST['email'] : 'stop_email@example.com',
                'sender_nickname' => isset($_POST['login']) ? $_POST['login'] : 'John Doe',
                'sender_ip' => $_SERVER['REMOTE_ADDR'],
                'js_on' => $js_on ,
                'submit_time' => time() - (int) $_SESSION['ct_submit_time'], //"Время оправки формы" минус "время доступа на страницу" = submit_time
                'sender_info' => json_encode($sender_info),
        );
        $check = curl_init();
        curl_setopt($check, CURLOPT_URL, 'https://moderate.cleantalk.org/api2.0');
        curl_setopt($check, CURLOPT_TIMEOUT, 10);
        curl_setopt($check, CURLOPT_POST, true);
        curl_setopt($check, CURLOPT_POSTFIELDS, json_encode($params)); // receive server response ...
        curl_setopt($check, CURLOPT_RETURNTRANSFER, true); // resolve 'Expect: 100-continue' issue
        curl_setopt($check, CURLOPT_HTTPHEADER, array('Expect:'));
        curl_setopt($check, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($check, CURLOPT_SSL_VERIFYHOST, false);
        $result = curl_exec($check);
        curl_close($check);
 
        if ($result)
        {
                $ct_result = json_decode($result);
                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(); //Сохранение время доступа на страницу когда работаем через GET метод
}
?>

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

 

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 />
        <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>

 

В любом случае сервер вернет вам JSON строку, на пример:

В случае использования сервиса без API вам придется разбирать эту строку самостоятельно.

{
"stop_queue" : 1,
"inactive" : 0,
"version" : "7.76",
"codes" : "DENIED BL FAST_SUBMIT",
"spam" : 0,
"js_disabled" : 0,
"comment" : "*** Forbidden. Sender blacklisted. You submitted too quickly. You may try again in a few seconds. ***",
"blacklisted" : 1,
"fast_submit" : 1,
"account_status" : "1",
"id" : "5a78dca12150a9bb3364a69ee02879a9",
"allow" : 0
}

 

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

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

 

Варианты кодов ответа:

  • 'ALLOWED' - Разрешен.
  • 'ALLOWED_PRIV_LIST' - Разрешен по приватным белым спискам.
  • 'ALLOWED_PROFILE' - Профиль разрешен.
  • ALLOWED_USER' - Пользователь разрешен.
  • 'BAD_INSTALL' - Проверьте установку плагина.
  • 'BAD_LANGUAGE' - Содержит плохой язык.
  • 'BL_DOMAIN' - HTTP ссылки из черных списков.
  • 'BL' - Отправитель находится в черном списке.
  • 'COMMENT_TYPE_UNKNOWN' - Trackback, Pingback comment's type need manual moderation.
  • 'CONTACTS' - Содержит ссылки.
  • 'CONTACTS_DATA' - Содержит контактные данные.
  • 'DENIED' - Запрещен.
  • 'DENIED_GREY_LIST' - Пожалуйста отправьте форму снова.
  • 'DENIED_PRIV_LIST' - Содержится в черных списках.
  • 'DENIED_PROFILE' - Профиль заблокирован.
  • 'DENIED_USER' - Пользователь заблокирован.
  • 'ERR_CLIENT_IP_EQ_SERVER_IP' - IP посетителя совпадает с IP сервера.
  • 'FAST_SUBMIT' - Слишком быстрая отправка формы.
  • 'FORBIDDEN' - Запрещен.
  • 'JS_DISABLED' - Пожалуйста, включите JavaScript.
  • 'KEY_NOT_FOUND' - Антиспам выключен. Проверьте ключ доступа.
  • 'MANUAL' - Необходимо ручное подтверждение.
  • 'MULT_MESSAGE' - Массовая отправка.
  • 'MULT_SUBMIT' - Повторная отправка комментария.
  • 'NO_NORM_WORDS' - Нет словарных слов.
  • 'OFFTOP' - Оффтоп.
  • 'SERVICE_DISABLED' - Сервис выключен, проверьте статус аккаунта.
  • 'SERVICE_FREEZED' - Сервис остановлен, увеличьте лимит запросов.
  • 'STOP_LIST' - Содержит стоп-слова.
  • 'TRIAL_EXPIRED' - Пробный период истек.
  • 'USERNAME_SPAM' - Спамерское имя отправителя.
  • 'WRONG_TZ' - Ошибочный часовой пояс.
  • "FORBIDDEN EMAIL_NOT_EXISTS" - адрес e-mail не существует.

 

Если  у вас остались вопросы, то Вы всегда можете связаться со службой технической поддержки. Создайте обращение здесь [ https://cleantalk.org/my/support ] или напишите на почту [ welcome@cleantalk.org ].

 

 


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