Там смысл такой. Сначала допиливаешь метрику, чтобы она тебе ip ботов сливала, а потом отправляешь в бан те ip, которые самые спамные по прямым заходам. При этом из поиска (с рефкой) они баниться не будут. И реферальный спам, если такой остался, тоже можно банить. Там все расписано с комментариями.
Поисковики не забанятся, потому что их в метрике не видно. Но cloudflare будет проще в настройке, если спам ботами идет с огромного количества подсетей.
Александр, благодарю за комментарий и инструкцию👍🔥
Добавил редактор .htaccess 🔥Выкладываю полный код со стилями и редактором:
// Отслеживание // Создаем функцию для записи данных посетителей function log_visitor_info() { $log_file = ABSPATH . 'visitor_log.txt'; // Путь к файлу лога
$current_date_time = date('Y-m-d H:i:s'); // Текущая дата и время $visitor_ip = $_SERVER['REMOTE_ADDR']; // IP-адрес посетителя $current_page = $_SERVER['REQUEST_URI']; // Текущая посещенная страница
// Запись в лог $log_entry = "$current_date_time - IP: $visitor_ip, Page: $current_page\n";
// Открываем файл в режиме добавления $file_handle = fopen($log_file, 'a');
if ($file_handle) { fwrite($file_handle, $log_entry); fclose($file_handle); } } // Добавляем хук, чтобы записывать данные при каждом запросе add_action('wp', 'log_visitor_info');
// Функция для подсчета уникальных IP и их повторений function count_unique_ips($log_entries) { $ip_counts = [];
foreach ($log_entries as $entry) { if (!empty($entry)) { preg_match('/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) - IP: (.+), Page: (.+)/', $entry, $matches); if (count($matches) === 4) { $ip = $matches[2]; if (isset($ip_counts[$ip])) { $ip_counts[$ip]++; } else { $ip_counts[$ip] = 1; } } } }
return $ip_counts; }
// Функция для вывода таблицы лога на странице function render_visitor_log_page() { // Получаем данные из файла лога $log_file = ABSPATH . 'visitor_log.txt'; $log_content = file_get_contents($log_file);
// Разбиваем записи по строкам $log_entries = explode("\n", $log_content);
// JavaScript для обработки клика по IP и получения информации echo '<script> document.addEventListener("DOMContentLoaded", function() { const ipLinks = document.querySelectorAll(".ip-link");
// API для проверки IP fetch(`https://ipapi.co/${ip}/json/`) .then(response => response.json()) .then(data => { alert(`Информация об IP ${ip}: Страна - ${data.country_name}, Город - ${data.city}`); }) .catch(error => { alert("Не удалось получить информацию об IP"); }); }); }); }); </script>'; }
// Функция для очистки лога function clear_visitor_log() { $log_file = ABSPATH . 'visitor_log.txt';
// Открываем файл в режиме записи и обрезаем его до нулевой длины $file_handle = fopen($log_file, 'w'); if ($file_handle) { fclose($file_handle); } }
// Функция для чтения файла .htaccess function read_htaccess_file() { $htaccess_path = ABSPATH . '.htaccess'; if (file_exists($htaccess_path)) { return file_get_contents($htaccess_path); } return false; }
// Функция для записи в файл .htaccess function write_to_htaccess($content) { $htaccess_path = ABSPATH . '.htaccess'; if (file_exists($htaccess_path) && is_writable($htaccess_path)) { return file_put_contents($htaccess_path, $content); } return false; }
С момента добавления сайта в яндекс вебмастер количество загруженных страниц постоянно прыгает от минимума до максимума, то есть сначала растёт, затем уменьшается, затем опять растёт, опять уменьшается и так по кругу. Сайт для людей, sitemap есть, хостинг проверенный. При всём при этом количество страниц в поиске - 1 штука и больше ни разу не было. Прошло уже несколько месяцев, а ситуация не меняется.
Прошу высказать мнения, в чём может быть причина такого поведения яндекса.
Доброго дня! Чтобы обсудить возможные причины, предоставьте информацию: 1. Сколько документов на сайте всего? 2. CMS сайта какой? 3. Что показывает в Webmaster в: Индексирование / Страницы в поиске / Исключенные страницы ? 4. Используете какое то решение для связки сайта к консолью?
5. Можно ссылку в лс
p.s. Недавно сайт запускал новый сайт, домен нулевой и 18к документов оказалось в индексе за 29 дней. Трафик с Яндекса пошел в первые же сутки. Ни ссылок, ни ПФ...
Допилил возможность проверить данные ip кликнув по нему🔥 Для проверки ip зацепил халявный api от ipapi.co
// Отслеживание // Создаем функцию для записи данных посетителей function log_visitor_info() { $log_file = ABSPATH . 'visitor_log.txt'; // Путь к файлу лога
$current_date_time = date('Y-m-d H:i:s'); // Текущая дата и время $visitor_ip = $_SERVER['REMOTE_ADDR']; // IP-адрес посетителя $current_page = $_SERVER['REQUEST_URI']; // Текущая посещенная страница
// Запись в лог $log_entry = "$current_date_time - IP: $visitor_ip, Page: $current_page\n";
// Открываем файл в режиме добавления $file_handle = fopen($log_file, 'a');
if ($file_handle) { fwrite($file_handle, $log_entry); fclose($file_handle); } } // Добавляем хук, чтобы записывать данные при каждом запросе add_action('wp', 'log_visitor_info');
// Функция для подсчета уникальных IP и их повторений function count_unique_ips($log_entries) { $ip_counts = [];
foreach ($log_entries as $entry) { if (!empty($entry)) { preg_match('/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) - IP: (.+), Page: (.+)/', $entry, $matches); if (count($matches) === 4) { $ip = $matches[2]; if (isset($ip_counts[$ip])) { $ip_counts[$ip]++; } else { $ip_counts[$ip] = 1; } } } }
return $ip_counts; }
// Функция для вывода таблицы лога на странице function render_visitor_log_page() { // Получаем данные из файла лога $log_file = ABSPATH . 'visitor_log.txt'; $log_content = file_get_contents($log_file);
// Разбиваем записи по строкам $log_entries = explode("\n", $log_content);
if (isset($_POST['clear_log'])) { clear_visitor_log(); echo '<div class="updated"><p>Лог посещений очищен.</p></div>'; }
echo '</div>'; // Закрываем div.wrap
// JavaScript для обработки клика по IP и получения информации echo '<script> document.addEventListener("DOMContentLoaded", function() { const ipLinks = document.querySelectorAll(".ip-link");
// API для проверки IP fetch(`https://ipapi.co/${ip}/json/`) .then(response => response.json()) .then(data => { alert(`Информация об IP ${ip}: Страна - ${data.country_name}, Город - ${data.city}`); }) .catch(error => { alert("Не удалось получить информацию об IP"); }); }); }); }); </script>'; }
// Функция для очистки лога function clear_visitor_log() { $log_file = ABSPATH . 'visitor_log.txt';
// Открываем файл в режиме записи и обрезаем его до нулевой длины $file_handle = fopen($log_file, 'w'); if ($file_handle) { fclose($file_handle); } }
Интересное решение. А как это поможет если в ботосетке много айпишников и каждый заход - с нового?
Доброго дня. Вижу по Вашему сайту, что Вы коммерциализируете свои навыки защиты сайтов от ботов. Так же благодарю, за "наводку" в теме. Объективно, не все случаи требуют сверх-решения. Есть локальные(региональные) продукты, которым боты докучают не так сильно... и в таком случае, как и в моем, такое решение помогает решить вопрос. Если проект крупный, то и ресурсы, в теории, позволят решать вопросы на другом уровне. Для всех остальных, полагаю, будет достаточно и "коленочного" решения 😉
На сайте 3000 страниц, CMS своя, Индексирование / Страницы в поиске / Исключенные страницы показывает Малоценная или маловостребованная страница.
Все страницы показывает как малоценная или какое-то конкретное количество? Дайте ссылку в личку, иначе долго выяснять будем детали...
У сашеньки смешная кличка алаич. Меня зовут Дмитрий. Пожалуйста
Подумывал я, что так может получиться 😂 Благодарю, Дмитрий!🤝
У этого способа есть один существенный минус.
Многие сайты насилуют проксями со всей России, включая зарубежные, включая хостинговые ipv6 и ipv4.
Размер .htaccess может существенно разрастись.
Ссылка на инструкцию у меня была в подписи раньше. Вот ссылка: https://disk.yandex.ru/d/7m5wQQnfh5wu0A
Там смысл такой. Сначала допиливаешь метрику, чтобы она тебе ip ботов сливала, а потом отправляешь в бан те ip, которые самые спамные по прямым заходам. При этом из поиска (с рефкой) они баниться не будут. И реферальный спам, если такой остался, тоже можно банить. Там все расписано с комментариями.
Поисковики не забанятся, потому что их в метрике не видно. Но cloudflare будет проще в настройке, если спам ботами идет с огромного количества подсетей.
Александр, благодарю за комментарий и инструкцию👍🔥
В таблицу с уникальными IP-адресами в колонку "Количество визитов" добавил функцию сортировки. Брал отсюда - https://github.com/tofsjonas/sortable
Теперь, отсортировав по убыванию, сразу вижу, какой IP отметился больше всех, и делаю соответствующие выводы.
Ну все коллеги, пора плагином делать 😂 Отправляй готовый код, чтобы все могли взять за основу. 😉
Аккуратнее с .htaccess, не "наломайте дров" 😁
Между:и этим:
Добавил блок:
Теперь, когда адрес длинный, то таблицу не ломает. Строчки чуть уже. Для восприятия лучше.👌
С момента добавления сайта в яндекс вебмастер количество загруженных страниц постоянно прыгает от минимума до максимума, то есть сначала растёт, затем уменьшается, затем опять растёт, опять уменьшается и так по кругу. Сайт для людей, sitemap есть, хостинг проверенный. При всём при этом количество страниц в поиске - 1 штука и больше ни разу не было. Прошло уже несколько месяцев, а ситуация не меняется.
Прошу высказать мнения, в чём может быть причина такого поведения яндекса.
Доброго дня! Чтобы обсудить возможные причины, предоставьте информацию:
1. Сколько документов на сайте всего?
2. CMS сайта какой?
3. Что показывает в Webmaster в: Индексирование / Страницы в поиске / Исключенные страницы ?
4. Используете какое то решение для связки сайта к консолью?
5. Можно ссылку в лс
p.s.
Недавно сайт запускал новый сайт, домен нулевой и 18к документов оказалось в индексе за 29 дней. Трафик с Яндекса пошел в первые же сутки. Ни ссылок, ни ПФ...
Интересное решение. А как это поможет если в ботосетке много айпишников и каждый заход - с нового?
Доброго дня. Вижу по Вашему сайту, что Вы коммерциализируете свои навыки защиты сайтов от ботов. Так же благодарю, за "наводку" в теме. Объективно, не все случаи требуют сверх-решения. Есть локальные(региональные) продукты, которым боты докучают не так сильно... и в таком случае, как и в моем, такое решение помогает решить вопрос. Если проект крупный, то и ресурсы, в теории, позволят решать вопросы на другом уровне. Для всех остальных, полагаю, будет достаточно и "коленочного" решения 😉