Пример без подключения PHP-библиотеки
Прямые запросы на сервер:
Прямой GET запрос:
Такой способ можно использовать для отладки. Каждый параметр передается как GET параметр.
В ответе вы получите 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' - Ошибочный часовой пояс.
- 'EMAIL_NOT_EXISTS' - адрес e-mail не существует.
- 'BL_EMAIL' - E-mail в чёрном списке.
- 'BL_IP' - IP в чёрном списке.
- 'SEEMS_SPAM_EMAIL' - E-mail попадает под шаблон спам адреса.
- 'SEEMS_SPAM_HEADERS' - Заголовок запроса HTTP похож на спам бота.
- 'SEEMS_SPAM_MESSAGE' - Текст сообщения подходит под шаблон спама.
- 'SEEMS_SPAM_NICK' - Nickname попадает под шаблон спама.
- 'EMAIL_DOMAIN_NOT_EXISTS'- домен e-mail не существует.
Если у вас остались вопросы, то Вы всегда можете связаться со службой технической поддержки. Создайте обращение здесь [ https://cleantalk.org/my/support/open ].
Будет так же интересно
- Описание принципа работы API CleanTalk. Руководство по использованиюОбщая справка по API Проверка регистрации, API метод check_newuser Проверка...
- API методы CleanTalkCleanTalk APIs CleanTalk предоставляет сервисы API, которые позволяют...
- Как настроить защиту от спамботов для PrestaShopНастройка защиты от спамботов для PrestaShop Эта инструкция...