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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 774
Стаж: 8 лет 5 месяцев
Откуда: Израиль
Благодарил (а): 250 раз
Поблагодарили: 94 раза

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

Сообщение Leo Angel »

Kuskow писал(а): Вчера 15:04 ...я стесняюсь делиться своими мыслями, идеями... Мне кажется, что они слишком наивные.
Лучше СПРОСИТЬ глупость, чем её СДЕЛАТЬ!
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

Ага, но у меня так не работает.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3356
Стаж: 17 лет 3 месяца
Благодарил (а): 19 раз
Поблагодарили: 574 раза

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

Сообщение Nekstati »

Ne_Guru, Kuskow, создание иллюзии своей продвинутости - самый полезный для человека скилл.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

Антибот для phpBB (версия 3), если нет доступа к настройкам Apache и Nginx.
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.

Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в config.php, а заменять прежнюю версию скрипта в этом файле.

На своём форуме проверил (кроме AJAX), с PHP 7.4-8.5 полностью совместимо. И не важно, находится ли форум в корне сайта или в отдельной папке - будет работать и так, и сяк, ничего исправлять для этого не нужно.

1. {единственное нетрадиционное, но обязательное исправление}
Очень важно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В файле своего phpBB /assets/javascript/core.js в самом начале вставляем:

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

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

2. Заходим в админку своего phpBB:
2.1. ОБЩИЕ -> Очистить кэш.
2.2. ОБЩИЕ -> Поисковые боты -> Добавить бота.
Название бота: ЯG [Bot] (можно придумать своё, например, All Bots).
Соответствие агенту: Debutante (тут важно написать точно так же, как в 3 блоке 3 пункта).
Остальные графы формы можно оставить по умолчанию.

3. В конец файла config.php добавляем:

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

### Барьер для phpBB, версия 3. Авторы: Kuskow & AI on Google Search

if (empty($_COOKIE['checked'])) # Этот кук есть только у людей
{
$uri = $_SERVER['REQUEST_URI'];

# 1. Шлагбаум: всем ботам разрешены только страницы и аватары, с правильным порядком параметров
!preg_match('#^/$|index.php|viewforum.php|viewtopic|avatar|webpush#i', $uri)
+preg_match('#view(topic|forum)\.php\?start=#i', $uri)
and exit(http_response_code(403));

# 2. Гардероб: разуваем гостей, но не персонал
!preg_match('/(cp\.php|hash=|mark_|webpush)/i', $uri)
and ($uri = rtrim(str_replace('?&', '?', preg_replace("/&(sid|hilit|gclid|yclid|ysclid|fbclid|utm_\w+)=[^&]*/i", '', str_replace(['/index.php', '?'], ['/', '?&'], $uri))), '?&')) !== $_SERVER['REQUEST_URI']
and exit(header('Location: ' . $uri, true, 308));

# 3. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
$_SERVER['HTTP_USER_AGENT'] = 'Debutante';
}
* Если у вас старница /index.php отличается от / и это важно - поменяйте слово "index" на "bindex" или "shmindex" в блоке #2.
Vlad__
phpBB 2.0.7
Сообщения: 584
Стаж: 9 лет 6 месяцев
Благодарил (а): 246 раз
Поблагодарили: 53 раза

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

Сообщение Vlad__ »

Kuskow писал(а): Вчера 19:28 # 1. Шлагбаум: всем ботам разрешены только страницы и аватары, с правильным порядком параметров
!preg_match('#^/$|index.php|viewforum.php|viewtopic|avatar|webpush#i', $uri)
+preg_match('#view(topic|forum)\.php\?start=#i', $uri)
and exit(http_response_code(403));
А если какое-либо расширение добавляет на форум страницу вида /extpage.php ? Бот ее не получит, получается? Ручками нужно у себя вылавливать кастомные страницы и добавлять в код? Я уже и не помню сколько у меня таких )
Ne_Guru
phpBB 1.2.1
Сообщения: 25
Стаж: 4 дня
Благодарил (а): 3 раза

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

Сообщение Ne_Guru »

Черт знает что...
Похоже на DDOC-атаку
stat3.jpg
Завтра буду разбираться... :(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

Vlad__ писал(а): Вчера 20:50 Ручками нужно у себя вылавливать кастомные страницы и добавлять в код?
Да, именно так. Но сначала подумать: а вдруг слово "нужно" тут лишнее. Настолько ли уникальный контент на этих страницах, что он обязателен в выдаче поисковиков? Увидит ли новый пользователь информацию в таком виде, чтобы захотеть тут зарегистрироваться?

Отправлено спустя 1 час 51 минуту 6 секунд:
Утро вечера мудренее, оказывается. Вчера я выложил код с ошибками, прошу прощения, он неправильно отрабатывал в cli (cron). Сейчас выложу исправленный.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

Антибот для phpBB, версия 3. Для тех, у кого нет доступа к настройкам Apache, Nginx.
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.

Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в config.php, а заменить прежнюю версию скрипта в этом файле.

1. {единственное нетрадиционное, но обязательное исправление}
Очень важно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В файле своего phpBB /assets/javascript/core.js в самом начале вставляем:

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

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

2. Заходим в админку своего phpBB:
2.1. ОБЩИЕ -> Очистить кэш.
2.2. ОБЩИЕ -> Поисковые боты -> Добавить бота.
Название бота: Bots & Debutante (можно придумать своё, например, all bots).
Соответствие агенту: Debutante (тут важно написать точно так же, как в 3 блоке 3 пункта).
Остальные графы формы можно оставить по умолчанию.

3. В конец файла config.php добавляем:

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

### Барьер для phpBB, версия 3. Авторы: Kuskow & AI on Google Search

if (isset($_SERVER['REQUEST_METHOD']) && empty($_COOKIE['checked'])) # Этот кук есть только у людей
{
$uri = $_SERVER['REQUEST_URI'];
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';

# 1. Шлагбаум закрыт для плохих ботов, методов и запросов
!preg_match('#/$|/(index|file)\.php|/view(forum|topic)\.php\?[ftp]=|webpush#i', $uri)
+preg_match('#ChatGPT|keys-so|python|Firefox\/72#i', $ua)
and exit(http_response_code(403));

# 2. Гардероб разувает гостей, но не персонал
!preg_match('/(cp\.php|hash=|mark_|webpush)/i', $uri)
and ($newuri = rtrim(str_replace('?&', '?', preg_replace("/&(sid|hilit|view|gclid|yclid|ysclid|fbclid|utm_\w+)=[^&]*/i", '', str_replace(['/index.php', '?'], ['/', '?&'], $uri))), '?&')) !== $uri
and exit(header('Location: ' . $newuri, true, 308));

# 3. Хороших ботов и дебютантов объединяем в одном аккаунте бота без сессии
$_SERVER['HTTP_USER_AGENT'] = 'Debutante';
}

* ChatGPT - это совсем не то, о чём вы подумали
* Если у вас страница /index.php отличается от / и это важно - поменяйте слово "index" на "bindex" или "shmindex" в блоке #2.
Ne_Guru
phpBB 1.2.1
Сообщения: 25
Стаж: 4 дня
Благодарил (а): 3 раза

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

Сообщение Ne_Guru »

Nekstati писал(а): Вчера 14:34
Ne_Guru писал(а): Вчера 12:42 Кол-во пользователей на форуме показывается адекватное, но вот нагрузки - довольно высокие.
На самом-то деле кол-во посетителей осталось прежним, сколько-то сотен или тысяч, и на каждого из них сервер запускает обработку PHP. Мой скрипт не даёт запуститься тяжёлым скриптам форума и вызовам БД, когда обнаруживает бота, - но интерпретатор PHP всё равно запускается. В этом отличие от защиты, прописанной непосредственно в конфиге сервера, как описывали выше - там очередь до PHP не доходит. Пробуйте. Разница в нагрузке может быть многократная.

Смысл моего скрипта в том, что админу обычно удобнее прописать алгоритм защиты в PHP, понять такой алгоритм ему тоже проще, да и советы ИИ по PHP более предметные, чем по Nginx. Но защита через Nginx в любом случае эффективнее по нагрузке.
Nekstati, простите за задержку с ответом.
Просто я, к сожалению, практически ничего не понял из того, что вы написали. :(
Я вас очень уважаю (оказывается, у меня на форуме стояло расширение antibot 42, написанное вами еще в 2015 году!), но являюсь не то, что чайником, а даже к нему не приблизился.

Я пока оставил ваш скрипт, нагрузка у меня взлетела (думаю, не из-за этого сприпта), включил DDOS-защиту,
ddos.jpg
обратился в техподдержку хостера в надежде, что они заблокируют этих "ботов" по ip-адресам.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5537
Стаж: 21 год 5 месяцев
Откуда: Питер
Благодарил (а): 187 раз
Поблагодарили: 774 раза

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

Сообщение Siava »

Нормально так 1600 в месяц.
VPS наверное дешевле обойдётся, а там тот же Anubis настроить и забыть про ботов, чем городить велосипеды написанные с помощью ИИ)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Ne_Guru
phpBB 1.2.1
Сообщения: 25
Стаж: 4 дня
Благодарил (а): 3 раза

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

Сообщение Ne_Guru »

Это - временная мера, на несколько дней (по крайней мере, я на это рассчитываю).
Для меня и слово VPS, и слово Anubis - совершенно незнакомые понятия.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

Ну и третий эшелон обороны я настроил себе позавчера - включил суточное кэширование Nginx для всех страниц *.php все, кто запросил из без cookies. Там самая сложность была в том, чтобы погасить флаги самого phpBB, запрещающие кэширование php-страниц. Но вроде бы настроили так, чтобы эти запреты игнорировались. Вот результаты за последние сутки:

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

awk -F'"' '$0 ~ / 200 / {print $(NF-1)}' /var/log/nginx/domains/DOMAIN.COM.log | grep -E '^(HIT|MISS|BYPASS|EXPIRED)$' | sort | uniq -c
   95059 BYPASS
     872 EXPIRED
  811428 HIT
  262373 MISS

Не ахти какие результаты, конечно. Но я так думаю, это потому что первые два эшелона (фильтр в NgiNX и config.php) много чего заблокировали. Так бы интересно было бы посмотреть, как будет без них, но пока лень отключать.
Последний раз редактировалось Kuskow 21.06.2026 15:09, всего редактировалось 1 раз.
Vlad__
phpBB 2.0.7
Сообщения: 584
Стаж: 9 лет 6 месяцев
Благодарил (а): 246 раз
Поблагодарили: 53 раза

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

Сообщение Vlad__ »

Kuskow, а в чем в двух словах отличия скрипта 3 версии в config.sys от предыдущих?
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 417
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

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

Сообщение Kuskow »

1) запрет на попытку открытия любых неразрешённых страниц - режется сильно больше плохих запросов
2) раньше проверка на человечность была где-то внутри для некоторых действий, теперь это верхний уровень, то есть, он вообще никак не касается живых людей - им всё открыто
3) чёткая проверка на запросы из браузера (раньше была проверка на запросы из консоли, то есть, наоборот)
4) убрал исключение для хороших ботов - теперь все боты это просто боты, оттого и проще будет статистика видна - только люди (все боты - один аккаунт)
5) исправлен баг с пустым USER_AGENT
0) логика упрощена (хотя, это субъективно)

Отправлено спустя 16 минут 55 секунд:
Kuskow писал(а): Сегодня 9:54 3. В конец файла config.php добавляем:
Эх, опять забыл добавить 4 пункт.
4. Заходим в админку снова, делаем "Сброс рекорда посещаемости" и наслаждаемся чистой статистикой даже без установки сторонних счётчиков.
Vlad__
phpBB 2.0.7
Сообщения: 584
Стаж: 9 лет 6 месяцев
Благодарил (а): 246 раз
Поблагодарили: 53 раза

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

Сообщение Vlad__ »

Kuskow писал(а): Сегодня 15:33 убрал исключение для хороших ботов - теперь все боты это просто боты, оттого и проще будет статистика видна - только люди (все боты - один аккаунт)
То есть я правильно понимаю, в статистике не будет всяких Google-ботов, прописанных в админке, а будет один Debutante?
Kuskow писал(а): Сегодня 9:54 2. Гардероб разувает гостей, но не персонал
!preg_match('/(cp\.php|hash=|mark_|webpush)/i', $uri)
and ($newuri = rtrim(str_replace('?&', '?', preg_replace("/&(sid|hilit|view|gclid|yclid|ysclid|fbclid|utm_\w+)=[^&]*/i", '', str_replace(['/index.php', '?'], ['/', '?&'], $uri))), '?&')) !== $uri
and exit(header('Location: ' . $newuri, true, 308));
Так ли важен этот код в блокировщике от ботов? Здесь больше для SЕО, не так ли? Причем этот код генерирует двойной запрос к серверу при срабатывании. Скрипт вырезает не нужные параметры и заново перегружает страницу, переходя снова к п.1

У себя оставил код примерно в таком виде ;) Остальное имхо - лишнее.

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

if (isset($_SERVER['REQUEST_METHOD']) && empty($_COOKIE['checked'])) {
            $_SERVER['HTTP_USER_AGENT'] = 'Debutante';
}

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