1 / 1 / 0
Регистрация: 12.12.2021
Сообщений: 81

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

20.01.2025, 13:25. Показов 2152. Ответов 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
Сообщений: 81
21.01.2025, 13:57  [ТС]
Студворк — интернет-сервис помощи студентам
К сожалению ваш код работает также как описанный мной выше.
Пять секунд не отрабатывает, - а это главная идея.
К тому же не выводит счетчик на экран -
HTML5
1
<span><img src="img/scale_32.png"> | <?=$count ?></span>
Ладно придется копаться в этом счетчике самому.
Спасибо участникам в этой теме,всем по плюсику.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3964 / 2130 / 833
Регистрация: 13.03.2010
Сообщений: 7,003
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
427 / 316 / 115
Регистрация: 28.08.2013
Сообщений: 871
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
1299 / 1288 / 191
Регистрация: 21.01.2024
Сообщений: 5,978
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru