Атака китайских ботов
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
hd321kbps
- phpBB 2.0.3
- Сообщения: 366
- Стаж: 14 лет 4 месяца
- Откуда: Россия, Крым, Армянск
- Благодарил (а): 191 раз
- Поблагодарили: 346 раз
Атака китайских ботов
Сегодня заметил на нескольких форумах наплыв ботов из китая от 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
Все заходят с телефона 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
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Ботов ноль. Спрашивается: зачем огород городли? Бороться не с кем. Скукотища.


-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Новая версия 5.2 антибота для тех, у кого нет доступа к настройкам Apache/Nginx. Отсекаются зловредные боты, оптимизируется нагрузка на базу данных за счёт исправления запросов. Проверено и работает на своём форуме (в профиле есть ссылка). Совместимо с PHP 7.4 и 8.x. Если раньше устанавливали этот скрипт, теперь нужно выполнить только пункт 2. Отличия от предыдущей версии:
В самое начало файла
* Обязательно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В конец файла
** Перед сохранением файла исправить в тексте значения параметров
*** Если у вас страница /index.php отличается от / и это важно - исключите из кода блок "Корень форума" или закомментируйте его.
Заходим в админку своего phpBB:
3.1. ОБЩИЕ -> Очистить кэш.
3.2. ОБЩИЕ -> Сброс рекорда посещаемости (только если этот код внедряется впервые).
- исключена блокировка неправильной пагинации
- исключена блокировка запросов с параметрами sid=, view=, вместо этого эффективный редирект
- введена переадресация неверных, изыточных параметров на каноническую страницу - только для ботов, не для пользователей
/assets/javascript/core.js добавляем следующий код (прям первой строкой).* Обязательно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
Код: Выделить всё
document.cookie = "checked=1; path=/; max-age=31104000; SameSite=Lax";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.1. ОБЩИЕ -> Очистить кэш.
3.2. ОБЩИЕ -> Сброс рекорда посещаемости (только если этот код внедряется впервые).
-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Ну что, у кого какой урожай сегодня? У меня с учётом того, что банятся не отдельные IP-адреса, а подсети класса C (1.2.3.X) аж 6 тысяч сетей набанилось за ночь.
Код: Выделить всё
Status for the jail: nginx-bot-444
|- Filter
| |- Currently failed: 6
| |- Total failed: 602443
| `- File list: /var/log/nginx/domains/SITE.com.log
`- Actions
|- Currently banned: 6006
|- Total banned: 10032-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Сегодня новая напасть напала. Но я случайно зашёл посмотреть, как там дела, заметил её и быстро причесал. Всё таки, надо отсекать запросы ботов, в которых REFERER включает свой же HOST.


-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Я полностью отказался от блокировки по IP-адресам. Схема себя не оправдала, косяков больше, чем пользы. Из последнего - не перевыпустился сертификат Let's Encrypt (пришлось делать вручную через DNS) и в ловушке оказались пользователи Starlink.Kuskow писал(а): 27.06.2026 16:27Я теперь сделал так. Когда fail2ban обнаруживает 2x444 за две минуты, он банит на сутки не один конкретный адрес, а всю подсеть класса C, то есть, 1.2.3.x. Так что, соседние адреса забанены заранее ещё до того, как начнут лезть на кактус. В бане постоянно около 400 таких подсетей.Siava писал(а): 22.03.2026 12:42 Если не секрет, сколько в пике было забаненных адресов в fail2ban? А то я развлекался как-то подобным образом и примерно после 200тыс серверу было не очень комфортно)
Любопытно, что после отключения блокировки через fail2ban загрузка сервера заметно снизилась. То есть, теперь все отлупы делают Nginx и config.php, и это оказывается легче, чем блокировка по IP-адресам. Парадокс.
-
волчара
- phpBB 1.4.3
- Сообщения: 99
- Стаж: 9 лет 7 месяцев
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: Атака китайских ботов
Приветствую всех
Проблему с атаками ботов я решил при помощи созданного расширения(Guest IP Log) создано при помощи ИИ, при этом все уведомления приходят с сайта на почту и с Юмани без проблем, так же обновляется сертификат Let's Encrypt(HestiaCP) то же без проблем, так же решена проблема если Board3 Portal установлен главной страницей сайта, вообщем доволен как слон объевшийся шоколаду
, в расширении можно блокировать как всю подсеть так и отдельно IP адрес, так же есть блокировка на определенное время.
Проблему с атаками ботов я решил при помощи созданного расширения(Guest IP Log) создано при помощи ИИ, при этом все уведомления приходят с сайта на почту и с Юмани без проблем, так же обновляется сертификат Let's Encrypt(HestiaCP) то же без проблем, так же решена проблема если Board3 Portal установлен главной страницей сайта, вообщем доволен как слон объевшийся шоколаду
Мудрость заключается не в том, что бы не делать ошибки, а уметь их исправлять вовремя!
-
southklad
- phpBB 3.1.0 RC4
- Сообщения: 3463
- Стаж: 14 лет 7 месяцев
- Благодарил (а): 711 раз
- Поблагодарили: 173 раза
-
Vlad__
- phpBB 2.0.7
- Сообщения: 589
- Стаж: 9 лет 8 месяцев
- Благодарил (а): 246 раз
- Поблагодарили: 53 раза
Re: Атака китайских ботов
Никакого парадокса, когда в iptables тысячи забаненных айпи. Логично. man ipset и будет НОЛЬ нагрузки )
Естественно, когда банить целыми подсетями.
И что ИИ "придумал"? Алгоритм расширения какой?
-
волчара
- phpBB 1.4.3
- Сообщения: 99
- Стаж: 9 лет 7 месяцев
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: Атака китайских ботов
Пока ни где, делалось для своего форума, хоть форум у меня и узко направленный но атак не избежал.
Кратко, как работает расширение
1. Когда срабатывает
- На каждом запросе гостя (анонима) после инициализации пользователя. Авторизованные и боты, которых phpBB уже пометил как is_bot, не трогаются (кроме случаев ниже).
- Белый список / локальные IP → пропускаем
- Платежные callback (ЮMoney и др.) → пропускаем
- SEO: sitemap.xml, robots.txt → пропускаем
- Поисковые роботы (YandexBot, Googlebot, Applebot…) → пропускаем
- Ручной бан из ACP (даже если автоблокировка выключена) → 403
- Если автоблокировка выключена → дальше не идём
- Подсеть /24: >5 разных IP из одной подсети за окно (5/15/30 мин) → блок всей подсети на выбранный срок → 403 (subnet_block)
- Время блокировки подсети:
7 дней
1 месяц
3 месяца
6 месяцев
Навсегда - Запрещённые URI для гостей: posting.php, cron, подозрительная регистрация, сломанный sid (amp;sid) → 403
- Мягкий — GPTBot, SemrushBot (+ пункты выше)
- Жёсткий — ещё DotBot, PetalBot и др., fake Chrome, подозрительный UA, лимит запросов с IP
- Комбо — мягкий + выбранные жёсткие опции
- Если ничего не сработало → пишем в guests.log (по настройке: раз за сессию / каждый запрос)
- Логи: guests.log, blocked.log (просмотр/скачивание в ACP)
- Автоочистка логов
- ACP: настройки + таблица заблокированных IP/подсетей с ручным добавлением и разбаном
Гость проходит цепочку исключений и правил; при совпадении получает 403 и запись в лог блокировок, иначе — только учёт в логе гостей.
Мудрость заключается не в том, что бы не делать ошибки, а уметь их исправлять вовремя!
-
southklad
- phpBB 3.1.0 RC4
- Сообщения: 3463
- Стаж: 14 лет 7 месяцев
- Благодарил (а): 711 раз
- Поблагодарили: 173 раза
-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Разобрался, оказалось, дело было совсем не в блокировках, а это раньше я перемудрил с настройками кэширования. Теперь всё в порядке.Kuskow писал(а): 26.08.2026 6:44 не перевыпустился сертификат Let's Encrypt (пришлось делать вручную через DNS)
Как-то всё откладывал публикацию последней версии своего антибота для тех, у кого нет доступа к Apache/Nginx, потому что мало изменений было. Но так как их давно уже не добавляется, публикую сейчас.
-
Kuskow
- phpBB 2.0.5
- Сообщения: 481
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Новая версия 5.3 антибота для тех, у кого нет доступа к настройкам Apache/Nginx. Отсекаются зловредные боты, оптимизируется нагрузка на базу данных за счёт исправления запросов. Проверено и работает на своём форуме (в профиле есть ссылка). Совместимо с PHP 7.4 и 8.x. Если раньше устанавливали этот скрипт, теперь нужно выполнить только пункт 2. Отличия от предыдущей версии:
В самое начало файла
* Обязательно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В конец файла
** Перед сохранением файла исправить в тексте значения параметров
*** Если у вас страница /index.php отличается от / и это важно - исключите из кода блок "Корень форума" или закомментируйте его.
Заходим в админку своего phpBB:
3.1. ОБЩИЕ -> Очистить кэш.
3.2. ОБЩИЕ -> Сброс рекорда посещаемости (только если этот код внедряется впервые).
- расширена блокировка по referer - бот или новый гость (без кук) не может прийти с этого же сайта
/assets/javascript/core.js добавляем этот код прям первой строкой.* Обязательно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
Код: Выделить всё
document.cookie = "checked=1; path=/; max-age=31104000; SameSite=Lax";config.php добавляем (у кого уже есть, заменяем) следующий код.** Перед сохранением файла исправить в тексте значения параметров
$ppp = 20 и $tpf = 100 на свои. Где их взять - написано там же в тексте. *** Если у вас страница /index.php отличается от / и это важно - исключите из кода блок "Корень форума" или закомментируйте его.
Код: Выделить всё
### phpBB Antibot & URL Clean v5.3 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'] ?? '', $_SERVER['HTTP_HOST'])) {
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.1. ОБЩИЕ -> Очистить кэш.
3.2. ОБЩИЕ -> Сброс рекорда посещаемости (только если этот код внедряется впервые).

