Поиск ботов посещающих WordPress

Как вычислить ботов, которые посещают ваш WordPress сайт 3

В примере ниже будет рассмотрен вариант именно для WordPress, хотя подобный метод подойдёт для любого сайта.

Часто на хостингах можно столкнуться с непомерной нагрузкой которую создаёт сайт, хотя Яндекс Метрика упорно показывает 100 чел в сутки, AwStats датё объёмную информацию, но о количестве заходов с каждого IP информацию не предоставляет(хотя косвенно можно понять частоту по объему трафика).

Итак, задача, понять как часто и какие IP ходят на ваш сайт под управлением WordPress, что бы в дальнейшем заблокировать IP адреса создающие большую нагрузку на сайт. Блокировка предполагается по суммарному количеству запросов в интервале времени.

Для этого понадобится таблица куда будем сохранять данные, её код CREATE ниже:

Делаем поле ip уникальным, что бы обновлять и вставлять запись за один MySQL запрос. Ниже код вставки нужных значений в БД:

В целом код выше, прокомментирован, пояснить стоит лишь:

Суть такова, когда при вставке записи обнаруживается ошибка о дубликате нашего уникального ключа (ip адрес), то MySQL без лишних вопросов обновляет данные

  • cnt возьмётся из бд и увеличивается на +1
  • Остальные данные берутся из запроса INSERT VALUES, о чём свидетельствует конструкция вида «имя_поля=VALUES(имя_поля)»
  • Минусом в таком запросе (для эстетов) будет то что id авто инкремента будет не по порядку(пример на скриншоте ниже)

И так, пока писался этот материал у нас получилась такая статистика по запросам и IP

поиск ботов на сайте
Поиск ботов на сайте

Статья писалась в течении 5-и минут и за это время набежала некоторая статистика, получается что некоторые адреса ходят на сайт слишком часто. Возможно это парсеры или сума сошедшие сервисы. В любом случае для полной картины оперировать только этими данными нельзя, но определённая картинка о «ходящих на сайт» складывается.

Код можно повесить на какой нибудь хук (например хук init), но в нашем случае необходимо было сделать это до загрузки функционала WordPress и код был добавлен в файл wp-load.php

Помните, добавлять что либо в файлы ядра не самая лучшая затея и вы должны понимать.

3 Comments

  1. «Ниже код вставки нужных значений в БД:»
    Не в БД, думаю, а в какой-то файл. В какой? function.php, index.php?

    1. дочитал, вопрос снят, спасибо)

      1. Эту же статью мы публиковали на Хабре, там есть большое количество комментариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *