Имитация поведения человека на сайте, часть 1
На сегодняшний день существует множество способов отслеживания поведения человека на сайте при помощи скриптов. Например, многим известный вебвизор от Яндекс умеет собирать следующий дествия пользователя на сайте:
- движения мыши;
- клики;
- прокрутка страницы;
- нажатия на клавиши и заполнение форм;
- выделение и копирование текста.
Движения мыши<script>
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("mousemove", true, true, window, 1, 0, 0, X, Y,
false, false, false, false, 0, null);
</script>
Пока вы читали статью, вы обратили внимание как двигался у вас курсор? При чтении, курсор движется довольно хаотично и частыми продолжительными паузами без движения, иногда выделяются слова или фразы. При активном серфинге же, курсор движется в основном по прямой между ссылками, либо хаотично при поиске информации. Учтем это и попробуем смоделировать.
var dX = 0; var dY = 0; var mode = 0; var counter = 0; setTimeout(setPos(), 100); // Запускаем таймер function setPos() { if (mode == 0) // режим инициализации { // Выбираем координаты, куда по прямой поедет курсор x = Math Math.random() * 1000; y = Math.random() * 800; // Выбираем количество шагов или скорость перемещения counter = Math.random() * 50 + 3; // Вычисляем, на сколько передвинется курсор за один шаг dX = (x - clientX) / counter; dY = (y - clientY) / counter; // Случайно выбираем, двигаться будем или стоять на месте if (Math.random() - 0.5 > 0) { mode = 1; setTimeout(setPos(), 50); } else { mode = 2; setTimeout(setPos(), 500); } } else if (mode == 1) // режим движения курсора { // устанавливаем координаты курсора clientX += dX; clientY += dY; // уменьшаем счетчик. Если счетчик закончился, начинаем инициазацию снова counter--; if (counter == 0) mode = 0; setTimeout(setPos() 50); // Если есть еще шаги, вернемся сюда же через 50 мс } else if (mode == 2) // режим паузы { mode = 0; setTimeout(setPos(), 500 + counter * 100); // } }