Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 12.12.2021
Сообщений: 71

Простой счетчик с отсеиванием ботов

20.01.2025, 13:25. Показов 2015. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня возникла идея фиксировать в счетчике только пользователей.
Как работают нормальные боты, они заходят на страницу индексируют ее, и моментально уходят.

Поэтому я решил применить в счетчике функцию тайм-аут в 5 секунд.
Бот заходит,индексирует и покидает страницу, а счетчик не успевает его засчитать.
А пользователь остается на странице хотя бы секунд 10, читая заголовки, и счетчик его фиксирует.

Есть интересный код, но он неправильно работает.

Html:

HTML5
1
2
3
<form method="post">
<input type="submit" name="button" value="" id="button" />
</form>

JavaScript
1
2
3
4
5
6
<script>
setTimeout(function()
{
document.getElementById( "button" ) . click();
}, 5000);
</script>

PHP
1
2
3
4
5
6
7
8
<?php
if(isset($_POST['button'])){ // если была нажата кнопка
    $count = file_get_contents('count.txt'); // читаем файл count.txt
    $count++; // увеличиваем на еденицу
    file_put_contents('count.txt',$count); // записываем новое значение в count.txt
}
else $count = file_get_contents('count.txt'); // если не нажата то просто читаем count.txt
?>
КОД обращается к кнопке button из формы, а форма снова перезагружает страницу.
Нужно заменить button , на простую кнопку,ссылку, или картинку,
элементы которые не будут перезагружать страницу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2025, 13:25
Ответы с готовыми решениями:

Простой счётчик
Привет, вот ссылка на то что я скопировал вот с этого сайта на нём спуститесь вниз и посмотрите раздел ANIMATED MILESTONE COUNTERS,...

простой счётчик посещений
Столкнулся я со следующей проблемой: разбираю работу скрипта (да, да, это пример из книжки Ломова, самообразовываюсь): счётик посещений...

Очень простой счетчик
Здравствуйте уважаемые форумчане. Нужен простой счетчик обратного отсчета. времени разбираться нет, обращаюсь к вам. Необходимо задать...

24
1 / 1 / 0
Регистрация: 12.12.2021
Сообщений: 71
21.01.2025, 13:57  [ТС]
Студворк — интернет-сервис помощи студентам
К сожалению ваш код работает также как описанный мной выше.
Пять секунд не отрабатывает, - а это главная идея.
К тому же не выводит счетчик на экран -
HTML5
1
<span><img src="img/scale_32.png"> | <?=$count ?></span>
Ладно придется копаться в этом счетчике самому.
Спасибо участникам в этой теме,всем по плюсику.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3952 / 2062 / 829
Регистрация: 13.03.2010
Сообщений: 6,782
21.01.2025, 14:03
paris123, откуда взялся счётчик на экране? Можете нормально написать, что вам нужно?
В моём коде нет задержки в 5 секунд - я думал, что вы и сами можете прописать таймаут на выполнение функции. Ну и указать адрес скрипта, к которому обращаться.

Так же, мой код полностью рабочий. Если добавить к нему таймаут - будет ровно через указанное количество секунд делать запрос и увеличивать на 1 значение в файле. Если без таймаута - сразу же.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
21.01.2025, 15:23
Цитата Сообщение от paris123 Посмотреть сообщение
Бот заходит,индексирует и покидает страницу, а счетчик не успевает его засчитать.
Легитимных поисковых ботов можно отфильтровать по юзер-агенту. Например, по такому списку: https://github.com/monperrus/c... gents.json

Зловредные боты могут вгрузить страницу в Headless Chrome под управлением Puppeteer и подождать, и покликать, и кучу всего ещё; отфильтровать их – задача нетривиальная.

Слава богу, инструменты вроде Яндекс.Метрики и Google Аналитики её решают (с переменным успехом, но вы никак их не обскачете в любом случае). Подключите их и не парьтесь.
1
413 / 304 / 113
Регистрация: 28.08.2013
Сообщений: 800
21.01.2025, 15:43
Зачем использовать форму, которую боты могут найти и тоже могу использовать?
Можно просто отправит запрос на свой сервер, спустя N секунд (в данном примере, 5 сек.).
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const timeoutDelay = 5000;
const timeout = setTimeout(async () => {
    try {
        const response = await fetch("/count-user", {
            method: "POST",
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({ "countUser": 1 })
        });
        if (!response.ok) {
            throw new Error(`Response status: ${response.status}`);
        }
        else{
            const json = await response.json();
            console.log(json);
        }
    } catch (err) {
        console.error(err);
    }
}, timeoutDelay);
0
 Аватар для voraa
1249 / 1165 / 178
Регистрация: 21.01.2024
Сообщений: 5,421
21.01.2025, 16:01
Цитата Сообщение от paris123 Посмотреть сообщение
К сожалению ваш код работает также как описанный мной выше.
Пять секунд не отрабатывает, - а это главная идея.
Чей именно код не отрабатывает 5 сек?
Цитата Сообщение от paris123 Посмотреть сообщение
К тому же не выводит счетчик на экран -
<span><img src="img/scale_32.png"> | <?=$count ?></span>
А где это выводит ваш код из первого поста?

Может все таки надо сразу писать, что надо а не выкладывать пожелания по кусочкам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2025, 16:01
Помогаю со студенческими работами здесь

Простой счетчик переходов Php
Есть счетчик, который считает клики по ссылкам в пределах сайта. Например есть ссылка МОЙСАЙТ/clicks/clicks.php?uri=ТУТФАЙЛ.rar. При клике...

Простой счетчик кликов на PHP?
Вопрос новичка. Пытаюсь сделать счетчик кликов по кнопке на PHP. Допустим так: &lt;form method=&quot;post&quot;&gt; ...

Нужен счетчик в простой цикл
Простой цикл используется плагином yarpp: &lt;?php if (have_posts()) : ?&gt; &lt;?php while (have_posts()) : the_post();...

Делаем простой счетчик Гейгера сами
В связи с последними трагичными событиями на Фукусиме хочу вам предложить схему счетчик гейгера. Думаю кому то помогу. И так...

[Verilog] Не работает в железе простой счетчик
Здравствуйте. Сделал простую реализацию счеткика module modulesd ( input hz, input risit, output reg clk = 1b0 ); reg ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru