Мне нужно обнаружить информацию на моем сайте. Я пробовал обнаружение, основанное на моделях поведения, и это кажется многообещающим, хотя и относительно трудоемким.
Основой является сбор отметок времени запроса определенной клиентской стороны и сравнение их поведения с общим шаблоном или предварительно вычисленным шаблоном.
Если быть более точным, я собираю временные интервалы между запросами в массив, проиндексированные по функции времени:
i = (integer) ln(interval + 1) / ln(N + 1) * N + 1
Y[i]++
X[i]++ for current client
где N - ограничение по времени (количеству), интервалы, превышающие N, отбрасываются. Первоначально X и Y заполнены единицами.
Затем, после того, как я наберу достаточное их количество в X и Y, пришло время принять решение. Критерием является параметр C:
C = sqrt(summ((X[i]/norm(X) - Y[i]/norm(Y))^2)/k)
где X - определенные данные клиента, Y - общие данные, а norm () - функция калибровки, а k - коэффициент нормализации, в зависимости от типа нормы (). Есть 3 типа:
norm(X) = summ(X)/count(X), k = 2
norm(X) = sqrt(summ(X[i]^2), k = 2
norm(X) = max(X[i]), k is square root of number of non-empty elements X
C находится в диапазоне (0..1), 0 означает, что отклонения в поведении отсутствуют, а 1 - максимальное отклонение.
Калибровка типа 1 лучше всего подходит для повторяющихся запросов, типа 2 для повторяющегося запроса с несколькими интервалами, типа 3 для непостоянных интервалов запроса.
Что ты думаешь? Буду признателен, если вы попробуете это на своих услугах.