Описание метода API CleanTalk Anti-Spam "check_newuser"

Этот API метод лучше всего подходит для фильтрации спам регистраций, подписок и других форм, где отсутствуют дополнительные поля для ввода данных пользователем или их проверка вам не требуется (опросы, заказы eCommerce и прочее).

  1. Соберите данные с веб-формы.
  2. Отправьте данные JSON через запрос POST на https://moderate.cleantalk.org/api2.0.
  3. Проанализируйте ответ и примите решение.

Запрос

Ответ

Примеры кода

Ссылки по теме

 

{
	"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",
	"event_token":"sha_256_string_of_event_token"
	"submit_time":15,
	"sender_info": {
		"REFERRER": "https:/referrer-site.com",
		"USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3835.0 Safari/537.36"
		}
}

Необходимая информация об обработке данных

Параметр Объяснение
HTTP Метод POST
Формат данных JSON
URL https://moderate.cleantalk.org/api2.0

Без этих параметров метод не будет работать  

Параметр Объяснение
method_name Имя метода, должно быть "check_newuser"
auth_key Ключ Доступа к сервису. Что бы получить Ключ Доступа зарегистрируйте аккаунт здесь

Эти параметры необходимы для фильтрации спама

Параметр Объяснение
sender_ip IP отправителя
sender_email Емейл отправителя
sender_nickname Никнейм отправителя
event_token В макет страницы необходимо добавить специальный скрипт https://moderate.cleantalk.org/ct-bot-detector-wrapper.js. Он будет собирать на нашем сервере данные посетителя с фронтенда вашего сайта. Когда вы отправите на наш сервер запрос на проверку спама, все собранные с фронтенда данные будут привязаны к запросу по значению параметра event_token. 
event_token_enabled Для правильной фильтрации спама вы должны установить этот флаг в 1, если подключили Bot Detector и передаете event_token
submit_time  Время отправки формы в секундах. Этот параметр можно не передавать если вы передали флаг event_token_enabled и подключили Bot Detector
js_on Флаг прохождения JavaScript‑теста. 1 — на стороне посетителя успешно выполнился встроенный JS‑скрипт. 0 или отсутствие поля — скрипт не отработал. Этот параметр можно не передавать если вы передали флаг event_token_enabled и подключили Bot Detector
all_headers Заголовки HTTP-запроса (закодирована в JSON)
sender_info

Информация об отправителе (закодирована в JSON). Включите следующие обязательные параметры:

REFERRER: содержимое $_SERVER["HTTP_REFERER"] 

USER_AGENT: содержимое $_SERVER["HTTP_USER_AGENT"]

 

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

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

Ключ Разъяснение
js_disabled JavaScript включен/отключен (1/0)
blacklisted Отправитель находится в черном списке CleanTalk
comment Комментарий сервера относительно запроса, для вывода пользователю
Коды ответа

Коды ответов сервера. Могут быть перечислены через пробел:

  • 'ALLOWED_PRIV_LIST' - Пользователь одобрен приватным списком
  • 'ALLOWED_USER' - Пользователь одобрен
  • 'BL' - Отправитель в черном списке
  • 'DENIED_PRIV_LIST' - Пользователь запрещен приватным списком
  • 'EMAIL_DOMAIN_DISPOSABLE' - Емейл одноразовый
  • 'EMAIL_DOMAIN_NOT_EXISTS'- Емейл домен не существует
  • 'EMAIL_NOT_EXISTS' - Несуществующий емейл адрес
  • 'FAST_SUBMIT' - Слишком быстрая отправка формы
  • 'FORBIDDEN' - Пользователь запрещен
  • 'JS_DISABLED' - JavaScript отключен
  • 'KEY_NOT_FOUND' - Ключ Доступа не найден в нашей базе данных
  • 'SEEMS_SPAM_EMAIL' - Емейл адрес содержит спам-шаблоны
  • 'SEEMS_SPAM_HEADERS' - Заголовки HTTP-запросов выглядят как спам
  • 'SEEMS_SPAM_NICK' - Никнейм содержит спам-шаблоны
  • 'SERVICE_DISABLED' - Сервис отключен. Проверьте стетус аккаунта
  • 'STOP_LIST' - Содержит стоп-слова
  • 'TRIAL_EXPIRED' - Пробный период истек
fast_submit Слишком частая отправка формы. Обратите внимание на отличие от кода FAST_SUBMIT
id ID запроса (полезно знать при обращении в техническую поддержку)
account_status Статус аккаунта: включен/отключен (1/0)
allow Решение сервера. Разрешен запрос (1) или нет (0)
В коде ответа сервера вы также можете увидеть результат проверки адреса электронной почты на существование. Если заблокированный запрос содержит несуществующий адрес электронной почты, вы увидите следующий текст в поле кода ответа API: "FORBIDDEN EMAIL_NOT_EXISTS"
Обратите внимание, что этот код будет отображаться только в том случае, если несуществующий адрес электронной почты является основной причиной блокировки.

 

Чтобы интегрировать CleanTalk в ваш проект, используйте наши официальные библиотеки.
Все примеры доступны в репозиториях GitHub (инструкции по использованию см. в файлах README):

 

CLI пример

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

Backend (GoLang)

package main

import (
	"encoding/json"
	"fmt"
	"io"
	"io/ioutil"
	"net/http"
	"strings"
)

var authKey string = "enter_your_key"
var configUrg string = "http://moderate.cleantalk.org/api2.0/"
var agent string = "golang-api"

type newUserInputData struct {
	AuthKey        string `json:"auth_key"`
	Agent          string `json:"agent"`
	SenderEmail    string `json:"sender_email"`
	SenderIp       string `json:"sender_ip"`
	SenderNickname string `json:"sender_nickname"`
	JsOn           uint   `json:"js_on"`
	SubmitTime     uint   `json:"submit_time"`
}

type NewUserResultData struct {
	Version       string `json:"version"`
	Inactive      uint   `json:"inactive"`
	JsDisabled    uint   `json:"js_disabled"`
	Blacklisted   string `json:"blacklisted"`
	Comment       string `json:"comment"`
	Codes         string `json:"codes"`
	FastSubmit    uint   `json:"fast_submit"`
	Id            string `json:"id"`
	AccountStatus uint   `json:"account_status"`
	Allow         uint   `json:"allow"`
}

func main() {
	inputData := newUserInputData{
		MethodName:     "check_newuser",
		AuthKey:        authKey,
		Agent:          agent,
		SenderEmail:    "stop_email@example.com",
		SenderIp:       "192.168.0.1",
		SenderNickname: "testuser",
		JsOn:           1,
		SubmitTime:     5,
	}

	resultData, err := CheckNewuser(inputData)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	if resultData.Allow == 1 {
		fmt.Println(fmt.Sprintf("User allowed. Reason %s", resultData.Comment))
		return
	}
	fmt.Println(fmt.Sprintf("User forbidden. Reason %s", resultData.Comment))
}

func CheckNewuser(inputData newUserInputData) (NewUserResultData, error) {
	inputDataBytes, err := json.Marshal(inputData)
	var resultData NewUserResultData
	if err != nil {
		return resultData, err
	}
	var body io.Reader = strings.NewReader(string(inputDataBytes))
	req, err := http.NewRequest(http.MethodPost, configUrg, body)
	if err != nil {
		return resultData, err
	}
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return resultData, err
	}
	defer resp.Body.Close()

	answer, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return resultData, err
	}
	err = json.Unmarshal(answer, &resultData)
	return resultData, nil
}

Frontend (HTML)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://moderate.cleantalk.org/ct-bot-detector-wrapper.js" id="ct-bot-detector-js></script>
</head>
<body>
  <form method="post" action="chek_newuser.php">
      <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="submit" />
  </form>
</body>
</html>

Опции, доступные при использовании с методом:

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

    Опции Стоп-Слова и блокировка по странам доступны после покупки нашего Дополнительного Пакета. Перейдите на страницу продления лицензии, чтобы увидеть подробности.

Была ли эта информация полезной?

Будет так же интересно

Copied to clipboard