Сначала , пусть сервер отправляет уникальный токен (например, csrf token ), когда страница загружается и каждый раз, когда пользователь взаимодействует.Затем, пусть каждое взаимодействие с пользователем (публикация или запрос) включает этот токен (и генерирует новый).
Когда вы получаете неожиданные токены с того же IP-адреса, вы применяете второй трюк: добавьте временные метки mousevent к запросу и запишите (с точностью до миллисекунды) разницу во времени (далее dt ) между временем локального сервера и временной меткой, поставляемой с токеном, с определенной погрешностью для вариациив задержке.
В случае, если два экземпляра работают на одном ПК, dt будет одинаковым для обоих уникальных токенов (которые были сгенерированы во время самого последнего взаимодействия или загрузки страниц).
На другом физическом компьютере вероятность того, что dt будет такой же (даже в пределах погрешности), что и на другом компьютере с тем же IP-адресом, чрезвычайно мала, поэтому у вас есть правильный способтестирования.