Если нет необходимости интегрировать данные в базу данных Django, я настоятельно рекомендую "передать" ваш трафик другому провайдеру. Я очень доволен Google Analytics.
Если это не удастся, вы действительно мало что можете сделать, чтобы кто-то не играл в систему. Вы можете ограничить его по IP-адресу, но затем, конечно, вы столкнетесь с проблемой, заключающейся в том, что многие уникальные посетители часто делятся IP-адресами (например, через университет, организацию или рабочий сайт). Файлы cookie очень легко очистить, поэтому если вы пойдете по этому пути, то играть в них будет очень просто.
Одной вещью, от которой сложнее избавиться, являются файлы, хранящиеся в кэше приложения, поэтому одно из возможных решений, которое будет работать в современных браузерах, - это сохранение файла в кэше приложения. В первый раз он был засчитан как уникальное посещение, и после этого, поскольку он кэширован, они больше не учитываются.
Конечно, так как вам, вероятно, нужно, чтобы это было обратно совместимо, тогда, конечно, это оставляет его открытым именно для тех инструментов, которые наиболее вероятно будут использоваться для игровой системы, таких как curl.
Конечно, вы можете блокировать не браузерные пользовательские агенты, что немного усложняет ситуацию, если некоторые игроки не знают о спуфинге строк агента браузера (о чем большинство узнает быстрее).
Действительно, лучшим решением может быть - каков результат посещения страницы? Если это, например, продажа продукта, не награждайте людей, у которых больше всего просмотров страниц; награждайте людей, чьи хиты приносят наибольшее количество продаж. Или какое-нибудь трудоемкое действие, которое кто-то может предпринять на странице.
Возможное решение:
Если вы хотите игнорировать людей с отключенным JavaScript, вы можете считать только людей, которые заходят на страницу, а затем оставаться на этой странице в течение определенного промежутка времени (скажем, 1 минута). , По истечении определенного периода времени выполните запрос Ajax обратно на сервер. Поэтому, если бы они попытались сыграть, изменив свой файл cookie и загрузив сразу несколько вкладок, это не сработало бы, потому что им нужно было бы иметь один и тот же файл cookie, чтобы зарегистрировать, что они достаточно долго находились на этой странице. Я действительно думаю, что это может сработать; Я не могу честно увидеть, как это можно сделать. В основном на стороне сервера вы храните словарь под названием stay_until
в request.session
с ключами для каждой уникальной страницы и примерно через 1 минуту вы запускаете обратный вызов Ajax на сервер. Если значение для stay_until[page_id]
меньше или равно текущему времени, то они являются активными пользователями, в противном случае они не являются. Это означает, что кому-то понадобится по крайней мере 20 минут для генерации 20 уникальных посетителей, и при условии, что вы получите доход меньше, чем потраченное время, что будет сильным препятствием.
Я бы даже сделал это более явным: в нижней части страницы в теге noscript
вставьте «Ваш доступ не был учтен. Включите JavaScript для подсчета» со страницей, которая описывает процесс отслеживания.