Убираем 503 и блокируем баблософт
Заметил, что последние несколько дней страницы моего сайта upread.ru стали медленнее, чем обычно открываться. А иногда даже выдавать ошибку 503 (503 Service Temporarily Unavailable). Это совсем нехорошо, поэтому пришлось разобраться.
Ошибка недоступности службы 503 - это код состояния HTTP-ответа, указывающий, что сервер временно не может обработать запрос. Это может быть связано с тем, что сервер перегружен или не работает для обслуживания. В любом случае это именно проблема сервера, а не вашего браузера.
Сначала я решил написать в техподдержку. Возможно, что это у них что-то с серверами, тем более, что некоторое время назад действительно были проблемы на их стороне. Однако, в техподдержке не подтвердили ведущиеся работы или какие-то проблемы у них и посоветовали поработать с сайтом; в частности включить прямую отдачу статики (картинок, стилей).
В плане статики и прочего мой блог уже давно оптимизирован, так что я решил не копать в этом направлении. Но надо же куда-то копать? Первым делом смотрим на посещаемость – если она резко увеличилась, то дело может быть в этом. Сервер не успевает обработать запросы и просит иногда подождать. В данном случае посещаемость моего блога не изменилась – если судить по статистике.
Но кроме статистики и реальных посетителей есть и боты. У меня уже довольно давно заблокированы разные боты от некоторых ненужных сеошных серверов (по названию), но может быть еще кто-то появился? Или какой-то поисковик стал задалбывать?
Смотрим логи сервера и находим переходы с каким-то непонятным реферером ip.bablosoft.com. Строчки типа таких:
upread.ru 213.234.214.189 - - [04/May/2020:08:00:03 +0300] "POST /random_site.php HTTP/1.1" 200 10663 "http://ip.bablosoft.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML like Gecko) Chrome/23.0.1271.95 Safari/537.11" "-" 185.72.146.140 0.413Причем этот баблософт – больше 164 тысяч обращений к серверу за сутки! Однако, немало. Если перейти к данному поддомену, то он покажет ваш ip. Адрес на моем сервере random_site.php – это просто сервис генерации случайного сайта. Не знаю, зачем уж баблософту понадобилось столько переходов, вполне возможно, что он даже и не при чем, но напрашивается блокировка по рефереру.
Сделать блокировку по рефереру несложно. В моем случае просто в корневой файл .htaccess добавляем пару строк:
RewriteCond %{HTTP_REFERER} bablosoft\.com [NC] RewriteRule .* – [F]Проверить можно, например, так. В браузере FF кликаем правой кнопкой мыши на странице нужного сайта, выбираем «исследовать элемент», переходим на вкладку сеть, выбираем нужный запрос и нажимаем «Изменить и снова отправить». Здесь меняем в заголовке строку реферер и отправляем запрос:
Ответ будет вот такой:
В логах после этого должны появиться подобные строчки:
upread.ru 217.66.156.10 - - [05/May/2020:07:00:44 +0300] "GET /blog/new HTTP/2.0" 403 228 "http://ip.bablosoft.com/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0" "-" 185.72.146.140 0.002Последнее число (0.002) – это время, которое понадобилось для обработки запроса и отдачи его серверу. Оно в 200 раз меньше, чем 0.413 – обычный ответ. Кроме этого, в ответ мы ничего не отдаем пауку, так что он должен отстать со временем.
Так и произошло. Уже не следующий день в логах баблософта не было, а сервер сайта стал функционировать без проблем.
Стоит отметить, что блокировки по чему бы то ни было (ip, реферерам, юзер агенту и тд) стоит осуществлять с особой осторожностью. Все эти параметры (включая ip-адрес) меняются и подделываются не так уж и сложно. В моем случае вероятность того, что будут реальные переходы с данным реферером стремится к нулю и ей можно пренебречь, но у вас ситуация может быть иная.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.