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

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

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

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

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

Вечером попробую. Сегодня утром было спокойно, а сейчас набежали демоны! 8-)

Отправлено спустя 8 минут 51 секунду:
max-age=31536000 - срок жизни cookie: 31 536 000 секунд, то есть примерно 1 год с момента установки. Верно?
А что будет через год?
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

Это одноразовая кука, она нужна только для того, чтобы определить, человек ли зашёл на форум, потом в силу вступают обычные куки форума. Можно спокойно поставить 1 час. Но если в течение часа человек не ткнёт ни одну ссылку на странице, то так и останется никем. В общем-то, можно поставить сутки, чтобы не думать об этом. В общем, это время должно быть не меньше, чем реальный человек ткнёт хоть одну ссылку на странице форума. Естественно, он сделает это меньше, чем за год.
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

Kuskow, сделал всё, что Вы написали.
Форум упал по причине:
Сайт выполнил переадресацию слишком много раз.
Что я сделал не так?
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

В общем, там заменой одной строчки не обошлось. Нужно заменить весь третий блок. Так что, если нужно оставить и /, и /index.php, тогда весь код скрипта будет таким:

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

### Барьер для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search
if (PHP_SAPI === 'cli') { return; } // В cli не надо ничего делать
 
# 1. Шлагбаум: извесных ботов не пускаем даже к дому
preg_match('/ChatGPT|keys-so|python|Firefox\/72|Mediapartners/i', $ua = $_SERVER['HTTP_USER_AGENT']) +
preg_match('/wp-|profile\.php/i', $uri = $_SERVER['REQUEST_URI'])
and die(header('HTTP/1.1 403'));
 
# 2. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
empty($_SERVER['HTTP_COOKIE'])
and !preg_match('/Yandex|Googlebot|Applebot|bingbot|Baiduspider|GPTBot/i', $_SERVER['HTTP_USER_AGENT'])
and ($_SERVER['HTTP_USER_AGENT'] = 'Debutante');
 
# 3. Гардероб: разуваем гостей, но не персонал
$noise = 'sid|hilit|gclid|yclid|ysclid|fbclid|utm_\w+';
preg_match('/^(?!.*(adm\/|cp\.php|hash=|mark_)).*?(' . $noise . ')=/i', $uri))
and exit(header('Location: ' . rtrim(preg_replace(["/([?&])($noise)=[^&]*(&|$)/i", '/\?&/'], ['$3', '?'], $uri), '?&'), true, 308));

На своём форуме проверил - работает.
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

Теперь вот:

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

Ошибка AJAX
Internal Server Error
Отправлено спустя 35 минут 43 секунды:
И форум падает с 500 ошибкой.
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

Leo Angel, у меня AJAX не используется, поэтому не уловил бы эту ошибку. Хорошо, что Вы участвуете в разработке универсального решения. Для совместимости уже всем нужно поменять, себе тоже добавил, чтобы в будущем не думать, почему это AJAX не работает. Вот общая обновлённая версия:

Вариант А: для тех, кому index.php не важен

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

### Барьер для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) || PHP_SAPI === 'cli') return; // когда этот скрипт бесполезен

# 1. Шлагбаум: извесных ботов не пускаем даже к дому
preg_match('/ChatGPT|keys-so|python|Firefox\/72/i', $ua = $_SERVER['HTTP_USER_AGENT']) +
preg_match('/wp-|profile\.php/i', $uri = $_SERVER['REQUEST_URI'])
and die(header('HTTP/1.1 403'));

# 2. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
empty($_SERVER['HTTP_COOKIE'])
and !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Baiduspider|GPTBot|whatsapp|telegram|facebook/i', $_SERVER['HTTP_USER_AGENT'])
and ($_SERVER['HTTP_USER_AGENT'] = 'Debutante');

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

Вариант Б: для тех, у кого корень / и /index.php - это разные страницы (отличие в 3 блоке)

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

### Барьер для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) || PHP_SAPI === 'cli') return; // когда этот скрипт бесполезен

# 1. Шлагбаум: извесных ботов не пускаем даже к дому
preg_match('/ChatGPT|keys-so|python|Firefox\/72/i', $ua = $_SERVER['HTTP_USER_AGENT']) +
preg_match('/wp-|profile\.php/i', $uri = $_SERVER['REQUEST_URI'])
and die(header('HTTP/1.1 403'));

# 2. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
empty($_SERVER['HTTP_COOKIE'])
and !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Baiduspider|GPTBot|whatsapp|telegram|facebook/i', $_SERVER['HTTP_USER_AGENT'])
and ($_SERVER['HTTP_USER_AGENT'] = 'Debutante');

# 3. Гардероб: разуваем гостей, но не персонал
$noise = 'sid|hilit|gclid|yclid|ysclid|fbclid|utm_\w+';
preg_match('/^(?!.*(adm\/|cp\.php|hash=|mark_)).*?(' . $noise . ')=/i', $uri))
and exit(header('Location: ' . rtrim(preg_replace(["/([?&])($noise)=[^&]*(&|$)/i", '/\?&/'], ['$3', '?'], $uri), '?&'), true, 308));
dotez
phpBB 2.0.2
Сообщения: 304
Стаж: 15 лет 5 месяцев
Благодарил (а): 3 раза

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

Сообщение dotez »

А для тех у кого форум лежит в-
https://site.ru/phpBB3/
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

Я думаю, можно брать вариант А (без index). Надо пробовать, всего заранее не преусмотреть. Работает - пользуем дальше. Не работает - отключаем (удаляем) только то, что добавили в config.php. Остальное точно никак не мешает.
При установке не забудьтие сделать первые два изменения.
После полной отладки заново соберу все изменения в одну кучу.
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

Kuskow писал(а): 10.04.2026 4:03 Вариант Б: для тех, у кого корень / и /index.php - это разные страницы (отличие в 3 блоке)
Опять Ошибка 500, форум упал. :(
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

Leo Angel, тогда пока специально для Вас, а про универсальность подумаем после успешного запуска. Но каждая такая правка снижает эффективность антибота, пропуская некоторых из них.

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

### Барьер для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search & ChatGPT
if (($_SERVER['REQUEST_METHOD'] ?? '') !== 'GET') return; // когда этот скрипт бесполезен

# 1. Шлагбаум: извесных ботов не пускаем даже к дому
preg_match('/ChatGPT|keys-so|python|Firefox\/72/i', $ua = $_SERVER['HTTP_USER_AGENT']) +
preg_match('/wp-|profile\.php/i', $uri = $_SERVER['REQUEST_URI'])
and die(header('HTTP/1.1 403'));

# 2. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
empty($_SERVER['HTTP_COOKIE'])
and !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Baiduspider|GPTBot|whatsapp|telegram|facebook/i', $_SERVER['HTTP_USER_AGENT'])
and ($_SERVER['HTTP_USER_AGENT'] = 'Debutante');

# 3. Гардероб: разуваем гостей, но не персонал
$noise = 'sid|hilit|gclid|yclid|ysclid|fbclid|utm_\w+';
preg_match('/^(?!.*(adm\/|cp\.php|hash=|mark_)).*?(' . $noise . ')=/i', $uri))
and exit(header('Location: ' . rtrim(preg_replace(["/([?&])($noise)=[^&]*(&|$)/i", '/\?&/'], ['$3', '?'], $uri), '?&'), true, 308));
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5526
Стаж: 21 год 4 месяца
Откуда: Питер
Благодарил (а): 185 раз
Поблагодарили: 772 раза

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

Сообщение Siava »

Кратко о нескольких последних страницах темы :)
Скрытый текст
1430989171_1871837159.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

:D

Отправлено спустя 1 час 18 минут 27 секунд:
Kuskow писал(а): 10.04.2026 15:21 Leo Angel, тогда пока специально для Вас
Нет. Опять ошибка 500
Аватара пользователя
Kuskow
phpBB 2.0.3
Сообщения: 386
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 26 раз
Поблагодарили: 36 раз

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

Сообщение Kuskow »

Ну тут уже моих знаний недостаточно. Мне или включать AJAX на своём сайте, чего очень бы не хотелось, или лезть в чужой сайт, что тоже неправильно.
Можем попробовать ещё наоборот - Вы отключите AJAX в быстром ответе, посмотрим, заработает ли. И будем думать дальше.
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

Давайте пока сделаем паузу. Я постараюсь понять что именно вызывает 500-ю ошибку у меня. Найду, если пойму и найду, тогда продолжим.
Аватара пользователя
Leo Angel
phpBB 2.0.10
Сообщения: 762
Стаж: 8 лет 4 месяца
Откуда: Израиль
Благодарил (а): 246 раз
Поблагодарили: 94 раза

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

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

Нашлась ошибка, которая вызывала 500-ю ошибку.
В этой строке

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

preg_match('/^(?!.*(adm\/|cp\.php|hash=|mark_)).*?(' . $noise . ')=/i', $uri))
лишняя закрывающая скобка!
Убрал её и форум перестал падать.
Всё работает.
Как обстоят дела с ботами посмотрю-понаблюдаю-напишу.

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