Лучше СПРОСИТЬ глупость, чем её СДЕЛАТЬ!Kuskow писал(а): Вчера 15:04 ...я стесняюсь делиться своими мыслями, идеями... Мне кажется, что они слишком наивные.
Атака китайских ботов
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
Leo Angel
- phpBB 2.0.10
- Сообщения: 774
- Стаж: 8 лет 5 месяцев
- Откуда: Израиль
- Благодарил (а): 250 раз
- Поблагодарили: 94 раза
Re: Атака китайских ботов
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
-
Nekstati
- Поддержка

- Сообщения: 3356
- Стаж: 17 лет 3 месяца
- Благодарил (а): 19 раз
- Поблагодарили: 574 раза
Re: Атака китайских ботов
Ne_Guru, Kuskow, создание иллюзии своей продвинутости - самый полезный для человека скилл.
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
Re: Атака китайских ботов
Антибот для phpBB (версия 3), если нет доступа к настройкам Apache и Nginx.
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.
Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в config.php, а заменять прежнюю версию скрипта в этом файле.
На своём форуме проверил (кроме AJAX), с PHP 7.4-8.5 полностью совместимо. И не важно, находится ли форум в корне сайта или в отдельной папке - будет работать и так, и сяк, ничего исправлять для этого не нужно.
1. {единственное нетрадиционное, но обязательное исправление}
Очень важно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В файле своего phpBB
2. Заходим в админку своего phpBB:
2.1. ОБЩИЕ -> Очистить кэш.
2.2. ОБЩИЕ -> Поисковые боты -> Добавить бота.
Название бота: ЯG [Bot] (можно придумать своё, например, All Bots).
Соответствие агенту:
Остальные графы формы можно оставить по умолчанию.
3. В конец файла
* Если у вас старница
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.
Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в 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: Атака китайских ботов
А если какое-либо расширение добавляет на форум страницу вида /extpage.php ? Бот ее не получит, получается? Ручками нужно у себя вылавливать кастомные страницы и добавлять в код? Я уже и не помню сколько у меня таких )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));
-
Ne_Guru
- phpBB 1.2.1
- Сообщения: 25
- Стаж: 4 дня
- Благодарил (а): 3 раза
Re: Атака китайских ботов
Черт знает что...
Похоже на DDOC-атаку Завтра буду разбираться...
Похоже на DDOC-атаку Завтра буду разбираться...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
Re: Атака китайских ботов
Да, именно так. Но сначала подумать: а вдруг слово "нужно" тут лишнее. Настолько ли уникальный контент на этих страницах, что он обязателен в выдаче поисковиков? Увидит ли новый пользователь информацию в таком виде, чтобы захотеть тут зарегистрироваться?
Отправлено спустя 1 час 51 минуту 6 секунд:
Утро вечера мудренее, оказывается. Вчера я выложил код с ошибками, прошу прощения, он неправильно отрабатывал в cli (cron). Сейчас выложу исправленный.
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
Re: Атака китайских ботов
Антибот для phpBB, версия 3. Для тех, у кого нет доступа к настройкам Apache, Nginx.
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.
Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в
1. {единственное нетрадиционное, но обязательное исправление}
Очень важно повторить это исправление после каждого обновления версии движка, иначе ни один человек на новом устройстве не сможет зайти или зарегистрироваться на форуме.
В файле своего phpBB
2. Заходим в админку своего phpBB:
2.1. ОБЩИЕ -> Очистить кэш.
2.2. ОБЩИЕ -> Поисковые боты -> Добавить бота.
Название бота: Bots & Debutante (можно придумать своё, например, all bots).
Соответствие агенту:
Остальные графы формы можно оставить по умолчанию.
3. В конец файла
* ChatGPT - это совсем не то, о чём вы подумали
* Если у вас страница
Сразу оговорюсь, канонические методы попраны, каждый сам себе решает, насколько это позволительно.
Если раньше устанавливали этот скрипт, то первые два этапа пропускаем, а в третьем нужно не добавлять скрипт в
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: Атака китайских ботов
Nekstati, простите за задержку с ответом.Nekstati писал(а): Вчера 14:34На самом-то деле кол-во посетителей осталось прежним, сколько-то сотен или тысяч, и на каждого из них сервер запускает обработку PHP. Мой скрипт не даёт запуститься тяжёлым скриптам форума и вызовам БД, когда обнаруживает бота, - но интерпретатор PHP всё равно запускается. В этом отличие от защиты, прописанной непосредственно в конфиге сервера, как описывали выше - там очередь до PHP не доходит. Пробуйте. Разница в нагрузке может быть многократная.Ne_Guru писал(а): Вчера 12:42 Кол-во пользователей на форуме показывается адекватное, но вот нагрузки - довольно высокие.
Смысл моего скрипта в том, что админу обычно удобнее прописать алгоритм защиты в PHP, понять такой алгоритм ему тоже проще, да и советы ИИ по PHP более предметные, чем по Nginx. Но защита через Nginx в любом случае эффективнее по нагрузке.
Просто я, к сожалению, практически ничего не понял из того, что вы написали.
Я вас очень уважаю (оказывается, у меня на форуме стояло расширение antibot 42, написанное вами еще в 2015 году!), но являюсь не то, что чайником, а даже к нему не приблизился.
Я пока оставил ваш скрипт, нагрузка у меня взлетела (думаю, не из-за этого сприпта), включил DDOS-защиту, обратился в техподдержку хостера в надежде, что они заблокируют этих "ботов" по ip-адресам.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
Siava
- Поддержка

- Сообщения: 5537
- Стаж: 21 год 5 месяцев
- Откуда: Питер
- Благодарил (а): 187 раз
- Поблагодарили: 774 раза
Re: Атака китайских ботов
Нормально так 1600 в месяц.
VPS наверное дешевле обойдётся, а там тот же Anubis настроить и забыть про ботов, чем городить велосипеды написанные с помощью ИИ)
VPS наверное дешевле обойдётся, а там тот же Anubis настроить и забыть про ботов, чем городить велосипеды написанные с помощью ИИ)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
Ne_Guru
- phpBB 1.2.1
- Сообщения: 25
- Стаж: 4 дня
- Благодарил (а): 3 раза
Re: Атака китайских ботов
Это - временная мера, на несколько дней (по крайней мере, я на это рассчитываю).
Для меня и слово VPS, и слово Anubis - совершенно незнакомые понятия.
Для меня и слово VPS, и слово Anubis - совершенно незнакомые понятия.
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
Re: Атака китайских ботов
Ну и третий эшелон обороны я настроил себе позавчера - включил суточное кэширование Nginx для всех страниц *.php все, кто запросил из без cookies. Там самая сложность была в том, чтобы погасить флаги самого phpBB, запрещающие кэширование php-страниц. Но вроде бы настроили так, чтобы эти запреты игнорировались. Вот результаты за последние сутки:
Не ахти какие результаты, конечно. Но я так думаю, это потому что первые два эшелона (фильтр в NgiNX и config.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: Атака китайских ботов
Kuskow, а в чем в двух словах отличия скрипта 3 версии в config.sys от предыдущих?
-
Kuskow
- phpBB 2.0.4
- Сообщения: 417
- Стаж: 10 лет
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 27 раз
- Поблагодарили: 42 раза
Re: Атака китайских ботов
1) запрет на попытку открытия любых неразрешённых страниц - режется сильно больше плохих запросов
2) раньше проверка на человечность была где-то внутри для некоторых действий, теперь это верхний уровень, то есть, он вообще никак не касается живых людей - им всё открыто
3) чёткая проверка на запросы из браузера (раньше была проверка на запросы из консоли, то есть, наоборот)
4) убрал исключение для хороших ботов - теперь все боты это просто боты, оттого и проще будет статистика видна - только люди (все боты - один аккаунт)
5) исправлен баг с пустым USER_AGENT
0) логика упрощена (хотя, это субъективно)
Отправлено спустя 16 минут 55 секунд:
4. Заходим в админку снова, делаем "Сброс рекорда посещаемости" и наслаждаемся чистой статистикой даже без установки сторонних счётчиков.
2) раньше проверка на человечность была где-то внутри для некоторых действий, теперь это верхний уровень, то есть, он вообще никак не касается живых людей - им всё открыто
3) чёткая проверка на запросы из браузера (раньше была проверка на запросы из консоли, то есть, наоборот)
4) убрал исключение для хороших ботов - теперь все боты это просто боты, оттого и проще будет статистика видна - только люди (все боты - один аккаунт)
5) исправлен баг с пустым USER_AGENT
0) логика упрощена (хотя, это субъективно)
Отправлено спустя 16 минут 55 секунд:
Эх, опять забыл добавить 4 пункт.
4. Заходим в админку снова, делаем "Сброс рекорда посещаемости" и наслаждаемся чистой статистикой даже без установки сторонних счётчиков.
-
Vlad__
- phpBB 2.0.7
- Сообщения: 584
- Стаж: 9 лет 6 месяцев
- Благодарил (а): 246 раз
- Поблагодарили: 53 раза
Re: Атака китайских ботов
То есть я правильно понимаю, в статистике не будет всяких Google-ботов, прописанных в админке, а будет один Debutante?Kuskow писал(а): Сегодня 15:33 убрал исключение для хороших ботов - теперь все боты это просто боты, оттого и проще будет статистика видна - только люди (все боты - один аккаунт)
Так ли важен этот код в блокировщике от ботов? Здесь больше для SЕО, не так ли? Причем этот код генерирует двойной запрос к серверу при срабатывании. Скрипт вырезает не нужные параметры и заново перегружает страницу, переходя снова к п.1Kuskow писал(а): Сегодня 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));
У себя оставил код примерно в таком виде
Код: Выделить всё
if (isset($_SERVER['REQUEST_METHOD']) && empty($_COOKIE['checked'])) {
$_SERVER['HTTP_USER_AGENT'] = 'Debutante';
}
