Мне нужно обнаружить выскабливание информации на моем сайте. Я пробовал обнаружение на основе моделей поведения, и он кажется многообещающим, хотя относительно тяжелым вычислением.
База предназначена для сбора временных меток запроса определенной клиентской стороны и сравнения их поведения с общим шаблоном или предварительно вычисленным шаблоном.
Чтобы быть более точным, я собираю временные интервалы между запросами в массив, индексированные по функции времени:
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 для интервалов неопределенного запроса.
Как вы думаете? Я буду признателен, если вы попробуете это в своих сервисах.