Как закрыть доступ к сайту WordPress для парсера

Как закрыть доступ к сайту WordPress для парсера

Как закрыть доступ к сайту WordPress для парсера

Добрый день товарищи, те кто часто посещает этот ресурс наверно заметили, что в пятницу и субботу он очень тормозил и периодически выскакивали ошибки, что страница не найдена или не может быть отображена, при обновлении ее в браузере она вяленько открывалась. Как я потом выяснил меня парсили, создавая тем самым мега нагрузку на сайт из за большого количества подключений, сегодня расскажу как закрыть доступ к сайту WordPress для парсера.

Что такое парсинг сайтов

Для многих, людей особенно, кто только начал заниматься сайтами и блогингом, словосочетание парсинг сайтов ничего не говорит. Если по простому то парсеры, это люди, которые с помощью специального программного обеспечения копируют содержимое вашего сайта к себе в базу данных, для дальнейшего использования, по сути такое массовое воровство. Как это происходит, у вас к вашему ресурсу приходит много подключений, от оборзевших ботов отого парсера или компании, которые начинают нагибать ваш сайт, тем самым мешая его работе. Они в отличии от добросовестных ботов поисковых систем, совсем не знают меры и им пофигу как это влияет на сайт.

Уважаемые парсеры не будьте редисками и уважайте труд других людей, создайте лучше, что то свое, чем воровать у других

Как выявить парсинг сайтов

Давайте разбираться как выявить парсинг сайтов. Первое, что сразу бросается в глаза это медленная работа сайта. У меня движок сайта на WordPress, в пятницу я как раз дописал статью, о как я поставил виджет youtube для сайта WordPress, как через пол часа у меня появились дикие тормоза, естественно я первым делом подумал, что это из за этой кнопки подписаться. Выключил ее и удалил код, почистил кэш у сайта, и стал смотреть его скорость, эффекта я не увидел особого, все также валились ошибки о недоступности страниц и админка WordPress стала так же отваливаться.

Начал смотреть по сервисам из вне, что именно и за сколько загружается, статью об этом я уже делал (скорость загрузки страницы сайта). Зашел я на свой любимый pingdom и начал смотреть почему тормозит сайт. Большинство компонентов сайта отдавались очень медленно раз в 10 дольше обычного, после этого видя эту картину решил написать своему хостеру mchost.ru.

Я написал в техническую поддержку и попросил посмотреть и проверить почему тормозит сайт и нет ли проблем на их стороне. Через пару минут, мне ответили, что с их оборудованием и все хорошо, а вот мой сайт тормозит из за большой нагрузки на него, очень много подключений и посоветовали посмотреть логи сайта и дали еще потом очень полезный инструмент статистики по трафику и подключениям.

Круто, то что меня не отключили если мой сайт превышает нагрузку, как это делают многие хостеры, так что все советую mchost.ru. Если захотите на него перейти, то чуть выше ссылка на статью про него, в ней есть промокод на 3 месяца бесплатного использования.

Вот моя картина в пятницу, кто то с 14 часов как начал нагибать мой сайт, что аж до 130 процентов подскакивала нагрузка, хотя для моего сайта с посещаемостью более 3500 в день, норма это 9-14 процентов.

Тормозит блог на wordpress

Так же я обратил внимание в webmaster Яндекса, у меня увеличилось количество отказов, так как люди не могли достучаться до нужных страниц сайта и вырос показатель Глубина просмотра, который показывает сколько страниц в среднем за одно посещение открывает пользователь. Данный параметр так же вырос в разы. Еще насторожило, что самыми посещаемыми страницами в этот день стали рубрики, по которым бот парсера и бегал.

Смотрим логи сервера

У mchost.ru это выглядит вот так, вы переходите в пункт Управление услугами, выбираете нужный сайт и жмете значок Статистика и логи. У вас логично, что на вашем хостинге будет иначе, но тут главное понять принцип.

почему тормозит сайт

Вам нужно скачать файл access.log именно в нем записаны все подключения к вашему ресурсу, их анализ поможет понять почему тормозит сайт. Так же лог файлы можно достать через ftp сервер, как это сделать я описывал (Как зайти на ftp сервер хостинга)

почему тормозит сайт-2

Получившийся файл текстового формата, но весит очень много, может под 100 мб, обычный блокнот Windows его не осилит, нам поможет бесплатный редактор разработчика Notepad++.

Далее щелкаем правым кликом по скачанному файлу и выбираем Edit with Notepad++

почему тормозит сайт-3

В итоге вы увидите вот такой гигантский список запросов, слева у вас будут ip адреса, а справа, то куда они обращались, очень сложно читать. Как я рассказывал выше, я подсмотрел в кабинете веб мастера, что возрос интерес к к категориям сайта, для удобства я все содержимое файла скопирую и вставлю в MS Exel 2013. В нем я нажимаю потом клавиши CTRL+F, для открытия формы поиска и ввожу например слово get, нажимаю кнопку найти все, а далее фильтрую по столбцу Значение, тоже самое потом можно сделать со словом catagory, и в итоге после фильтрации вы получите упорядоченный список по ip адресам, посмотреть теперь можно каких ip больше всего.

почему тормозит сайт-4

В итоге я нашел подлеца и его ip адрес, именно из за него у меня тормозил мой сайт.

почему тормозит сайт-5

Как закрыть доступ к сайту

Теперь осталось запретить ему доступ, к сожалению на моем тарифе хостинга нет услуги от таких вещей с ограничением количества соединений и дальнейшим банном, да и не брут форс это был, от которого бы помог плагин Login LockDown. Он бы при заданном количестве попыток, запрещал бы доступ на нужное вам время. Я поступил проще забанил его через файл .htaccess, который есть у каждого сайта.

Назначение файла .htaccess, это прописывать различные настройки и указания для сайта и сервисов, типа php как и что обрабатывать, что запретить, а что разрешить.

Да мне перед, тем как заблокировать данный ip было интересно, кто это поисковый бот али нет, для этого заходим на сайт ping.eu и в полеReverse lookup вводим ваш ip, в итоге смотрим кто это, в моем случае провайдер, значит какой то частник.

запрет htaccess

После чего идем на сайт 2ip.ru и там уже по ip получаем информацию, что это товарищ из красноярска

запрет htaccess-2

Так же поймал и нижегородца.

запрет htaccess-3

Не стал париться по мелочам и в файле сделал запрет htaccess, на под сети. Так как провайдер при новом пере подключении мог им дать другой ip из этой же сети, а так банить по одному адресу долго.

В итоге я добавил вот такую запись в файл htaccess, зачем они херней такой занимаются я не знаю, лучше бы что полезное сделали.

Order allow,deny
Allow from All
Deny from 93.120.142.

Order allow,deny
Allow from All
Deny from 89.109.36.

Я бы советовал любые изменения в файл .htaccess добавлять после #END WordPress

После чего стал смотреть график нагрузки на сайт, в итоге нагрузка сразу упала до привычных 9-14 процентов.

Тормозит блог на wordpress-2

Да пока выяснял, что еще можно подкрутить, выяснил, что перейдя на версию php 7 с php5 я выиграю в производительности, так как php 7 лучше и быстрее работает с подключениями.

тест php 7

тест php 7-2

Так, что все к лучшему, на тестовом сайте я обкатал, скорость загрузки увеличилась, во все нужно находить плюсы.

Как защититься от ddos на WordPress

Тут небольшое но, должен быть выделенный сервер или возможность на хостинге иметь модуль libapache2-mod-evasive.

Устанавливаем его командой:

sudo apt-get install libapache2-mod-evasive

Модуль установлен, теперь нужно создать файл mod-evasive.confв папке /etc/apache2/mods-available/ и вписываем в него такой код:

<IfModule mod_evasive20.c>
DOSHashTableSize 4096
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>

Обозначение параметров:

  • DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
  • DOSPageCount: число запросов к одной странице от одного и того же IP в течение указанного интервала времени.
  • DOSSiteCount: число запросов ко всем страницам домена, если поступило более 50-ти запросов с одного IP на разные страницы домена — тогда такой IP будет заблокирован.
  • DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
  • DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
  • DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
  • DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован. DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется.
  • DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)

После этого перезапускаем сервер apache:

sudo service apache2 restart

Организуем ddos атаку на свой сайт и проверим работы нашей защиты, У вас должна быть где, то установлена Linux система, например на флешке.

Создаем файл типа ddos.pl в домашней папке и вписываем туда такой код:

#!/usr/bin/perl

# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "pyatilistnik.org:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0nn";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}

Теперь делаем файл исполняемым, чтобы его можно было запустить:

chmod 777 ddos.pl

В код этого файла я вписал один свой блог, чтобы на нем проверить работу скрипта. Запускаем его командой и смотрим, тормозит ли его сайт из за этих подключений:

./ddos.pl

Как закрыть доступ к сайту WordPress для парсера

Видим, что его сервер спокойно пропускает наши множественные запросы, а это плохо. Теперь впишу свой сайт в код скрипта:

почему тормозит сайт

Видим, что наша защита от ddos на WordPress отработала и забанила меня на некоторое время.

Список поисковых ботов:

Делюсь еще списком ботов которых можно запретить в файле robots.txr, но тут двойные грабли можно создать нагрузку на apache, нужно смотреть.

  • User-agent: aipbot
    Disallow: /
  • User-agent: ia_archiver
    Disallow: /
  • User-agent: AhrefsBot
    Disallow: /
  • User-agent: Alexibot
    Disallow: /
  • User-agent: Aqua_Products
    Disallow: /
  • User-agent: asterias
    Disallow: /
  • User-agent: b2w/0.1
    Disallow: /
  • User-agent: BackDoorBot/1.0
    Disallow: /
  • User-agent: becomebot
    Disallow: /
  • User-agent: BlowFish/1.0
    Disallow: /
  • User-agent: Bookmark search tool
    Disallow: /
  • User-agent: BotALot
    Disallow: /
  • User-agent: BotRightHere
    Disallow: /
  • User-agent: BuiltBotTough
    Disallow: /
  • User-agent: Bullseye/1.0
    Disallow: /
  • User-agent: BunnySlippers
    Disallow: /
  • User-agent: CheeseBot
    Disallow: /
  • User-agent: CherryPicker
    Disallow: /
  • User-agent: CherryPickerElite/1.0
    Disallow: /
  • User-agent: CherryPickerSE/1.0
    Disallow: /
  • User-agent: Copernic
    Disallow: /
  • User-agent: CopyRightCheck
    Disallow: /
  • User-agent: cosmos
    Disallow: /
  • User-agent: Crescent
    Disallow: /
  • User-agent: Crescent Internet ToolPak HTTP OLE Control v.1.0
    Disallow: /
  • User-agent: DittoSpyder
    Disallow: /
  • User-agent: dotbot
    Disallow: /
  • User-agent: EmailCollector
    Disallow: /
  • User-agent: EmailSiphon
    Disallow: /
  • User-agent: EmailWolf
    Disallow: /
  • User-agent: EroCrawler
    Disallow: /
  • User-agent: exabot
    Disallow: /
  • User-agent: ExtractorPro
    Disallow: /
  • User-agent: FairAd Client
    Disallow: /
  • User-agent: Fasterfox
    Disallow: /
  • User-agent: Flaming AttackBot
    Disallow: /
  • User-agent: Foobot
    Disallow: /
  • User-agent: gigabot
    Disallow: /
  • User-agent: Gaisbot
    Disallow: /
  • User-agent: GetRight/4.2
    Disallow: /
  • User-agent: Harvest/1.5
    Disallow: /
  • User-agent: hloader
    Disallow: /
  • User-agent: httplib
    Disallow: /
  • User-agent: HTTrack 3.0
    Disallow: /
  • User-agent: humanlinks
    Disallow: /
  • User-agent: ia_archiver
    Disallow: /
  • User-agent: IconSurf
    Disallow: /
    Disallow: /favicon.ico
  • User-agent: InfoNaviRobot
    Disallow: /
  • User-agent: Iron33/1.0.2
    Disallow: /
  • User-agent: JennyBot
    Disallow: /
  • User-agent: Kenjin Spider
    Disallow: /
  • User-agent: Keyword Density/0.9
    Disallow: /
  • User-agent: larbin
    Disallow: /
  • User-agent: LexiBot
    Disallow: /
  • User-agent: libWeb/clsHTTP
    Disallow: /
  • User-agent: LinkextractorPro
    Disallow: /
  • User-agent: LinkScan/8.1a Unix
    Disallow: /
  • User-agent: LinkWalker
    Disallow: /
  • User-agent: LNSpiderguy
    Disallow: /
  • User-agent: lwp-trivial
    Disallow: /
  • User-agent: lwp-trivial/1.34
    Disallow: /
  • User-agent: Mata Hari
    Disallow: /
  • User-agent: Microsoft URL Control
    Disallow: /
  • User-agent: Microsoft URL Control — 5.01.4511
    Disallow: /
  • User-agent: Microsoft URL Control — 6.00.8169
    Disallow: /
  • User-agent: MJ12bot
    Disallow: /
  • User-agent: MIIxpc
    Disallow: /
  • User-agent: MIIxpc/4.2
    Disallow: /
  • User-agent: Mister PiX
    Disallow: /
  • User-agent: moget
    Disallow: /
  • User-agent: moget/2.1
    Disallow: /
  • User-agent: Mozilla/4.0 (compatible; BullsEye; Windows 95)
    Disallow: /
  • User-agent: MSIECrawler
    Disallow: /
  • User-agent: NetAnts
    Disallow: /
  • User-agent: NICErsPRO
    Disallow: /
  • User-agent: Offline Explorer
    Disallow: /
  • User-agent: Openbot
    Disallow: /
  • User-agent: Openfind
    Disallow: /
  • User-agent: Openfind data gatherer
    Disallow: /
  • User-agent: Oracle Ultra Search
    Disallow: /
  • User-agent: PerMan
    Disallow: /
  • User-agent: ProPowerBot/2.14
    Disallow: /
  • User-agent: ProWebWalker
    Disallow: /
  • User-agent: psbot
    Disallow: /
  • User-agent: Python-urllib
    Disallow: /
  • User-agent: QueryN Metasearch
    Disallow: /
  • User-agent: Radiation Retriever 1.1
    Disallow: /
  • User-agent: RepoMonkey
    Disallow: /
  • User-agent: RepoMonkey Bait & Tackle/v1.01
    Disallow: /
  • User-agent: RMA
    Disallow: /
  • User-agent: rogerbot
    disallow: /
  • User-agent: searchpreview
    Disallow: /
  • User-agent: SiteSnagger
    Disallow: /
  • User-agent: SpankBot
    Disallow: /
  • User-agent: spanner
    Disallow: /
  • User-agent: SurveyBot
    Disallow: /
  • User-agent: suzuran
    Disallow: /
  • User-agent: Szukacz/1.4
    Disallow: /
  • User-agent: Teleport
    Disallow: /
  • User-agent: TeleportPro
    Disallow: /
  • User-agent: Telesoft
    Disallow: /
  • User-agent: The Intraformant
    Disallow: /
  • User-agent: TheNomad
    Disallow: /
  • User-agent: TightTwatBot
    Disallow: /
  • User-agent: toCrawl/UrlDispatcher
    Disallow: /
  • User-agent: True_Robot
    Disallow: /
  • User-agent: True_Robot/1.0
    Disallow: /
  • User-agent: turingos
    Disallow: /
  • User-agent: TurnitinBot
    Disallow: /
  • User-agent: TurnitinBot/1.5
    Disallow: /
  • User-agent: URL Control
    Disallow: /
  • User-agent: URL_Spider_Pro
    Disallow: /
  • User-agent: URLy Warning
    Disallow: /
  • User-agent: VCI
    Disallow: /
  • User-agent: VCI WebViewer VCI WebViewer Win32
    Disallow: /
  • User-agent: Web Image Collector
    Disallow: /
  • User-agent: WebAuto
    Disallow: /
  • User-agent: WebBandit
    Disallow: /
  • User-agent: WebBandit/3.50
    Disallow: /
  • User-agent: WebCapture 2.0
    Disallow: /
  • User-agent: WebCopier
    Disallow: /
  • User-agent: WebCopier v.2.2
    Disallow: /
  • User-agent: WebCopier v3.2a
    Disallow: /
  • User-agent: WebEnhancer
    Disallow: /
  • User-agent: WebSauger
    Disallow: /
  • User-agent: Website Quester
    Disallow: /
  • User-agent: Webster Pro
    Disallow: /
  • User-agent: WebStripper
    Disallow: /
  • User-agent: WebZip
    Disallow: /
  • User-agent: WebZip
    Disallow: /
  • User-agent: WebZip/4.0
    Disallow: /
  • User-agent: WebZIP/4.21
    Disallow: /
  • User-agent: WebZIP/5.0
    Disallow: /
  • User-agent: Wget
    Disallow: /
  • User-agent: wget
    Disallow: /
  • User-agent: Wget/1.5.3
    Disallow: /
  • User-agent: Wget/1.6
    Disallow: /
  • User-agent: WWW-Collector-E
    Disallow: /
  • User-agent: Xenu’s
    Disallow: /
  • User-agent: Xenu’s Link Sleuth 1.1c
    Disallow: /
  • User-agent: Zeus
    Disallow: /
  • User-agent: Zeus 32297 Webster Pro V2.9 Win32
    Disallow: /
    User-agent: Zeus Link Scout
    Disallow: /

Еще, чтобы вы знали, парсер чаще всего использует статические Ip адреса или купленные прокси, если пару раз так забаните, то он плюнет на ваш сайт и будет парсить кого, то другого так как за прокси и ip адреса он платит денежки, из за вас он не станет докупать еще адресов

Еще также выполните для блога вот такую защиту описанную вот тут (Безопасность wordpress), после этого уже не тормозит сайт.

Да забыл рассказать про отличную статистику у своего хостера mchost.ru. называется он webstat. Первое на, что хочу обратить внимание это Топ 10 хосты, видим ip адреса, кто всех больше делает запросов и кушает трафика, старые знакомые.

почему тормозит сайт-1

Если сайт тормозит из за ботов, то можно посмотреть кто именно и кому принадлежит он.

почему тормозит сайт-2

И прикольная статистика по браузерам и операционным системам, в лидерах Google Chrome и Windows.

почему тормозит сайт-3

Вот такая вот у меня была война в выходные за скорость открытия моего блога, спасибо парсерам за новые знания и хорошую статью. В итоге вы дорогие читатели теперь можете понять почему тормозит сайт.

6 Responses to Как закрыть доступ к сайту WordPress для парсера

  1. Савва:

    Отличная статья, спасибо Иван за пошаговость действий

  2. Влад:

    Хорошая статья!

  3. Иван Семин:

    Добрый день, личный опыт, уверен что многие с таким сталкиваются, но не все знают как это можно оперативно решить

  4. fogodasawehuw:

    Отличная статья, еще раз убеждаюсь, что проблемами с парсерами хостеры не хотят заниматься

  5. Дмитрий:

    Красавчик! Отличная статья! Оч круто! Сайт добавляю в закладки.

  6. Иван Семин:

    Спасибо, Дмитрий, вот решил рассказать свой опят, так как проблема всегда актуальна.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

я в гугл