Поведенческий слой
Программа выдаёт себя тем, как она действует, а не тем, что делает
Каждый визит порождает движение: курсор идёт к кнопке, клавиши нажимаются и отпускаются, страница прокручивается, экрана касаются. TRACIO непрерывно оценивает это движение и говорит вам, пришло оно от руки или от программы.
За чем мы следим
Четыре канала ввода, взвешенные по устройству в руках у посетителя
Каждый канал оценивается отдельно, а затем они складываются. Веса не зафиксированы — они следуют за тем устройством, которым посетитель реально пользуется. На телефоне вердикт несут касания, а отсутствие курсора не значит ничего. На десктопе курсор — самый сильный канал, а отсутствие потока касаний просто ожидаемо.
Мышь и курсор
Основной канал на десктопеСкорость и её разброс, смены направления на отрезке пути, кривизна траектории при подходе к цели, разгон и торможение перед кликом и мелкий тремор человеческой руки, который скриптовое движение не воспроизводит.
Ритм клавиатуры
Только таймингиСколько каждая клавиша остаётся нажатой, промежуток между отпусканием одной и нажатием следующей, перекрытие, когда следующая клавиша уходит вниз раньше, чем поднялась предыдущая, всплески и паузы, исправления и бэкспейсы. Тайминги — и никогда символы. Смотрите раздел о приватности ниже.
Скролл
Оба форм-фактораРазброс скорости, частота смены направления, инерция, затухающая так, как затухает физический бросок, и паузы, совпадающие с тем, сколько текста реально на экране.
Касания
Основной канал на мобильныхПлощадь контакта и как она меняется в течение тапа, сила нажатия там, где устройство её сообщает, мелкий дрейф пальца, который никогда не попадает дважды в один пиксель, и тайминги между несколькими касаниями.
Одна и та же сессия, взвешенная двумя разными способами
Вес несут мышь и клавиатура. Потока касаний здесь никто не ждёт, поэтому его отсутствие посетителю ничего не стоит.
Вес несут касания и движение устройства. Визит вообще без движений курсора на телефоне — норма, а не подозрительность.
Отсутствие — не улика
Канал, которого устройство никогда не предлагало, исключается из оценки, а не засчитывается против посетителя. Звучит очевидно — и это самый частый способ, которым наивная поведенческая оценка превращает реальных клиентов в подозреваемых: у телефона нет мыши, у человека со скринридером нет плавной траектории курсора, и ни то ни другое ничего не говорит о том, бот перед вами или нет.
Улики
Три вещи, которые делает программа и не может сделать рука
Это примеры, а не полный набор правил, но они показывают, какого рода улики идут в дело. Каждая физически невозможна для руки, и каждая обставлена условиями так, чтобы один странный момент никогда не становился вердиктом.
Метрономные удержания клавиш
Что мы измеряем
Каждая клавиша удерживается почти ровно одно и то же число миллисекунд на всём вводе.
Почему рука так не может
Сколько палец стоит на клавише, зависит от того, что это за клавиша, какой она руке досталась и насколько эта рука устала. У человека времена удержания разбросаны. Инжектированные нажатия порождаются из константы, и разброс схлопывается почти в ноль.
Что удерживает от ошибки
Правилу нужно достаточное количество нажатий в окне, прежде чем оно вообще засчитается. Ввод из четырёх символов — не выборка, и как выборка не оценивается.
Клики-телепорты
Что мы измеряем
Клик приходится на элемент, к которому курсор не двигался: указатель просто возникает в координатах и срабатывает.
Почему рука так не может
Человек подходит к цели: траектория загибается внутрь, скорость падает к концу, и перед нажатием обычно есть момент наведения. Автоматизация задаёт координаты и отправляет событие; подхода нет, потому что физически ничто не двигалось.
Что удерживает от ошибки
Один клик-телепорт — правдоподобный артефакт навигации с клавиатуры или тачпада. Он засчитывается, только когда составляет большинство кликов в сессии, в которой кликов вообще хватило для суждения.
Набор в скрытой вкладке
Что мы измеряем
Нажатия продолжают приходить, пока страница в фоне и её ни разу не выводили на передний план.
Почему рука так не может
Человек не может печатать в страницу, на которую не смотрит. Фермовый софт ведёт десятки вкладок параллельно и не утруждается активировать каждую, прежде чем начать заполнять формы.
Что удерживает от ошибки
Одно событие в момент переключения вкладки — гонка браузерных событий, а не улика. Засчитывается при повторяющемся вводе, когда страница по-прежнему ни разу не была видимой.
Приватность
Мы измеряем ритм. Восстановить текст мы не можем.
Поведенческий сбор работает на всей странице, включая поля пароля, почты и номера карты. Это осознанное решение, и оно заслуживает полного объяснения, а не строчки, закопанной в политике.
Почему важны именно чувствительные поля
Credential Stuffing (подстановка украденных учётных данных), перебор карт и захват аккаунтов происходят ровно внутри этих полей. Детектор, который там сам себя выключает, слеп в единственном месте, где живёт атака. Именно так и было раньше: сбор в чувствительных полях отключался целиком, и самые рискованные секунды визита не давали вообще никаких измерений.
Что сохраняется
Тайминги. Когда клавиша ушла вниз, сколько она там оставалась, сколько прошло до следующей, перекрылись ли два нажатия. Этого достаточно, чтобы отличить руку от генератора, и большего детектор никогда и не просил.
Что не сохраняется
Какая это была клавиша. Внутри чувствительных полей идентичность каждого нажатия заменяется грубым суррогатом прямо в браузере, до того как что-либо покинет страницу, — на одну из небольшого набора корзин, а не на символ. Обратного отображения не существует. В потоке, который доходит до наших серверов, нет ни текста, ни его частей, ни чего-либо, из чего текст можно было бы собрать.
Следствие, с которым пришлось разобраться
Раз идентичность клавиш в этих полях действительно утрачена, любое правило, которому нужно различать клавиши, обязано исключить такие нажатия из собственного счёта — иначе обычный пароль выглядел бы как одна клавиша, стучащая раз за разом, и мы помечали бы людей за то, что они печатают правильно. Правил, работающих на таймингах, это не касается: они продолжают считать по всему потоку.
Отключение сбора никогда не защищало содержимое
Символы не собирались ни в той, ни в другой схеме. Прежнее сплошное исключение убирало только улики — оно ослепляло детектор, никого не делая приватнее. Подход с суррогатами даёт ровно ту же гарантию о вашем тексте и возвращает детектору его измерения. Более сильный детект и лучшая приватность вышли из одного решения — случай достаточно редкий, чтобы сказать об этом прямо.
Как выкатываются правила
Новое правило работает вслепую, прежде чем ему позволят влиять на вердикт
Детект портится в ту же секунду, когда начинает умничать без доказательств. Каждое поведенческое правило сначала добавляется в тени: оно считается на живом продакшен-трафике и его результат записывается, но в оценку, которую кто-либо видит, оно не вносит ничего.
Выкатано в тени
Правило считается на реальном трафике с первого дня. Его результат уходит только в аналитику — ничей вердикт не сдвигается оттого, что добавили правило.
Измерено на обеих популяциях
Мы смотрим, как часто оно срабатывает на сессиях, независимо признанных человеческими, и на сессиях, независимо признанных автоматизированными, — на объёме живого трафика, достаточном, чтобы это что-то значило.
Решают два порога
Оно обязано разделять как минимум десять к одному — срабатывать на автоматизации не реже чем в десять раз чаще, чем на людях, — и обязано удерживаться ниже 0,5% срабатываний на живых человеческих сессиях.
Повышено или оставлено в темноте
Правило, прошедшее оба порога, получает вес в оценке. Правило, которое их не прошло, остаётся в тени или удаляется совсем. Повышение — осознанное изменение, прошедшее ревью: автоматически ничего не включается.
Именно это защищает вас от детектора, который за ночь поумнел и начал отваживать ваших же клиентов. Ваша доля ложных срабатываний не сдвигается оттого, что кому-то в пятницу вечером пришла идея.
Что вы получаете
Три поля, приходящие вместе с событием идентификации
Поведенческий вердикт приходит рядом с остальным событием — без второго вызова, без опроса, без отдельной ручки, которую надо интегрировать.
Фрагмент события
{
"visitorId": "X7fh2Hg9LkMn3pQr",
"behavior": {
"score": 87.4,
"verdict": "human",
"confidence": 0.82
}
}Доступно на тарифе Business и выше. Доставляется в вебхуках и доступно через Data API.
Поведенческий блок — это сигнал, а не действие. Сам по себе он ничего не блокирует: вы сочетаете его с остальным событием и с собственной политикой, там решение и должно приниматься.
Границы
Чего поведение вам не скажет
Поведение хорошо отвечает на один вопрос: человек или программа. На вопрос «какой именно человек» оно не отвечает, и мы не продаём его так, будто отвечает.
Это не сигнал идентичности
Мы не заявляем, что узнаём вернувшегося человека по его набору или мыши. Мы это измерили на живом трафике: сопоставление конкретного человека между двумя браузерами, которыми он сам пользуется, сработало не лучше случайного угадывания. Любого поставщика, продающего «поведенческую биометрию, которая опознаёт пользователя», стоит попросить опубликовать ровно это же число.
Оно не заменяет идентификацию
Кто это за устройство — отвечает слой устройства и браузера. Поведение говорит, какого рода актор это устройство ведёт. Это ответы на разные вопросы, и один другой не заменяет.
Ему нужен ввод, чтобы работать
Посетитель, который зашёл и ушёл за две секунды, почти ничего не даёт для оценки. Честный ответ здесь — «uncertain» с низкой уверенностью, а не догадка, наряженная вердиктом.
Частые вопросы
Посмотрите поведенческий вердикт на своём трафике
Поставьте агент, посмотрите, как оценка приходит с каждым событием идентификации, и решите сами, чего она стоит.