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

Данный метод лучше всего подходит для форм, содержащих пользовательский контент (UGC), например: комментарии, отзывы или контактные формы.

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

Запрос

Ответ

Примеры кода

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

 

{
	"method_name":"check_message",
	"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"
		},
	"message": "Hello I am a spammer visit this https://badlinkexample.com"
}

 

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

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

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

Параметр Объяснение
method_name Имя метода, должно быть "check_message"
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
message Сообщение посетителя. Будет проверено на наличие подозрительных ссылок, контактных данных и т.д.
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" : "DENIED BL",
	"fast_submit" : 0,
	"id" : "5a49267e202169b3a4d9ddefee190065",
	"account_status" : 1,
	"allow" : 0
}

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

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

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

В коде ответа сервера вы также можете увидеть результат проверки адреса электронной почты на существование. Если заблокированный запрос содержит несуществующий адрес электронной почты, вы увидите следующий текст в поле кода ответа API: "DENIED EMAIL_NOT_EXISTS"

Обратите внимание, что этот код будет отображаться только в том случае, если несуществующий адрес электронной почты является основной причиной блокировки.

 

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

 

CLI 

wget -O- --post-data='{"method_name":"check_message","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
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 messageInputData struct {
	MethodName     string `json:"method_name"`
	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"`
	AllHeaders     string `json:"all_headers"`
	Message        string `json:"message"`
	SenderInfo     string `json:"sender_info"`
	ResponseLang   string `json:"response_lang"`
	PostInfo       string `json:"post_info"`
	StoplistCheck  uint   `json:"stoplist_check"`
}

type MessageResultData 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"`
	StopQueue     uint   `json:"stop_queue"`
	Spam          uint   `json:"spam"`
}

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

	resultData, err := CheckMessage(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 CheckMessage(inputData messageInputData) (MessageResultData, error) {
	inputDataBytes, err := json.Marshal(inputData)
	var resultData MessageResultData
	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

 

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

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

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


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

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

Copied to clipboard