Атака китайских ботов
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
hd321kbps
- phpBB 2.0.3
- Сообщения: 366
- Стаж: 14 лет 5 месяцев
- Откуда: Россия, Крым, Армянск
- Благодарил (а): 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 раз.
-
MasterX
- phpBB 1.4.4
- Сообщения: 170
- Стаж: 6 лет 6 месяцев
- Благодарил (а): 24 раза
- Поблагодарили: 19 раз
Re: Атака китайских ботов
Настройка fastcgi_cache в Nginx позволяет отдавать готовый HTML-код страниц из оперативной памяти или дискового кэша. PHP-FPM и MySQL перестают вызываться для гостей, что полностью снимает нагрузку со скраперов.Leo Angel писал(а): 29.08.2026 15:09 Ещё не пробовал.
Опишите как делать, плиз. Ну или дайте наводку куда смотреть.
Для форума phpBB ключевая задача — не закэшировать сессию авторизованного пользователя, иначе гости увидят чужие профили.
Шаг 1. Конфигурация Nginx (nginx.conf)
В основной блок http (обычно в /etc/nginx/nginx.conf) добавь объявление зоны кэширования:
http {
# Путь к кэшу, размер ключей 10MB (хватит на ~80k URL), размер самого кэша до 1GB
fastcgi_cache_path /var/cache/nginx_phpbb levels=1:2 keys_zone=PHPBB_CACHE:10m max_size=1g inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# Защита от сбоев: если PHP "лежит", отдаем старый кэш
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
fastcgi_cache_lock on;
}
Шаг 2. Конфигурация виртуального хоста (конфиг сайта)
В файле конфигурации твоего сайта (например, /etc/nginx/sites-available/forum.conf) внеси изменения внутри блока server:
server {
listen 80;
server_name myforum.com;
# --- ПЕРЕМЕННАЯ ДЛЯ ОТКЛЮЧЕНИЯ КЭША ---
set $no_cache 0;
# 1. Не кэшируем POST-запросы (отправка сообщений, авторизация)
if ($request_method = POST) {
set $no_cache 1;
}
# 2. Не кэшируем URL с GET-параметрами (поиск, служебные действия)
if ($query_string != "") {
set $no_cache 1;
}
# 3. Не кэшируем личный кабинет, админку и служебные страницы phpBB
if ($request_uri ~* "/(adm|ucp|mcp|posting\.php|download)") {
set $no_cache 1;
}
# 4. Проверка куки авторизации phpBB (если кука есть — юзер залогинен, кэш отключаем)
# Внимание: замени 'phpbb3_x' на префикс кук твоего форума (смотрится в браузере DevTools -> Application -> Cookies)
if ($http_cookie ~* "phpbb3_[a-z0-9]+_u=(?!1;)[0-9]+") {
set $no_cache 1;
}
# Для XenForo проверка куки авторизации выглядит так:
# if ($http_cookie ~* "xf_user|xf_session") { set $no_cache 1; }
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Подключение твоих стандартных параметров FastCGI
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Укажи свой сокет или IP:порт PHP-FPM
# --- НАСТРОЙКИ КЭША ---
fastcgi_cache PHPBB_CACHE;
fastcgi_cache_valid 200 301 302 10m; # Время жизни кэша для гостей (10 минут)
fastcgi_cache_no_cache $no_cache;
fastcgi_cache_bypass $no_cache;
# Заголовок для отладки (показывает, сработал ли кэш: HIT, MISS или BYPASS)
add_header X-Cache-Status $upstream_cache_status;
}
}Шаг 3. Создание директории и проверка
1. Создай папку под кэш и задай права для пользователя веб-сервера (www-data или nginx):
mkdir -p /var/cache/nginx_phpbb
chown -R www-data:www-data /var/cache/nginx_phpbb2.Проверь синтаксис конфигурации Nginx:
nginx -t 3. Перезапусти Nginx, если нет ошибок:
systemctl reload nginxКак проверить работу
1. Открой форум в режиме инкогнито (как гость).
2. Открой консоль разработчика (F12) -> вкладка Network -> выбери заголовок страницы.
3. Проверь заголовок X-Cache-Status:
- MISS — страница сгенерирована PHP и записана в кэш (при первом заходе).
- HIT — страница отдана напрямую из кэша Nginx (при повторном обновлении). PHP и MySQL не вызывались.
4. Авторизуйся под пользователем — статус должен смениться на BYPASS (кэш полностью обходится).
-
Evangelion
- phpBB 2.0.5
- Сообщения: 474
- Стаж: 14 лет 8 месяцев
- Благодарил (а): 58 раз
- Поблагодарили: 104 раза
Re: Атака китайских ботов
Имеется ещё такое расширение, против нашествия ботов https://www.phpbb.com/community/viewtopic.php?t=2662765
-
MasterX
- phpBB 1.4.4
- Сообщения: 170
- Стаж: 6 лет 6 месяцев
- Благодарил (а): 24 раза
- Поблагодарили: 19 раз
Re: Атака китайских ботов
фигня это все. боты сильно эволюционировали.
А эти проверки только отпугнут реальных пользователей.
А эти проверки только отпугнут реальных пользователей.
-
Siava
- Поддержка

- Сообщения: 5555
- Стаж: 21 год 8 месяцев
- Откуда: Питер
- Благодарил (а): 187 раз
- Поблагодарили: 776 раз
Re: Атака китайских ботов
Этой теме уже лет 15 как) только надо довольно тщательно настроить всё, чтобы не было проблем с авторизацией/выкидыванием или перехватом чужих сессий. Вашу инструкцию ИИ писал что ли? Там есть косяк как минимум в этом:MasterX писал(а): 29.08.2026 15:31 Настройка fastcgi_cache в Nginx позволяет отдавать готовый HTML-код страниц из оперативной памяти или дискового кэша
Дело в том, что в phpbb дофига чего отдаётся с GET-параметрами. Взять любую тему хотя бы. В общем полностью таким инструкциям доверяться не стоит.MasterX писал(а): 29.08.2026 15:31 # 2. Не кэшируем URL с GET-параметрами (поиск, служебные действия)
if ($query_string != "") {
set $no_cache 1;
}
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Зловредные - совсем не сильно. Тупые они. Палятся на мелочах. Потому что защитные экраны мало где стоят - им хватает незащищённых сайтов, они не тратятся на эволюцию.
Была такая мысль, тут обсуждалась. Но нет, этого не произошло. Количество регистраций реальныйх пользователей выросло. Так что, это предположение не подтвердилось.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.
-
волчара
- phpBB 1.4.4
- Сообщения: 110
- Стаж: 9 лет 7 месяцев
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: Атака китайских ботов
MasterX, а не проще ли тогда просто установить [Расширение] (phpBB 3.2-3.3) Cache guests & bots pages: Кэширование страниц для гостей и ботов ????
Ну не знаю, херня или нет, но я знаю точно, что как создал с ИИ расширения Guest IP Log и установил на рабочем форуме, проблема с атакой пропала, уже 2 месяца тишина и благодать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Мудрость заключается не в том, что бы не делать ошибки, а уметь их исправлять вовремя!
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Концепцию придумал я сам:Leo Angel писал(а): 29.08.2026 15:09 Кэширование Nginx (fastcgi_cache) для гостей
Опишите как делать, плиз. Ну или дайте наводку куда смотреть.
- если посетитель без cookies (боты и первый визит гостя) - все страницы phpBB записываются в кэш и выдаются из кэша;
- аватары выдаются из кэша безусловно для всех: ботов, гостей, пользователей.
* Дисклеймер: Я свой сервер настраивал не по этой инструкции, а методом проб и ошибок. Эта инструкция написана уже по следам моей настройки, точность её не проверялась, по ней я ничего не настраивал. Как она себя поведёт в конкретных условиях - я не знаю.
Остальное написал уже ИИ:
Вот универсальная выжимка, которую поймет владелец FastPanel, ISPmanager или просто чистого VestaCP/Nginx.
Шаг 1. Глобальная настройка кэша (для всех панелей одинаково)
В главный файл nginx.conf (в секцию http { ... }) или в /etc/nginx/conf.d/fastcgi_cache.conf добавляется одна строка, создающая зону кэша:
Код: Выделить всё
fastcgi_cache_path /var/cache/nginx/phpbb levels=1:2 keys_zone=phpbb_cache:100m max_size=10g inactive=24h use_temp_path=off;(Папку
/var/cache/nginx/phpbb нужно создать вручную и дать ей права chown -R www-data:www-data или nginx:nginx в зависимости от ОС).Шаг 2. Разница в настройках сайтов для разных панелей
Вам нужно найти конфигурационный файл HTTPS (порт 443) нужного сайта. В зависимости от панели он лежит в разных местах:
* FastPanel: /etc/nginx/fastpanel2/sites/ваш_пользователь/ваш_домен.conf
* ISPmanager: /etc/nginx/vhosts/ваш_пользователь/ваш_домен.conf
* HestiaCP: Изменяется не сам конфиг сайта, а кастомный шаблон в /usr/local/hestia/data/templates/web/nginx/php-fpm/ваш-шаблон.stpl (после чего нужно перестроить пользователя).
* Чистый Nginx (без панелей): /etc/nginx/sites-available/ваш_домен.conf
Шаг 3. Что конкретно добавить в конфиг HTTPS (443) вашего сайта
Внутрь блока
server { ... } добавляем две вещи:1. Кэширование тяжелых аватарок (Добавить ДО блока location /)
Поскольку аватарки в phpBB отдаются динамически через PHP, мы кэшируем их намертво на 7 дней, полностью игнорируя куки.
(Внимание: замените переменную
%sdocroot% или $document_root на реальный путь к корню вашего сайта, если настраиваете вручную без HestiaCP, например /var/www/user/data/www/site.com).
Код: Выделить всё
location = /download/file.php {
if ($arg_avatar = "") {
return 405; # Если это обычное вложение, а не аватарка — уходим в fallback
}
fastcgi_cache phpbb_cache;
fastcgi_cache_valid 200 7d;
fastcgi_cache_bypass "";
fastcgi_no_cache "";
fastcgi_hide_header "Set-Cookie";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
expires 7d;
add_header Cache-Control "public, no-transform";
add_header X-FastCGI-Cache $upstream_cache_status;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Для HestiaCP тут %sdocroot%
fastcgi_pass 127.0.0.1:9000; # Или ваш сокет/переменная панели (например %backend_lsnr%)
}
error_page 405 = @download_fallback;
location @download_fallback {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/download/file.php;
fastcgi_pass 127.0.0.1:9000; # Или ваш сокет/переменная панели
}
2. Защита от утечки данных и кэш страниц (Добавить ВНУТРЬ блока обработки PHP)
Найдите в конфиге блок
location ~ [^/]\.php(/|$) { ... } (куда уходят все PHP-запросы форума) и добавьте туда эти строки:
Код: Выделить всё
# Железобетонная безопасность: если есть хоть одна кука, кэш отключается.
# Гости видят кэш, авторизованные пользователи идут напрямую в PHP и никогда не увидят чужой контент.
set $no_cache 0;
if ($http_cookie != "") {
set $no_cache 1;
}
fastcgi_cache phpbb_cache;
fastcgi_cache_valid 200 301 302 24h; # Кэшируем гостевые страницы на сутки
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # Игнорируем запреты кэша от самого phpBB
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
add_header X-FastCGI-Cache $upstream_cache_status; # Строка для проверки HIT/MISS в браузере
После внесения изменений обязательно проверяем Nginx командой
nginx -t и перезапускаем его systemctl reload nginx.P.S. Единственный нюанс, который стоит держать в голове (но в сам пост добавлять не нужно, чтобы не усложнять): если кто-то из пользователей FastPanel или ISPmanager скопирует конфигурацию аватарок «как есть» и у них упадет Nginx с ошибкой, это будет означать, что в их панелях бэкенд PHP-FPM слушает не порт 127.0.0.1:9000, а сокет (например, unix:/var/run/php-fpm.sock). Но вы это честно указали в комментариях к коду, так что админы разберутся.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Чтобы понять, насколько эффективна эта схема, смотрим на статистику ответов Nginx из логов живого форума:
* 31 873 HIT (Попадание в кэш) — Почти 32 тысячи запросов от гостей Nginx отдал моментально из своей памяти. До тяжелого PHP-FPM и базы данных MySQL эти запросы вообще не дошли. Нагрузка на процессор от них равна нулю.
* 20 795 MISS (Мимо кэша) — Страницы, которые гости/боты открыли впервые. Nginx сходил в PHP, сгенерировал их, отдал гостю и бережно сохранил в кэш для следующих посетителей.
* 8 458 BYPASS (Обход кэша) — Это запросы от авторизованных пользователей (или тех, у кого есть куки). Как и задумывалось, они идут напрямую к PHP и базе данных, видят абсолютно «живой» контент и на 100% защищены от показа чужих сессий.
* 392 EXPIRED (Просрочено) — Страницы, у которых истек 24-часовой срок жизни. Nginx обновил их при первом же новом заходе гостя.
Подводим итоги:
С одной стороны у нас HIT (запросы, которые Nginx обработал сам), а с другой стороны — BYPASS + MISS + EXPIRED (все запросы, которые заставили сервер напрячься, запустить PHP и сходить в базу данных).
Если сложить все тяжелые запросы, которые дошли до интерпретатора PHP (BYPASS + MISS + EXPIRED), мы получим 29 645 запросов.
А чистых попаданий в кэш (HIT) у нас — 31 873.
Это значит, что Nginx в одиночку заблокировал и обработал только половину общего трафика форума. Так что, кэширование считаю неэффективной мерой для разгрузки сервера.
Код: Выделить всё
8458 BYPASS
31873 HIT
20795 MISS
392 EXPIRED
* 20 795 MISS (Мимо кэша) — Страницы, которые гости/боты открыли впервые. Nginx сходил в PHP, сгенерировал их, отдал гостю и бережно сохранил в кэш для следующих посетителей.
* 8 458 BYPASS (Обход кэша) — Это запросы от авторизованных пользователей (или тех, у кого есть куки). Как и задумывалось, они идут напрямую к PHP и базе данных, видят абсолютно «живой» контент и на 100% защищены от показа чужих сессий.
* 392 EXPIRED (Просрочено) — Страницы, у которых истек 24-часовой срок жизни. Nginx обновил их при первом же новом заходе гостя.
Подводим итоги:
С одной стороны у нас HIT (запросы, которые Nginx обработал сам), а с другой стороны — BYPASS + MISS + EXPIRED (все запросы, которые заставили сервер напрячься, запустить PHP и сходить в базу данных).
Если сложить все тяжелые запросы, которые дошли до интерпретатора PHP (BYPASS + MISS + EXPIRED), мы получим 29 645 запросов.
А чистых попаданий в кэш (HIT) у нас — 31 873.
Это значит, что Nginx в одиночку заблокировал и обработал только половину общего трафика форума. Так что, кэширование считаю неэффективной мерой для разгрузки сервера.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.
-
MasterX
- phpBB 1.4.4
- Сообщения: 170
- Стаж: 6 лет 6 месяцев
- Благодарил (а): 24 раза
- Поблагодарили: 19 раз
Re: Атака китайских ботов
Так поделитесь опытом с людьми.волчара писал(а): 30.08.2026 7:02 Ну не знаю, херня или нет, но я знаю точно, что как создал с ИИ расширения Guest IP Log и установил на рабочем форуме, проблема с атакой пропала, уже 2 месяца тишина и благодать.
Но подозреваю, что это расширение рубит и реальных юзверей.
Учитывая продолжительность темы - проблема все равно не решается, либо решается крайне краткосрочно и не полностью.
Пы Сы: Я не знаю, как оно работает, но на главную вашего форума я попасть не смог. Multiboot by Volchara -Портал это все что я увидел на вкладке.
Так что как и предполагал, оно работает некорректно.
Последний раз редактировалось MasterX 30.08.2026 10:03, всего редактировалось 1 раз.
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Анализ общей статистики сервера (Кэш + Антибот в действии)
Чтобы оценить реальную картину, посмотрим на распределение HTTP-кодов ответов Nginx по всему входящему трафику:
Как это работает в связке и почему это эффективно:
1. Антибот срезает «грязный» трафик на подлете (Коды 444 и 410)
* 444 в Nginx означает «закрыть соединение и не отдавать ни одного байта в ответ». Антибот распознал спамеров, сканеров уязвимостей или левых парсеров и моментально их сбросил. Сервер не потратил ни мегабайта трафика, ни капли процессора.
* 410 (Gone) — PHP-антибот ответил ботам, что запрашиваемый ресурс «удален навсегда». Это заставляет нормальных роботов вычеркнуть адрес из базы и больше не спамить сервер.
2. Ловушка Антибота на редиректах (Код 301)
34 550 запросов с кодом 301 — Огромная часть из этих редиректов создана Антиботом, который на лету перехватывает старые ссылки (превращает p= в t=&start=). В чем здесь магия: огромное количество спам-ботов написаны крайне примитивно. Получив в ответ на свой запрос любой легитимный ответ от сервера (в данном случае редирект 301), они ставят у себя галочку «готово» и уходят. Они физически не идут по новому адресу! В итоге тяжелый движок phpBB для обработки темы форума даже не просыпается, а сервер экономит прорву ресурсов.
3. Кэш разгружает то, что пропустил Антибот (Код 200)
Всего сервер успешно отдал контент (код 200) 96 761 раз. И вот тут вступают в силу те самые цифры из лога кэширования, которые мы разбирали ранее (где половина ушла в HIT).
Из общего объема трафика (около 160 000 кликов в логе) до реального «тяжелого» выполнения PHP и MySQL доходит лишь малая часть. Антибот отсекает явных вредителей, а FastCGI-кэш берет на себя половину легитимных гостей и поисковиков.
Именно в такой связке форум phpBB может стабильно жить и летать даже на самом дешевом VPS.
Чтобы оценить реальную картину, посмотрим на распределение HTTP-кодов ответов Nginx по всему входящему трафику:
Код: Выделить всё
_200 96761 (Успешные запросы — контент отдан)
_301 34550 (Редиректы, в основном p= на t=&start=)
_444 24553 (Запросы сброшены Антиботом без ответа)
_410 1699 (Запросы к удаленным/несуществующим ресурсам для ботов)
_302 1117 (после пользовательских действий)
_404 829 (несуществующие страницы обработал phpBB)
_304 812 (ограничение доступа обработал phpBB)
_308 629 (перенаправление пользователей Антиботом)
Как это работает в связке и почему это эффективно:
1. Антибот срезает «грязный» трафик на подлете (Коды 444 и 410)
* 444 в Nginx означает «закрыть соединение и не отдавать ни одного байта в ответ». Антибот распознал спамеров, сканеров уязвимостей или левых парсеров и моментально их сбросил. Сервер не потратил ни мегабайта трафика, ни капли процессора.
* 410 (Gone) — PHP-антибот ответил ботам, что запрашиваемый ресурс «удален навсегда». Это заставляет нормальных роботов вычеркнуть адрес из базы и больше не спамить сервер.
2. Ловушка Антибота на редиректах (Код 301)
34 550 запросов с кодом 301 — Огромная часть из этих редиректов создана Антиботом, который на лету перехватывает старые ссылки (превращает p= в t=&start=). В чем здесь магия: огромное количество спам-ботов написаны крайне примитивно. Получив в ответ на свой запрос любой легитимный ответ от сервера (в данном случае редирект 301), они ставят у себя галочку «готово» и уходят. Они физически не идут по новому адресу! В итоге тяжелый движок phpBB для обработки темы форума даже не просыпается, а сервер экономит прорву ресурсов.
3. Кэш разгружает то, что пропустил Антибот (Код 200)
Всего сервер успешно отдал контент (код 200) 96 761 раз. И вот тут вступают в силу те самые цифры из лога кэширования, которые мы разбирали ранее (где половина ушла в HIT).
Из общего объема трафика (около 160 000 кликов в логе) до реального «тяжелого» выполнения PHP и MySQL доходит лишь малая часть. Антибот отсекает явных вредителей, а FastCGI-кэш берет на себя половину легитимных гостей и поисковиков.
Именно в такой связке форум phpBB может стабильно жить и летать даже на самом дешевом VPS.
Последний раз редактировалось Kuskow 30.08.2026 10:11, всего редактировалось 1 раз.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Нет такой логики. Лично я тему продолжаю чисто от нечего делать. А от ботов жду, когда они уже реально нападут на мой сервер, как это было в начале года, когда пользователи не могли даже листать форум, когда было по 200 тысяч гостей за 5 минут. Очень хочется посмотреть, как с этим наплывом справится мой антибот.MasterX писал(а): 30.08.2026 9:56 Учитывая продолжительность темы - проблема все равно не решается, либо решается крайне краткосрочно и не полностью.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.
-
Michel
- Поддержка

- Сообщения: 641
- Стаж: 14 лет 8 месяцев
- Откуда: Липецк
- Благодарил (а): 143 раза
- Поблагодарили: 81 раз
Re: Атака китайских ботов
Хорошее расширение. Не отпугивает ни гостей, ни ботов - и тем более пользователей. Нагрузку косит сильно. По идее и не было задачи свести нагрузку на "0". Главное чтоб всё работало, дышало свободно и не падало даже при большой нагрузке. Данное расширение справляется на все 100% на мой взгляд.волчара писал(а): 30.08.2026 7:02 а не проще ли тогда просто установить [Расширение] (phpBB 3.2-3.3) Cache guests & bots pages: Кэширование страниц для гостей и ботов ????
-
волчара
- phpBB 1.4.4
- Сообщения: 110
- Стаж: 9 лет 7 месяцев
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: Атака китайских ботов
Так у меня Портал установлен как главная страница сайта(к стати тоже расширением), а не список форума, что бы перейти в список форума, на это есть кнопочка в горизонтальном меню.MasterX писал(а): 30.08.2026 9:56 Я не знаю, как оно работает, но на главную вашего форума я попасть не смог. Multiboot by Volchara -Портал это все что я увидел на вкладке.
скрин
если только тех кто находиться в забаненной подсети, а так пользователи регистрируются без проблем, потому что для гостей только режим чтения, как и для ботов
Guest IP Log — полное описание функционала и алгоритм работы
================================================================================
Guest IP Log — полное описание функционала и алгоритм работы
Расширение phpBB: vse/guestiplog
Версия: 1.2.5
Требования: phpBB >= 3.3.0, PHP >= 7.4
Лицензия: GPL-2.0-only
================================================================================
1. НАЗНАЧЕНИЕ
--------------------------------------------------------------------------------
Расширение Guest IP Log решает две задачи для форума phpBB:
1) Логирование IP-адресов анонимных посетителей (гостей) в текстовый файл.
2) Блокировка вредоносных ботов и скраперов с гибкими настройками в ACP.
Расширение срабатывает только для гостей (неавторизованных пользователей).
Зарегистрированные пользователи, официальные боты phpBB (is_bot), cron,
установка и админ-панель не обрабатываются.
2. ТОЧКА ВХОДА И ОБЩИЙ ПОРЯДОК РАБОТЫ
--------------------------------------------------------------------------------
Событие: core.user_setup_after (класс event\listener).
При каждом запросе (кроме cron, install, ACP) выполняется:
1. Автоочистка логов (если включена в настройках).
2. Если пользователь НЕ гость — выход.
3. Если пользователь — официальный бот phpBB — выход.
4. Проверка и блокировка (bot_blocker::check_and_block).
5. Если блокировка сработала — скрипт завершается с HTTP 403.
6. Если логирование включено — запись в guests.log.
3. ЛОГИРОВАНИЕ IP ГОСТЕЙ
--------------------------------------------------------------------------------
3.1. Условия записи
- Пользователь — гость (user_id = ANONYMOUS).
- Не является ботом phpBB.
- В настройках включено логирование (vse_guestiplog_enabled).
3.2. Режимы записи
- «Один раз за сессию» (по умолчанию): запись только при создании сессии
(session_created).
- «Каждый запрос»: запись при каждом просмотре страницы гостем
(лог быстро растёт).
3.3. Формат строки guests.log
[YYYY-MM-DD HH:MM:SS] IP: <ip> | Session: <session_id> | URI: <uri> | UA: <user_agent>
Время — UTC (gmdate).
3.4. Путь к логу
- Настраивается в ACP (относительно корня phpBB).
- По умолчанию: store/ext/vse/guestiplog/guests.log
- Папка создаётся автоматически при первой записи.
3.5. Автоочистка логов
- Опционально обнуляет guests.log и/или blocked.log через заданный интервал.
- Интервал: от 1 до 168 часов (по умолчанию 24).
- Проверка выполняется при обычных заходах на форум (любой посетитель).
- Используется файловая блокировка (log_clear.lock) для исключения гонок.
4. БЛОКИРОВКА БОТОВ — АЛГОРИТМ check_and_block()
--------------------------------------------------------------------------------
Метод: service\bot_blocker::check_and_block($ip)
При блокировке: запись в blocked.log, ответ HTTP 403 Forbidden (текст «Forbidden»).
Порядок проверок (строго последовательный):
ШАГ 1. БЕЛЫЙ СПИСОК И ЛОКАЛЬНЫЕ IP
- Локальные и частные адреса (127.0.0.1, ::1, 10.x, 192.168.x и т.д.)
никогда не блокируются.
- IP из белого списка ACP (vse_guestiplog_block_ip_whitelist).
→ Пропуск, дальнейшие проверки не выполняются.
ШАГ 2. ПЛАТЁЖНЫЕ CALLBACK
- URI содержит пути ЮMoney/донатов: /ym_payin, /wm_payin, /sp_payin,
/py_payin (с app.php/ или без).
- POST с notification_type и (sha1_hash или operation_id).
→ Пропуск (уведомления приходят гостем с коротким UA).
ШАГ 3. SEO-РЕСУРСЫ И ПОИСКОВЫЕ РОБОТЫ
- SEO: /robots.txt, /sitemap.xml, /sitemap-N.xml,
/updates/*.json (version-check phpBB).
- User-Agent поисковиков: YandexBot, Googlebot, Applebot, bingbot,
DuckDuckBot, Mail.RU_Bot и др.
→ Пропуск.
ШАГ 4. РУЧНОЙ БАН (manual_blocks.json)
- IP в списке ручных блокировок из ACP.
- Работает ВСЕГДА, даже если автоблокировка выключена.
→ Блокировка, причина: manual_block.
ШАГ 5. АВТОБЛОКИРОВКА ВЫКЛЮЧЕНА?
- Если vse_guestiplog_block_enabled = 0 → стоп, пропуск.
ШАГ 6. ОПРЕДЕЛЕНИЕ ПРИЧИНЫ БЛОКИРОВКИ (get_block_reason)
- Если причина найдена → blocked.log + HTTP 403.
- Если причина пустая → пропуск.
Внутри get_block_reason() (после повторной проверки whitelist/SEO/ботов):
6.1. Ручной бан (manual_block)
6.2. Блокировка подсети /24 (subnet_block) — если включена
6.3. Запрещённые URI для гостей (restricted_uri)
6.4. Известные боты — мягкий список (known_bot)
6.5. Далее — в зависимости от режима (мягкий / жёсткий / комбо)
5. ЗАПРЕЩЁННЫЕ URI ДЛЯ ГОСТЕЙ (restricted_uri)
--------------------------------------------------------------------------------
Гость получает 403 при обращении к:
- posting.php (любой путь, содержащий posting.php)
- app.php/cron/ или app.php/cron
- ucp.php?mode=register с параметром iscanyesno (сканер регистрации)
- ucp.php?i=pm, folder=inbox/outbox/sentbox (личные сообщения гостю недоступны)
- Запросы со сломанным sid в URL:
amp;sid, amp%3Bsid, &sid=, ?amp;sid=
(типично при копировании HTML-ссылок скраперами)
6. РЕЖИМЫ БЛОКИРОВКИ
--------------------------------------------------------------------------------
В ACP можно включить ровно ОДИН режим при активной блокировке.
6.1. МЯГКИЙ РЕЖИМ (MODE_SOFT = 1)
Блокирует:
- Известных ботов (мягкий список UA): GPTBot, ChatGPT-User, SemrushBot
- Запрещённые URI (см. раздел 5)
НЕ блокирует: подозрительные UA, fake Chrome, rate limit, жёсткий список ботов.
6.2. ЖЁСТКИЙ РЕЖИМ (MODE_HARD = 2)
Всё из мягкого режима, плюс:
- Жёсткий список ботов: GPTBot, ChatGPT-User, SemrushBot, GoogleOther,
Bytespider, CCBot, AhrefsBot, MJ12bot, PetalBot, DotBot
- Поддельный Chrome 60–79 (fake_chrome): UA вида Chrome/63.0.x.x,
major 60–79, minor = 0
- Подозрительные User-Agent (suspicious_ua):
* пустой или короче 20 символов
* Chrome/NNN.0.0.0 с major < 130 (кроме реальных браузеров:
YaBrowser, Edg, OPR, Brave, Vivaldi, SamsungBrowser, Firefox)
* Macintosh; Intel Mac OS X + Chrome/NNN.0.0.0
* Linux aarch64 + Chrome/NNN.0.0.0
- Rate limit: 30 запросов за 60 секунд с одного IP (по умолчанию)
6.3. КОМБО РЕЖИМ (MODE_COMBO = 3)
Мягкий режим + жёсткий список ботов + опционально (включаются отдельно в ACP):
- Подозрительные User-Agent (vse_guestiplog_combo_suspicious_ua)
- Поддельный Chrome 60–79 (vse_guestiplog_combo_fake_chrome)
- Лимит запросов (vse_guestiplog_combo_rate_limit):
настраиваемые count и window (по умолчанию 30 / 60 сек)
7. БЛОКИРОВКА ПОДСЕТИ /24 (subnet_block)
--------------------------------------------------------------------------------
Включается опцией «Блокировка всей подсети IP адреса».
Алгоритм (только IPv4):
1. IP приводится к подсети x.x.x.0/24.
2. В окне времени (5 / 15 / 30 минут — настраивается) считаются уникальные
IP гостей из этой подсети.
3. Если уникальных IP > 5 — блокируется вся подсеть /24.
4. Срок блокировки: 7 / 30 / 90 / 180 дней или навсегда.
5. Данные хранятся в subnet_block.json с файловой блокировкой.
6. IP из белого списка и локальные не учитываются и не блокируются.
7. IPv6 не поддерживается для подсетевой блокировки.
При срабатывании в blocked.log: Reason: subnet_block
8. РУЧНАЯ БЛОКИРОВКА IP (ACP)
--------------------------------------------------------------------------------
Страница ACP: «Заблокированные IP адреса».
Возможности:
- Добавить IP (IPv4/IPv6) со сроком: 7 / 30 / 90 / 180 дней / навсегда
- Просмотр таблицы: IP/подсеть, тип, дата начала, дата окончания, срок
- Разблокировка (ручные IP и автоматические подсети)
- Пагинация: 20 записей на страницу
- «Показать всю таблицу» / «Скрыть всю таблицу»
- Поиск по всем записям (не только текущая страница):
* точный IP
* подсеть (95.108.213.0 или 95.108.213.0/24)
* IP внутри заблокированной подсети /24
При нахождении — переход на страницу и подсветка строки.
При отсутствии — модальное окно «IP адрес не найден».
Ограничения:
- Нельзя заблокировать IP из белого списка или локальный адрес.
- Ручной бан действует независимо от включения автоблокировки.
9. ФАЙЛЫ ДАННЫХ
--------------------------------------------------------------------------------
Папка по умолчанию: store/ext/vse/guestiplog/
guests.log — лог визитов гостей
blocked.log — лог блокировок
subnet_block.json — состояние подсетевых блокировок
manual_blocks.json — ручные блокировки из ACP
rate_limit.json — счётчики запросов для rate limit
log_clear.lock — блокировка при автоочистке
Формат строки blocked.log:
[YYYY-MM-DD HH:MM:SS] BLOCKED | Mode: <режим> | Reason: <причина> |
IP: <ip> | URI: <uri> | UA: <user_agent>
Коды причин (Reason):
manual_block — ручной бан из ACP
subnet_block — блокировка подсети /24
restricted_uri — запрещённый URI для гостя
known_bot — известный бот по User-Agent
fake_chrome — поддельный Chrome 60–79
suspicious_ua — подозрительный User-Agent
rate_limit — превышен лимит запросов
10. АДМИН-ПАНЕЛЬ (ACP)
--------------------------------------------------------------------------------
Модуль: Расширения → Guest IP Log
10.1. Страница «Настройки лога IP гостей» (mode: settings)
Основные настройки:
- Включить/выключить логирование
- Папка для лог-файла (относительный путь)
- Режим записи: один раз за сессию / каждый запрос
- Статус текущего лога (путь, размер)
Автоочистка:
- Включить автоочистку
- Интервал в часах (1–168)
- Очищать guests.log / blocked.log
- Дата последней автоочистки
Блокировка ботов:
- Включить блокировку
- Режим: мягкий / жёсткий / комбо
- Белый список IP
- Блокировка подсети /24 (окно и срок)
- Доп. настройки комбо-режима (подозрительный UA, fake Chrome, rate limit)
Просмотр логов:
- Модальное окно с пагинацией (150 строк на страницу)
- Кнопки «Скачать» и «Закрыть»
- Скачивание guests.log и blocked.log
10.2. Страница «Заблокированные IP адреса» (mode: blocked)
См. раздел 8.
11. НАСТРОЙКИ В БАЗЕ ДАННЫХ (config)
--------------------------------------------------------------------------------
vse_guestiplog_enabled — логирование вкл/выкл
vse_guestiplog_log_path — путь к папке логов
vse_guestiplog_log_every_request — каждый запрос / раз за сессию
vse_guestiplog_log_auto_clear — автоочистка
vse_guestiplog_log_auto_clear_hours — интервал автоочистки (часы)
vse_guestiplog_log_auto_clear_guests — очищать guests.log
vse_guestiplog_log_auto_clear_blocked — очищать blocked.log
vse_guestiplog_log_auto_clear_last — timestamp последней очистки
vse_guestiplog_block_enabled — автоблокировка вкл/выкл
vse_guestiplog_block_mode — 1=мягкий, 2=жёсткий, 3=комбо
vse_guestiplog_block_subnet — блокировка подсети
vse_guestiplog_block_subnet_window — окно подсчёта (5/15/30 мин)
vse_guestiplog_block_subnet_duration — срок блока подсети (дни)
vse_guestiplog_block_ip_whitelist — белый список IP
vse_guestiplog_combo_suspicious_ua — комбо: подозрительный UA
vse_guestiplog_combo_fake_chrome — комбо: fake Chrome
vse_guestiplog_combo_rate_limit — комбо: rate limit
vse_guestiplog_combo_rate_limit_count — макс. запросов
vse_guestiplog_combo_rate_limit_window — окно в секундах
12. СТРУКТУРА РАСШИРЕНИЯ
--------------------------------------------------------------------------------
ext/vse/guestiplog/
composer.json — метаданные, version-check
ext.php — проверка версии phpBB
config/services.yml — DI-контейнер
event/listener.php — обработчик core.user_setup_after
service/
guest_ip_logger.php — логирование и автоочистка
bot_blocker.php — блокировка ботов
acp/
guestiplog_info.php — регистрация модулей ACP
guestiplog_module.php — логика ACP
adm/style/
acp_guestiplog.html — шаблон настроек
acp_guestiplog.js/css — просмотр логов в модалке
acp_guestiplog_blocked.html/js/css — страница блокировок
language/ru/, language/en/ — языковые строки
migrations/ — миграции БД и модулей
13. СХЕМА АЛГОРИТМА (КРАТКО)
--------------------------------------------------------------------------------
Запрос на форум
|
v
[Cron / Install / ACP?] ---> да ---> выход
| нет
v
[Автоочистка логов]
|
v
[Авторизован?] -----------> да ---> выход (без блокировки и лога гостя)
| нет (гость)
v
[Бот phpBB?] --------------> да ---> выход
| нет
v
+---------------------------+
| check_and_block(IP) |
| 1. Whitelist / local IP |---> пропуск
| 2. Payment callback |---> пропуск
| 3. SEO / search bots |---> пропуск
| 4. Manual ban |---> 403
| 5. Auto-block off? |---> пропуск
| 6. Subnet /24 block |---> 403
| 7. Restricted URI |---> 403
| 8. Known bots (soft) |---> 403
| 9. Mode: hard/combo rules |---> 403 или пропуск
+---------------------------+
|
v (не заблокирован)
[Логирование включено?] ---> нет ---> конец
| да
v
[Режим: каждый запрос ИЛИ новая сессия?]
|
v
Запись в guests.log
14. УСТАНОВКА И ОБНОВЛЕНИЕ
--------------------------------------------------------------------------------
1. Скопировать папку ext/vse/guestiplog на сервер.
2. В ACP: Пользователи и группы → Управление расширениями → включить
«Guest IP Log».
3. После обновления — очистить кэш phpBB (шаблоны + язык).
4. При добавлении новых модулей ACP может потребоваться
отключить/включить расширение для применения миграций.
5. Убедиться, что папка логов доступна для записи веб-сервером.
15. БЕЗОПАСНОСТЬ
--------------------------------------------------------------------------------
- Скачивание и просмотр логов в ACP защищены link hash.
- Путь к логам валидируется (без .., без абсолютных путей).
- resolve_log_file() проверяет, что файл находится внутри папки логов.
- Файлы JSON (блокировки, rate limit) используют flock() при записи.
================================================================================
Конец документа. Версия описания соответствует расширению v1.2.5.
================================================================================
Guest IP Log — полное описание функционала и алгоритм работы
Расширение phpBB: vse/guestiplog
Версия: 1.2.5
Требования: phpBB >= 3.3.0, PHP >= 7.4
Лицензия: GPL-2.0-only
================================================================================
1. НАЗНАЧЕНИЕ
--------------------------------------------------------------------------------
Расширение Guest IP Log решает две задачи для форума phpBB:
1) Логирование IP-адресов анонимных посетителей (гостей) в текстовый файл.
2) Блокировка вредоносных ботов и скраперов с гибкими настройками в ACP.
Расширение срабатывает только для гостей (неавторизованных пользователей).
Зарегистрированные пользователи, официальные боты phpBB (is_bot), cron,
установка и админ-панель не обрабатываются.
2. ТОЧКА ВХОДА И ОБЩИЙ ПОРЯДОК РАБОТЫ
--------------------------------------------------------------------------------
Событие: core.user_setup_after (класс event\listener).
При каждом запросе (кроме cron, install, ACP) выполняется:
1. Автоочистка логов (если включена в настройках).
2. Если пользователь НЕ гость — выход.
3. Если пользователь — официальный бот phpBB — выход.
4. Проверка и блокировка (bot_blocker::check_and_block).
5. Если блокировка сработала — скрипт завершается с HTTP 403.
6. Если логирование включено — запись в guests.log.
3. ЛОГИРОВАНИЕ IP ГОСТЕЙ
--------------------------------------------------------------------------------
3.1. Условия записи
- Пользователь — гость (user_id = ANONYMOUS).
- Не является ботом phpBB.
- В настройках включено логирование (vse_guestiplog_enabled).
3.2. Режимы записи
- «Один раз за сессию» (по умолчанию): запись только при создании сессии
(session_created).
- «Каждый запрос»: запись при каждом просмотре страницы гостем
(лог быстро растёт).
3.3. Формат строки guests.log
[YYYY-MM-DD HH:MM:SS] IP: <ip> | Session: <session_id> | URI: <uri> | UA: <user_agent>
Время — UTC (gmdate).
3.4. Путь к логу
- Настраивается в ACP (относительно корня phpBB).
- По умолчанию: store/ext/vse/guestiplog/guests.log
- Папка создаётся автоматически при первой записи.
3.5. Автоочистка логов
- Опционально обнуляет guests.log и/или blocked.log через заданный интервал.
- Интервал: от 1 до 168 часов (по умолчанию 24).
- Проверка выполняется при обычных заходах на форум (любой посетитель).
- Используется файловая блокировка (log_clear.lock) для исключения гонок.
4. БЛОКИРОВКА БОТОВ — АЛГОРИТМ check_and_block()
--------------------------------------------------------------------------------
Метод: service\bot_blocker::check_and_block($ip)
При блокировке: запись в blocked.log, ответ HTTP 403 Forbidden (текст «Forbidden»).
Порядок проверок (строго последовательный):
ШАГ 1. БЕЛЫЙ СПИСОК И ЛОКАЛЬНЫЕ IP
- Локальные и частные адреса (127.0.0.1, ::1, 10.x, 192.168.x и т.д.)
никогда не блокируются.
- IP из белого списка ACP (vse_guestiplog_block_ip_whitelist).
→ Пропуск, дальнейшие проверки не выполняются.
ШАГ 2. ПЛАТЁЖНЫЕ CALLBACK
- URI содержит пути ЮMoney/донатов: /ym_payin, /wm_payin, /sp_payin,
/py_payin (с app.php/ или без).
- POST с notification_type и (sha1_hash или operation_id).
→ Пропуск (уведомления приходят гостем с коротким UA).
ШАГ 3. SEO-РЕСУРСЫ И ПОИСКОВЫЕ РОБОТЫ
- SEO: /robots.txt, /sitemap.xml, /sitemap-N.xml,
/updates/*.json (version-check phpBB).
- User-Agent поисковиков: YandexBot, Googlebot, Applebot, bingbot,
DuckDuckBot, Mail.RU_Bot и др.
→ Пропуск.
ШАГ 4. РУЧНОЙ БАН (manual_blocks.json)
- IP в списке ручных блокировок из ACP.
- Работает ВСЕГДА, даже если автоблокировка выключена.
→ Блокировка, причина: manual_block.
ШАГ 5. АВТОБЛОКИРОВКА ВЫКЛЮЧЕНА?
- Если vse_guestiplog_block_enabled = 0 → стоп, пропуск.
ШАГ 6. ОПРЕДЕЛЕНИЕ ПРИЧИНЫ БЛОКИРОВКИ (get_block_reason)
- Если причина найдена → blocked.log + HTTP 403.
- Если причина пустая → пропуск.
Внутри get_block_reason() (после повторной проверки whitelist/SEO/ботов):
6.1. Ручной бан (manual_block)
6.2. Блокировка подсети /24 (subnet_block) — если включена
6.3. Запрещённые URI для гостей (restricted_uri)
6.4. Известные боты — мягкий список (known_bot)
6.5. Далее — в зависимости от режима (мягкий / жёсткий / комбо)
5. ЗАПРЕЩЁННЫЕ URI ДЛЯ ГОСТЕЙ (restricted_uri)
--------------------------------------------------------------------------------
Гость получает 403 при обращении к:
- posting.php (любой путь, содержащий posting.php)
- app.php/cron/ или app.php/cron
- ucp.php?mode=register с параметром iscanyesno (сканер регистрации)
- ucp.php?i=pm, folder=inbox/outbox/sentbox (личные сообщения гостю недоступны)
- Запросы со сломанным sid в URL:
amp;sid, amp%3Bsid, &sid=, ?amp;sid=
(типично при копировании HTML-ссылок скраперами)
6. РЕЖИМЫ БЛОКИРОВКИ
--------------------------------------------------------------------------------
В ACP можно включить ровно ОДИН режим при активной блокировке.
6.1. МЯГКИЙ РЕЖИМ (MODE_SOFT = 1)
Блокирует:
- Известных ботов (мягкий список UA): GPTBot, ChatGPT-User, SemrushBot
- Запрещённые URI (см. раздел 5)
НЕ блокирует: подозрительные UA, fake Chrome, rate limit, жёсткий список ботов.
6.2. ЖЁСТКИЙ РЕЖИМ (MODE_HARD = 2)
Всё из мягкого режима, плюс:
- Жёсткий список ботов: GPTBot, ChatGPT-User, SemrushBot, GoogleOther,
Bytespider, CCBot, AhrefsBot, MJ12bot, PetalBot, DotBot
- Поддельный Chrome 60–79 (fake_chrome): UA вида Chrome/63.0.x.x,
major 60–79, minor = 0
- Подозрительные User-Agent (suspicious_ua):
* пустой или короче 20 символов
* Chrome/NNN.0.0.0 с major < 130 (кроме реальных браузеров:
YaBrowser, Edg, OPR, Brave, Vivaldi, SamsungBrowser, Firefox)
* Macintosh; Intel Mac OS X + Chrome/NNN.0.0.0
* Linux aarch64 + Chrome/NNN.0.0.0
- Rate limit: 30 запросов за 60 секунд с одного IP (по умолчанию)
6.3. КОМБО РЕЖИМ (MODE_COMBO = 3)
Мягкий режим + жёсткий список ботов + опционально (включаются отдельно в ACP):
- Подозрительные User-Agent (vse_guestiplog_combo_suspicious_ua)
- Поддельный Chrome 60–79 (vse_guestiplog_combo_fake_chrome)
- Лимит запросов (vse_guestiplog_combo_rate_limit):
настраиваемые count и window (по умолчанию 30 / 60 сек)
7. БЛОКИРОВКА ПОДСЕТИ /24 (subnet_block)
--------------------------------------------------------------------------------
Включается опцией «Блокировка всей подсети IP адреса».
Алгоритм (только IPv4):
1. IP приводится к подсети x.x.x.0/24.
2. В окне времени (5 / 15 / 30 минут — настраивается) считаются уникальные
IP гостей из этой подсети.
3. Если уникальных IP > 5 — блокируется вся подсеть /24.
4. Срок блокировки: 7 / 30 / 90 / 180 дней или навсегда.
5. Данные хранятся в subnet_block.json с файловой блокировкой.
6. IP из белого списка и локальные не учитываются и не блокируются.
7. IPv6 не поддерживается для подсетевой блокировки.
При срабатывании в blocked.log: Reason: subnet_block
8. РУЧНАЯ БЛОКИРОВКА IP (ACP)
--------------------------------------------------------------------------------
Страница ACP: «Заблокированные IP адреса».
Возможности:
- Добавить IP (IPv4/IPv6) со сроком: 7 / 30 / 90 / 180 дней / навсегда
- Просмотр таблицы: IP/подсеть, тип, дата начала, дата окончания, срок
- Разблокировка (ручные IP и автоматические подсети)
- Пагинация: 20 записей на страницу
- «Показать всю таблицу» / «Скрыть всю таблицу»
- Поиск по всем записям (не только текущая страница):
* точный IP
* подсеть (95.108.213.0 или 95.108.213.0/24)
* IP внутри заблокированной подсети /24
При нахождении — переход на страницу и подсветка строки.
При отсутствии — модальное окно «IP адрес не найден».
Ограничения:
- Нельзя заблокировать IP из белого списка или локальный адрес.
- Ручной бан действует независимо от включения автоблокировки.
9. ФАЙЛЫ ДАННЫХ
--------------------------------------------------------------------------------
Папка по умолчанию: store/ext/vse/guestiplog/
guests.log — лог визитов гостей
blocked.log — лог блокировок
subnet_block.json — состояние подсетевых блокировок
manual_blocks.json — ручные блокировки из ACP
rate_limit.json — счётчики запросов для rate limit
log_clear.lock — блокировка при автоочистке
Формат строки blocked.log:
[YYYY-MM-DD HH:MM:SS] BLOCKED | Mode: <режим> | Reason: <причина> |
IP: <ip> | URI: <uri> | UA: <user_agent>
Коды причин (Reason):
manual_block — ручной бан из ACP
subnet_block — блокировка подсети /24
restricted_uri — запрещённый URI для гостя
known_bot — известный бот по User-Agent
fake_chrome — поддельный Chrome 60–79
suspicious_ua — подозрительный User-Agent
rate_limit — превышен лимит запросов
10. АДМИН-ПАНЕЛЬ (ACP)
--------------------------------------------------------------------------------
Модуль: Расширения → Guest IP Log
10.1. Страница «Настройки лога IP гостей» (mode: settings)
Основные настройки:
- Включить/выключить логирование
- Папка для лог-файла (относительный путь)
- Режим записи: один раз за сессию / каждый запрос
- Статус текущего лога (путь, размер)
Автоочистка:
- Включить автоочистку
- Интервал в часах (1–168)
- Очищать guests.log / blocked.log
- Дата последней автоочистки
Блокировка ботов:
- Включить блокировку
- Режим: мягкий / жёсткий / комбо
- Белый список IP
- Блокировка подсети /24 (окно и срок)
- Доп. настройки комбо-режима (подозрительный UA, fake Chrome, rate limit)
Просмотр логов:
- Модальное окно с пагинацией (150 строк на страницу)
- Кнопки «Скачать» и «Закрыть»
- Скачивание guests.log и blocked.log
10.2. Страница «Заблокированные IP адреса» (mode: blocked)
См. раздел 8.
11. НАСТРОЙКИ В БАЗЕ ДАННЫХ (config)
--------------------------------------------------------------------------------
vse_guestiplog_enabled — логирование вкл/выкл
vse_guestiplog_log_path — путь к папке логов
vse_guestiplog_log_every_request — каждый запрос / раз за сессию
vse_guestiplog_log_auto_clear — автоочистка
vse_guestiplog_log_auto_clear_hours — интервал автоочистки (часы)
vse_guestiplog_log_auto_clear_guests — очищать guests.log
vse_guestiplog_log_auto_clear_blocked — очищать blocked.log
vse_guestiplog_log_auto_clear_last — timestamp последней очистки
vse_guestiplog_block_enabled — автоблокировка вкл/выкл
vse_guestiplog_block_mode — 1=мягкий, 2=жёсткий, 3=комбо
vse_guestiplog_block_subnet — блокировка подсети
vse_guestiplog_block_subnet_window — окно подсчёта (5/15/30 мин)
vse_guestiplog_block_subnet_duration — срок блока подсети (дни)
vse_guestiplog_block_ip_whitelist — белый список IP
vse_guestiplog_combo_suspicious_ua — комбо: подозрительный UA
vse_guestiplog_combo_fake_chrome — комбо: fake Chrome
vse_guestiplog_combo_rate_limit — комбо: rate limit
vse_guestiplog_combo_rate_limit_count — макс. запросов
vse_guestiplog_combo_rate_limit_window — окно в секундах
12. СТРУКТУРА РАСШИРЕНИЯ
--------------------------------------------------------------------------------
ext/vse/guestiplog/
composer.json — метаданные, version-check
ext.php — проверка версии phpBB
config/services.yml — DI-контейнер
event/listener.php — обработчик core.user_setup_after
service/
guest_ip_logger.php — логирование и автоочистка
bot_blocker.php — блокировка ботов
acp/
guestiplog_info.php — регистрация модулей ACP
guestiplog_module.php — логика ACP
adm/style/
acp_guestiplog.html — шаблон настроек
acp_guestiplog.js/css — просмотр логов в модалке
acp_guestiplog_blocked.html/js/css — страница блокировок
language/ru/, language/en/ — языковые строки
migrations/ — миграции БД и модулей
13. СХЕМА АЛГОРИТМА (КРАТКО)
--------------------------------------------------------------------------------
Запрос на форум
|
v
[Cron / Install / ACP?] ---> да ---> выход
| нет
v
[Автоочистка логов]
|
v
[Авторизован?] -----------> да ---> выход (без блокировки и лога гостя)
| нет (гость)
v
[Бот phpBB?] --------------> да ---> выход
| нет
v
+---------------------------+
| check_and_block(IP) |
| 1. Whitelist / local IP |---> пропуск
| 2. Payment callback |---> пропуск
| 3. SEO / search bots |---> пропуск
| 4. Manual ban |---> 403
| 5. Auto-block off? |---> пропуск
| 6. Subnet /24 block |---> 403
| 7. Restricted URI |---> 403
| 8. Known bots (soft) |---> 403
| 9. Mode: hard/combo rules |---> 403 или пропуск
+---------------------------+
|
v (не заблокирован)
[Логирование включено?] ---> нет ---> конец
| да
v
[Режим: каждый запрос ИЛИ новая сессия?]
|
v
Запись в guests.log
14. УСТАНОВКА И ОБНОВЛЕНИЕ
--------------------------------------------------------------------------------
1. Скопировать папку ext/vse/guestiplog на сервер.
2. В ACP: Пользователи и группы → Управление расширениями → включить
«Guest IP Log».
3. После обновления — очистить кэш phpBB (шаблоны + язык).
4. При добавлении новых модулей ACP может потребоваться
отключить/включить расширение для применения миграций.
5. Убедиться, что папка логов доступна для записи веб-сервером.
15. БЕЗОПАСНОСТЬ
--------------------------------------------------------------------------------
- Скачивание и просмотр логов в ACP защищены link hash.
- Путь к логам валидируется (без .., без абсолютных путей).
- resolve_log_file() проверяет, что файл находится внутри папки логов.
- Файлы JSON (блокировки, rate limit) используют flock() при записи.
================================================================================
Конец документа. Версия описания соответствует расширению v1.2.5.
================================================================================
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Мудрость заключается не в том, что бы не делать ошибки, а уметь их исправлять вовремя!
-
MasterX
- phpBB 1.4.4
- Сообщения: 170
- Стаж: 6 лет 6 месяцев
- Благодарил (а): 24 раза
- Поблагодарили: 19 раз
Re: Атака китайских ботов
смысла бана подсетей больше нет. Это полгода назад работало, сейчас это бесполезно. Вы форум просто лишаете посетителей..
Тема печально живая, значит решения готового как бы нет.
У вас насколько я понимаю крупный форум, вы знаете движок, просветили бы страждущих..
так а что мешает выкатить нормальную инструкцию, не все ж программеры/админы 146 уровня.Siava писал(а): 30.08.2026 2:25Этой теме уже лет 15 как) только надо довольно тщательно настроить всё, чтобы не было проблем с авторизацией/выкидыванием или перехватом чужих сессий. Вашу инструкцию ИИ писал что ли? Там есть косяк как минимум в этом:MasterX писал(а): 29.08.2026 15:31 Настройка fastcgi_cache в Nginx позволяет отдавать готовый HTML-код страниц из оперативной памяти или дискового кэшаДело в том, что в phpbb дофига чего отдаётся с GET-параметрами. Взять любую тему хотя бы. В общем полностью таким инструкциям доверяться не стоит.MasterX писал(а): 29.08.2026 15:31 # 2. Не кэшируем URL с GET-параметрами (поиск, служебные действия)
if ($query_string != "") {
set $no_cache 1;
}
Тема печально живая, значит решения готового как бы нет.
У вас насколько я понимаю крупный форум, вы знаете движок, просветили бы страждущих..
-
Kuskow
- phpBB 2.0.5
- Сообщения: 498
- Стаж: 10 лет 3 месяца
- Откуда: 🇰🇿 Караганда
- Благодарил (а): 29 раз
- Поблагодарили: 47 раз
Re: Атака китайских ботов
Я так и написал неделю назад:
Kuskow писал(а): 26.08.2026 6:44Я полностью отказался от блокировки по IP-адресам. Схема себя не оправдала, косяков больше, чем пользы.
Мои разработки в phpBB: php-антибот, phpBB cache, robots.txt, DiscussionForumPosting, Вставка эмодзи.

