Атака китайских ботов
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
-
Kuskow
- phpBB 2.0.2
- Сообщения: 315
- Стаж: 9 лет 10 месяцев
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 23 раза
- Поблагодарили: 24 раза
Re: Атака китайских ботов
Нет, больше нигде ничего не нужно. Лишь бы версия PHP была не меньше 8.0.
И копию базы даже можно не делать - там ничего не меняется.
Сам скрипт никаких данных или файлов не создаёт, не меняет, не удаляет, не переименует. И его в любой момент можно убрать или закомментировать в файле
И копию базы даже можно не делать - там ничего не меняется.
Сам скрипт никаких данных или файлов не создаёт, не меняет, не удаляет, не переименует. И его в любой момент можно убрать или закомментировать в файле
config.php так же, как добавили. Никаких следов не останется.phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
Поставил код в
По итогу через час количество онлайн пользователей снизилось с 987 до 21.Остались, судя по всему, действительно только люди и "правильные" боты. Наверное, сейчас уже можно сказать, что то, к чему я стремился (узнать сколько реально посетителей-людей на форуме) свершилось.
Но вылезла ошибка в консоли:
Не знаю, насколько это критично. На работу форума, вроде, никак не влияет.
config.php. По итогу через час количество онлайн пользователей снизилось с 987 до 21.Остались, судя по всему, действительно только люди и "правильные" боты. Наверное, сейчас уже можно сказать, что то, к чему я стремился (узнать сколько реально посетителей-людей на форуме) свершилось.
Но вылезла ошибка в консоли:
manifest:1 Failed to load resource: the server responded with a status of 403 (Forbidden)Не знаю, насколько это критично. На работу форума, вроде, никак не влияет.
-
Kuskow
- phpBB 2.0.2
- Сообщения: 315
- Стаж: 9 лет 10 месяцев
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 23 раза
- Поблагодарили: 24 раза
Re: Атака китайских ботов
Так это, как раз и правильно. Всем нелюдям теперь скрипт говорит 403, мол, вас тут не ждали, доступ запрещён. Попробуйте открыть любую страницу форума в новом окне в режиме инкогнито - увидите то, что получит новый пользователь, который ни разу не посещал сайт.
И, кстати, какой такой manifest? Разве он есть/был в phpBB? То есть, без моего скрипта phpBB на запрос манифеста выдал бы 404 Not found, а тут выдал 403 Forbidden без нагрузки на PHP и MySQL - хрен редьки не слаще.
И, кстати, какой такой manifest? Разве он есть/был в phpBB? То есть, без моего скрипта phpBB на запрос манифеста выдал бы 404 Not found, а тут выдал 403 Forbidden без нагрузки на PHP и MySQL - хрен редьки не слаще.
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
Насколько я понял, этот
manifest идёт от расширения Browser Push Notifications / Web Push.-
Kuskow
- phpBB 2.0.2
- Сообщения: 315
- Стаж: 9 лет 10 месяцев
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 23 раза
- Поблагодарили: 24 раза
Re: Атака китайских ботов
Его можно включить в исключения (простите за каламбур) рядом со словом delete_cookies через разделитель |
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
-
Kuskow
- phpBB 2.0.2
- Сообщения: 315
- Стаж: 9 лет 10 месяцев
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 23 раза
- Поблагодарили: 24 раза
Re: Атака китайских ботов
Ой нет, погодите, это не там. Подумаю, как это сделать.
Пока временно попробуйте удалить слово "app|" (с одной вертикальной палкой) в этой строчке:
Должно получиться так:
Пока временно попробуйте удалить слово "app|" (с одной вертикальной палкой) в этой строчке:
Код: Выделить всё
and (str_ends_with($uri, '/') + str_contains($uri, '/?') + preg_match('/index|view|member|search|post|app|ucp|config/i', $_SERVER['SCRIPT_NAME']))Код: Выделить всё
and (str_ends_with($uri, '/') + str_contains($uri, '/?') + preg_match('/index|view|member|search|post|ucp|config/i', $_SERVER['SCRIPT_NAME']))phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
Да. так пропала ошибка.
Отправлено спустя 19 минут 27 секунд:
Сделал проверочную страницу красивой.
Также подправлен синтаксис php.
Теперь ждём гуру, что они скажут про этот способ.
Отправлено спустя 19 минут 27 секунд:
Сделал проверочную страницу красивой.
Также подправлен синтаксис php.
Теперь ждём гуру, что они скажут про этот способ.
Код: Выделить всё
$human_gate_html = <<<'HTML'
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Проверка — форум</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px 16px;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #1a1a1a;
background: linear-gradient(160deg, #e8f4f8 0%, #f5f0e8 50%, #eef2f0 100%);
}
.card {
max-width: 28rem;
width: 100%;
background: #fff;
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0,0,0,.08), 0 1px 0 rgba(255,255,255,.8) inset;
padding: 2rem 1.75rem;
text-align: center;
}
.icon { font-size: 2.5rem; line-height: 1; margin-bottom: .75rem; }
h1 {
font-size: 1.2rem;
font-weight: 600;
margin: 0 0 .75rem;
line-height: 1.35;
}
p {
margin: 0 0 1.25rem;
color: #444;
font-size: .95rem;
}
button {
appearance: none;
cursor: pointer;
border: 0;
border-radius: 8px;
padding: .65rem 1.4rem;
font-size: 1rem;
font-weight: 600;
color: #fff;
background: #2d6a6a;
box-shadow: 0 2px 8px rgba(45,106,106,.35);
}
button:hover { background: #245555; }
button:active { transform: translateY(1px); }
.hint { margin-top: 1rem; font-size: .8rem; color: #888; }
</style>
</head>
<body>
<div class="card">
<div class="icon" aria-hidden="true">🛡</div>
<h1>Если вы человек, обновите страницу — откроется форум.</h1>
<p>Короткая проверка от автоматического трафика. После обновления всё работает как обычно.</p>
<button type="button" onclick="location.reload()">Обновить страницу</button>
<p class="hint">Такой у нас антиспам.</p>
</div>
<script>document.cookie="human=1;Path=/;Max-Age=600;SameSite=Lax"</script>
</body>
</html>
HTML
;
### ДОМОФОН+ДРЕНАЖ для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search
# 1. Плохим ботам сканирование сайта запрещено
if (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'])) {
header('HTTP/1.1 403');
die('');
}
# 2. Кто-то запросил страницу phpBB без cookie
if (empty($_SERVER['HTTP_COOKIE'])
&& !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Yahoo|Baiduspider|GPTBot|whatsapp|telegram|facebookext|meta-ext/i', $ua)
&& !(str_contains($uri, '/index.php') && exit(header('Location: ./', true, 308)))
&& (str_ends_with($uri, '/') + str_contains($uri, '/?') + preg_match('/index|view|member|search|post|ucp|config/i', $_SERVER['SCRIPT_NAME']))) {
header('HTTP/1.1 403');
die($human_gate_html);
}
# 3. Чистка мусора из URL, кроме критических зон
$noise = ['sid', 'hilit', 'gclid', 'yclid', 'ysclid', 'fbclid'];
if (preg_match('/^(?!.*(cp\.php|adm\/|delete_cookies)).*(' . implode('|', $noise) . ')=/i', $uri)) {
exit(header('Location: ' . implode('?', array_filter([strtok($uri, '?'), http_build_query(array_diff_key($_GET, array_flip($noise)))])), true, 308));
}У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
southklad
- phpBB 3.1.0 RC4
- Сообщения: 3431
- Стаж: 14 лет 2 месяца
- Благодарил (а): 704 раза
- Поблагодарили: 173 раза
Re: Атака китайских ботов
А как и что вы именно сделали и где?Leo Angel писал(а): Вчера 17:13 Сделал проверочную страницу красивой.
Также подправлен синтаксис php.
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
Вот:
В предыдущем варианте была просто надпись
Мне это не понравилось и переделал.
А ИИ подсказал ещё и улучшения в синтаксисе php. Сравните у меня и тут: Re: Атака китайских ботов
Код: Выделить всё
$human_gate_html = <<<'HTML'
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Проверка — форум</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px 16px;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #1a1a1a;
background: linear-gradient(160deg, #e8f4f8 0%, #f5f0e8 50%, #eef2f0 100%);
}
.card {
max-width: 28rem;
width: 100%;
background: #fff;
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0,0,0,.08), 0 1px 0 rgba(255,255,255,.8) inset;
padding: 2rem 1.75rem;
text-align: center;
}
.icon { font-size: 2.5rem; line-height: 1; margin-bottom: .75rem; }
h1 {
font-size: 1.2rem;
font-weight: 600;
margin: 0 0 .75rem;
line-height: 1.35;
}
p {
margin: 0 0 1.25rem;
color: #444;
font-size: .95rem;
}
button {
appearance: none;
cursor: pointer;
border: 0;
border-radius: 8px;
padding: .65rem 1.4rem;
font-size: 1rem;
font-weight: 600;
color: #fff;
background: #2d6a6a;
box-shadow: 0 2px 8px rgba(45,106,106,.35);
}
button:hover { background: #245555; }
button:active { transform: translateY(1px); }
.hint { margin-top: 1rem; font-size: .8rem; color: #888; }
</style>
</head>
<body>
<div class="card">
<div class="icon" aria-hidden="true">🛡</div>
<h1>Если вы человек, обновите страницу — откроется форум.</h1>
<p>Короткая проверка от автоматического трафика. После обновления всё работает как обычно.</p>
<button type="button" onclick="location.reload()">Обновить страницу</button>
<p class="hint">Такой у нас антиспам.</p>
</div>
<script>document.cookie="human=1;Path=/;Max-Age=600;SameSite=Lax"</script>
</body>
</html>
HTML
;
<h1>Если Вы человек, обновите эту страницу - и всё увидите. Такой вот у нас антиспам.</h1>Мне это не понравилось и переделал.
А ИИ подсказал ещё и улучшения в синтаксисе php. Сравните у меня и тут: Re: Атака китайских ботов
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
southklad, этот код, как писал Kuskow тут Re: Атака китайских ботов нужно добавить в конце файла
Сохраниться и очистить кэш форума.
Публикую ещё раз весь код. Мне помог очень сильно.
config.phpСохраниться и очистить кэш форума.
Публикую ещё раз весь код. Мне помог очень сильно.
Код: Выделить всё
$human_gate_html = <<<'HTML'
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Проверка — форум</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 24px 16px;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
color: #1a1a1a;
background: linear-gradient(160deg, #e8f4f8 0%, #f5f0e8 50%, #eef2f0 100%);
}
.card {
max-width: 28rem;
width: 100%;
background: #fff;
border-radius: 12px;
box-shadow: 0 8px 32px rgba(0,0,0,.08), 0 1px 0 rgba(255,255,255,.8) inset;
padding: 2rem 1.75rem;
text-align: center;
}
.icon { font-size: 2.5rem; line-height: 1; margin-bottom: .75rem; }
h1 {
font-size: 1.2rem;
font-weight: 600;
margin: 0 0 .75rem;
line-height: 1.35;
}
p {
margin: 0 0 1.25rem;
color: #444;
font-size: .95rem;
}
button {
appearance: none;
cursor: pointer;
border: 0;
border-radius: 8px;
padding: .65rem 1.4rem;
font-size: 1rem;
font-weight: 600;
color: #fff;
background: #2d6a6a;
box-shadow: 0 2px 8px rgba(45,106,106,.35);
}
button:hover { background: #245555; }
button:active { transform: translateY(1px); }
.hint { margin-top: 1rem; font-size: .8rem; color: #888; }
</style>
</head>
<body>
<div class="card">
<div class="icon" aria-hidden="true">🛡</div>
<h1>Если вы человек, обновите страницу — откроется форум.</h1>
<p>Короткая проверка от автоматического трафика. После обновления всё работает как обычно.</p>
<button type="button" onclick="location.reload()">Обновить страницу</button>
<p class="hint">Такой у нас антиспам.</p>
</div>
<script>document.cookie="human=1;Path=/;Max-Age=600;SameSite=Lax"</script>
</body>
</html>
HTML
;
### ДОМОФОН+ДРЕНАЖ для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search
# 1. Плохим ботам сканирование сайта запрещено
if (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'])) {
header('HTTP/1.1 403');
die('');
}
# 2. Кто-то запросил страницу phpBB без cookie
if (empty($_SERVER['HTTP_COOKIE'])
&& !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Yahoo|Baiduspider|GPTBot|whatsapp|telegram|facebookext|meta-ext/i', $ua)
&& !(str_contains($uri, '/index.php') && exit(header('Location: ./', true, 308)))
&& (str_ends_with($uri, '/') + str_contains($uri, '/?') + preg_match('/index|view|member|search|post|ucp|config/i', $_SERVER['SCRIPT_NAME']))) {
header('HTTP/1.1 403');
die($human_gate_html);
}
# 3. Чистка мусора из URL, кроме критических зон
$noise = ['sid', 'hilit', 'gclid', 'yclid', 'ysclid', 'fbclid'];
if (preg_match('/^(?!.*(cp\.php|adm\/|delete_cookies)).*(' . implode('|', $noise) . ')=/i', $uri)) {
exit(header('Location: ' . implode('?', array_filter([strtok($uri, '?'), http_build_query(array_diff_key($_GET, array_flip($noise)))])), true, 308));
}-
southklad
- phpBB 3.1.0 RC4
- Сообщения: 3431
- Стаж: 14 лет 2 месяца
- Благодарил (а): 704 раза
- Поблагодарили: 173 раза
Re: Атака китайских ботов
Leo Angel, Спасибо, а ваш тоже только для php8? А то у меня 7.4 стоит к сожалению
-
Leo Angel
- phpBB 2.0.9
- Сообщения: 718
- Стаж: 8 лет 2 месяца
- Откуда: Израиль
- Благодарил (а): 236 раз
- Поблагодарили: 92 раза
Re: Атака китайских ботов
Тоже только для php8. Я в общем-то всю логику оставил прежней - отсюда Re: Атака китайских ботов
Я только изменил страницу "домофона".
Я только изменил страницу "домофона".

