Предыстория
Сижу я значит, залипаю на графики. Да, есть у меня такой фетиш смотреть на графики и диаграммы, особенно когда они растут вверх :) Вижу какие-то невероятные цифры по просмотрам и отказам.

Вот так вот выглядят график посещаемости сайта за месяц (с 19.08.25 по 18.09.25)
Плюс, что интересно, посещаются в основном страницы пагинации. Нет, конечно и другие страницы они тоже посещают, но в меньшей степени, гораздо меньшей степени. Вот график:

Я конечно же забеспокоился. Начал искать причину, ибо наслышан о трафике из Китая. Плюс у меня сайт вообще не адаптирован под Восточную культуру, а про переводы я вообще молчу. И я мог бы пошутить типа:

Но чёт мне не смешно, да и вдруг там действительно реальные Китайцы? Если так, то без обид - просто шутка
Моё расследование, откуда и почему
Сначала, я решил узнать откуда они пришли. Может это Google начал давать такой трафик, или Яндекс. Учитывая дружбу России и Китая я не удивлюсь. А может Baidu до меня добрался? Нет, нет и нет. Всё это прямой трафик и ни один поисковик тут не причём.
И тут может быть несколько вариантов:
- Либо DDos
- Либо кликеры
- Либо парсеры
- Либо копирование контента
Давай разбираться.
DDOS Атака
Есть и DoS атаки, то же самое, но запросы происходят с одной машины. Учитывая то что метрика фиксирует множество различных IP - это скорее DDoS атака, но не совсем
Видишь ли, запросов не так уж много. Их должно быть тысячи, десятки тысяч... в час. Я уверен - это не DDoS атака. На графиках, DDoS-атака может выглядеть как-то так:

Кликеры, или один из видов негативного SEO
Яркими и явными признаками кликеров являются:
- Аномально маленькая либо аномально большая глубина клика
- Короткое время на сайте
- Источником трафика является поисковая система
Самым главным здесь является то, что источником обязательно должна быть поисковая система, иначе это просто надоедливый бот, который засоряет твою статистику. И всё.
У меня же, как ты помнишь, трафик прямой. Да и страницы, которые этот бот смотрит, являются страницами пагинации, то есть те страницы, которые в основном, не участвуют в ранжировании.
Поэтому я не думаю, что это кликер. Не самый умный по крайней мере.
Возможно парсер?
И я наверное не ошибусь если скажу, что это, скорее всего он. Дело в том, что для парсера характерно такое поведение, как любовь к страницам пагинации. Ведь они позволяют отыскать весь контент, который есть на сайте.
Но пару вопросов всё-таки возникает. Как например:
- Почему бы не посмотреть sitemap.xml, если тебе так нужен этот список статей на сайте?
- Зачем так усложнять? Зачем делать ротацию пользовательских агентов, использовать прокси? У меня не такая крутая защита от парсеров
Моё решение
В любом случае это не столь важно, почему кто-то решил натравить кучу ботов на мой сайт. Гораздо важнее, что я буду с этим делать. Буду ли я терпилой и просто терпеть этих ботов или я могу принять некоторые контрмеры, чтобы усложнить ему (тому, кто их на меня натравил) жизнь.
Что я могу сделать:
- Заблокировать целую страну, через .htaccess файл на сервере
- Поменять структуру сайта, чтобы было сложнее парсить контент
- Использовать некую проверку на ботность, то есть добавить капчу, или что-то в этом роде
Ну и так как я спешу минимизировать урон для моего сайта, какой бы он ни был, я решил что просто заблокирую целую страну для посещения моего сайта. Хоть на время.
Блокируем целую страну в htaccess
Перед тем как мы начнём делать вещи, которые способны навредить сайту, разберёмся, что это за файл .htaccess, как он и его директивы работают и почему я(или ты)хочешь это сделать. Хотя бы на время.
Директивы состоят из 3-х частей:
1. Определяющая конструкция
- Order deny,allow - Запретить отвечать всем IP, кроме перечисленных
- Order allow,deny - Разрешить отвечать всем IP, кроме перечисленных
2. Действие
- Denyfrom — запретить(отвечать на запросы) от
- Allow from — разрешить(отвечать на запросы) от
3. Адресс/Диапазон/Бесклассовая адресация
- 1.0.8.0 - Конкретный IP
- 1.0.8 - Будут заблокированы все IP от 1.0.8.0 до 1.0.8.255
- 1.0.8.0/24 - Используя синтаксис бесклассовой адресации, можно гибко узнать нужный тебе диапазон вот так.
В моём конкретном случае, реализация блокировок всех адресов из Китая выглядит вот так:
Нужно дать некоторые пояснения. Так, 1-я строка активирует веб-сервер для Python приложений - Phusion Passenger. Потом, для этого веб-сервера, мы выбираем виртуальное окружение. Но это другая тема для разговора. Давай перейдём к правилам доступа к веб контенту.
- Order allow,deny - разрешаем доступ к веб-рессурсу всем кроме всех нижеперечисленных.
- Allow from all - разрешаем доступ всем.
- Deny from АДРЕСС -запрещаем доступ к ресурсу конкретным адресам.
Можно переиграть и например запретить доступ всем, кроме указанных дальше, например:
Теперь только Китайцы и смогут смотреть мой контент :)
Но Китайских IP, большое множество и как их всех вписать в один файл? Дааа... к этому могу ещё добавить, что их не только много, они меняются и отследить такое количество адресов, а их сотни миллионов, становится непосильной задачей.
В качестве решения предлагают использовать услуги облачных сервисов как CloudFlare. Но я могу предложить немного другие решения. Первое решение довольно быстрое, но временное. Второе дольше в реализации и требует индивидуальной настройки на каждом хостинг провайдере, но зато актуальный список IP-адресов.
А для начала нужно найти соответствующие IP адреса и их диапазоны по странам в которых те находятся. Могу порекомендовать данный сайт, он предоставляет не только удобный способ быстрого копирования адресов, но и ещё позволяет себя парсить, что делает этот сайт очень удобным для кастомных решений вроде моего.
Простой способ: блокировки трафика из определённой странны
На этом сайте ты можешь скачать нужный тебе файл с IP-адресами по странам, после чего скопировать его содержимое прямо в .htaccess файл.
Сохрани файл и перезагрузи веб-сервер. Если всё сделано правильно, для тебя ничего не изменится, но для Китайцев доступ к сайту будет заблокирован. Но ты мог и случайно заблокировать себя и свою страну, вот так это будет выглядеть:

Это если ты случайно заблокировал себя и свою страну
А если в синтаксисе файла .htaccess была допущена ошибка то ты увидишь что-то вроде этого:

Что-то не так на стороне сервера
Хочу заметить, что на моём сайте реализованны собственные ответы с кодами 403(Запрещено) и 500(Ошибка на сервере). При такой блокировке они не отображаются.
Сложный способ: написание кастомного Bash скрипта
Суть данного способа в корне не меняется, только здесь весь процесс автоматизирован. Я напишу Bash-скрипт и создам задачу на его выполнение в начале каждого дня. Скрипт ниже будет:
- Скачивать и обновлять список IP-диапазонов
- Добавлять - Deny from
- Вставлять его в .htaccess файл
Выполнив, например, команду:
Ты заблокируешь весь трафик из Китая. Больше команд и опций ты можешь посмотреть на моём репозитории. Откуда ты и сможешь скачать данный скрипт.
Теперь, чтобы список IP адресов постоянно обновлялся можно создать Cron-задачу, которая будет выполнять скрипт block-country.sh ежедневно, например.
Заключение или результаты
После успешного добавления IP адресов из Китая в htaccess, трафик ожидаемо упал а количество отказов и времени на сайте резко улучшилось. Имеется ввиду среднее время просмотра и средний процент отказов.

Итак, это было воскресенье, я заблокировал Китай в 12:00
Вот такие дела. Неприятно, но то ли ещё будет :) Надеюсь эта статья помогла определить, что у тебя с сайтом, почему вдруг резко на тебя нахлынули китайцы и что с этим можно сделать.