Атака китайских ботов

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
hd321kbps
phpBB 2.0.3
Сообщения: 366
Стаж: 14 лет 4 месяца
Откуда: Россия, Крым, Армянск
Благодарил (а): 191 раз
Поблагодарили: 346 раз

Атака китайских ботов

Сообщение hd321kbps »

Сегодня заметил на нескольких форумах наплыв ботов из китая от 100-300 одновременно, которые создают нагрузку на хостинг.
Все заходят с телефона Android и iphone Os.
Адреса ботов:
54.222.*.*
54.223.*.*
52.80.*.*
52.81.*.*
52.82.*.*
52.83.*.*
220.243.*.*
139.217.*.*
139.219.*.*
У кого наблюдается такое-же отпишитесь)


---------------------------
Варианты блокировки ботов:
Re: Атака китайских ботов - от Nekstati
Re: Атака китайских ботов - от Kuskow, php
Re: Атака китайских ботов - от Kuskow, nginx
Последний раз редактировалось Татьяна5 17.07.2026 15:10, всего редактировалось 1 раз.
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 474
Стаж: 10 лет 2 месяца
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 47 раз

Re: Атака китайских ботов

Сообщение Kuskow »

Ботов ноль. Спрашивается: зачем огород городли? Бороться не с кем. Скукотища.

Изображение
Мои разработки в phpBB: php-антибот, антибот Nginx, DiscussionForumPosting.
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 474
Стаж: 10 лет 2 месяца
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 47 раз

Re: Атака китайских ботов

Сообщение Kuskow »

Новая версия 5.2 антибота для тех, у кого нет доступа к настройкам Apache/Nginx. Отсекаются зловредные боты, оптимизируется нагрузка на базу данных за счёт исправления запросов. Проверено и работает на своём форуме (в профиле есть ссылка). Совместимо с PHP 7.4 и 8.x. Если раньше устанавливали этот скрипт, теперь нужно выполнить только пункт 2. Отличия от предыдущей версии:
  • исключена блокировка неправильной пагинации
  • исключена блокировка запросов с параметрами sid=, view=, вместо этого эффективный редирект
  • введена переадресация неверных, изыточных параметров на каноническую страницу - только для ботов, не для пользователей
1️⃣ В самое начало файла /assets/javascript/core.js добавляем следующий код (прям первой строкой).
* Обязательно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.

Код: Выделить всё

document.cookie = "checked=1; path=/; max-age=31104000; SameSite=Lax";

2️⃣ В конец файла config.php добавляем (у кого уже есть, заменяем) следующий код.
** Перед сохранением файла исправить в тексте значения параметров $ppp = 20 и $tpf = 100 на свои. Где их взять - написано там же в тексте.
*** Если у вас страница /index.php отличается от / и это важно - исключите из кода блок "Корень форума" или закомментируйте его.

Код: Выделить всё

### phpBB Antibot & URL Clean v5.2 by Kuskow & AI on Google Search
if ($uri = (string)@$_SERVER['REQUEST_URI']) { # не cli
  if (!@$_COOKIE['checked']) { # не человек в браузере
    $ua = $_SERVER['HTTP_USER_AGENT'] ?? 'python';
    # Невозможный адрес страницы или заведомо плохой бот
    if (preg_match('#(posting|search|memberlist|[um]cp|config|profile)\.php|/adm/#', $uri)
    or preg_match('#ChatGPT|meta-|keys-so|python|Firefox/72#i', $ua)
    or strpos($_SERVER['HTTP_REFERER'] ?? '', '#')) {
      http_response_code(410); die; }
 
    # Корень форума только /
    if (substr($_SERVER['SCRIPT_NAME'], -10) === '/index.php') {
      if ($_GET) { http_response_code(410); die; }
      if ($uri[-1] !== '/') { header('Location: ./', true, 301); die; }}
 
    # Параметры взять из админки: Общие -> Конфигурация -> Размещение сообщений
    $ppp = 20; # количество сообщений на странице темы
    $tpf = 100; # количество тем на странице форума
 
    # p= заменяем на t=[&start=]
    if (($p = (int)@$_GET['p']) && ($conn = @mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport))) {
      if ($post = mysqli_fetch_row(mysqli_query($conn, "SELECT topic_id FROM {$table_prefix}posts WHERE post_id = {$p} AND post_visibility = 1"))) {
        $c = mysqli_fetch_row(mysqli_query($conn, "SELECT COUNT(post_id) FROM {$table_prefix}posts WHERE topic_id = {$post[0]} AND post_id < {$p} AND post_visibility = 1"));
        $start = intdiv($c[0], $ppp) * $ppp;
        header('Location: viewtopic.php?t=' . $post[0] . ($start ? '&start=' . $start : ''), true, 301); die; }
      http_response_code(410); die; }

    # t= приводим к строгому порядку t=[&start=]
    if ($t = (int)@$_GET['t']) {
      $start = intdiv((int)@$_GET['start'], $ppp) * $ppp;
      $expected_query = 't=' . $t . ($start ? '&start=' . $start : '');
      if ($_SERVER['QUERY_STRING'] !== $expected_query) {
        header('Location: viewtopic.php?' . $expected_query, true, 301); die; } }

    # f= приводим к строгому порядку f=[&start=]
    if ($f = (int)@$_GET['f']) {
      $start = intdiv((int)@$_GET['start'], $tpf) * $tpf;
      $expected_query = 'f=' . $f . ($start ? '&start=' . $start : '');
      if ($_SERVER['QUERY_STRING'] !== $expected_query) {
        header('Location: viewforum.php?' . $expected_query, true, 301); die; } }

    # Хороших ботов и новых посетителей объединяем в одном аккаунте без сессии
    $_SERVER['HTTP_USER_AGENT'] = 'Googlebot/'; }
 
  # Избавляемся от сорных параметров
  if (preg_match('#view(topic|forum)\.php|search\.php|/\?#', $uri)
  and ($newuri = rtrim(str_replace('?&', '?', preg_replace('#&(sid|hilit|[fgy][bcs]+lid|utm_\w+)=[^&]*#', '', str_replace('?', '?&', $uri))), '?&')) !== $uri) {
    header('Location: ' . $newuri, true, 308); die; }
}

3️⃣ Заходим в админку своего phpBB:
3.1. ОБЩИЕ -> Очистить кэш.
3.2. ОБЩИЕ -> Сброс рекорда посещаемости (только если этот код внедряется впервые).
Мои разработки в phpBB: php-антибот, антибот Nginx, DiscussionForumPosting.

Вернуться в «phpBB-пространство»