Проверка доступности страниц сайта

Ниже пойдёт речь об использовании парсера sitemap.xml для проверки доступности страниц сайта. О том, что это за парсер и как его установить есть отдельные статьи.

Парсер умеет проверять доступность страниц, которые указаны в файле sitemap.xml. Для того чтобы начать проверку введите:
./sp check website.url,
где website.url — это адрес сайта вместе с протоколом. Например: https://example.com.

Скрипт обратится к каждой странице из sitemap.xml и проверит её HTTP-код ответа. Парсер использует HEAD запросы, чтобы уменьшить нагрузку на сеть. Но если веб-сервер сайта не поддерживает HEAD, то парсер будет использовать GET запросы.

Результат работы скрипта можно наблюдать сразу же в консоли. Выглядит он так:
4130/5757 =================>----- ok: 3143 301: 978 500: 1 ERR: 68

Вначале показано число проверенных ссылок и общее число проверяемых, а также индикатор прогресса. После этого идёт список разных HTTP-кодов ответа и количество страниц с таким кодом.
ok: 3143 — 3141 страницы доступны
301: 978 — 978 страниц вернули HTTP-код 301
500: 1 — 1 страница вернула HTTP-код 500
ERR: 68 — 68 вызвали ошибку cUrl, что может означать, что ссылки записаны в неправильном формате.

Информация о том, какая именно страница какой код вернула, сохранится в таблице check в базе данных {DOMAIN_NAME}.sqlite3 в папке reports. Доступ к этим данным можно получить используя консольную программу sqlite3.

Поиск «битых» ссылок на сайте

Ниже пойдёт речь об использовании парсера sitemap.xml для поиска «битых» ссылок на страницах сайта. О том, что это за парсер и как его установить есть отдельные статьи.

Поиск и проверка ссылок запускается командой:
./sp links website.url,
, где website.url — это адрес сайта вместе с протоколом. Например: https://example.com.

Первым делом скрипт обратится к каждой странице из sitemap.xml и соберёт с них все ссылки. При этом скрипт даст информацию о доступности каждой проверенной страницы.

После этого парсер удалит из полученного списка ссылки на якоря (#name), ссылки с протоколом tel: и mailto:, все повторяющиеся ссылки и ссылки, которые присутствуют в sitemap.xml. Для каждой ссылки из очищенного таким образом списка, будет получен HTTP-код ответа.

Результат работы скрипта можно наблюдать сразу же в консоли. Выглядит он так:
4130/5757 =================>----- ok: 3143 301: 978 500: 1 ERR: 68

Вначале показано число проверенных ссылок и общее число проверяемых, а также индикатор прогресса. После этого идёт список разных HTTP-кодов ответа и количество страниц с таким кодом.
ok: 3143 — 3141 страницы доступны
301: 978 — 978 страниц вернули HTTP-код 301
500: 1 — 1 страница вернула HTTP-код 500
ERR: 68 — 68 вызвали ошибку cUrl, что может означать, что ссылки записаны в неправильном формате.

Информация о том, какая именно страница какой код вернула сохранится в таблицах check и links в базе данных {DOMAIN_NAME}.sqlite3 в папке reports. Доступ к этим данным можно получить используя консольную программу sqlite3.

Парсер Sitemap.xml

При разработке и поддержке сайтов часто пригождается инструмент, который может пройтись по всем страницам сайта и выполнить какое-то действие с каждой. Это может быть проверка доступности страниц, проверка вёрстки страниц в валидаторе, проверка скорости ответа и прочее. Особенно важен такой инструмент для сайтов с большим количеством страниц, где ручная проверка невозможна.

Для своей работы я разработал такой инструмент. Он представляет из себя скрипт, который вызывается из консоли, проходится по всем страницам сайта и собирает о них данные в базу данных Sqlite. Список страниц сайта скрипт получает из файла sitemap.xml, который есть на каждом созданном мной сайте. Так как на некоторых сайтах могут быть тысячи разных страниц, то скрипт умеет проходить их в несколько паралельных потоков, что существенно ускоряет получение результатов.

Инструмент имеет две основные функции:

  1. проверяет HTTP-код ответа для каждой страницы сайта. Это нужно, чтобы удостоверится, что все страницы сайта работают;
  2. ищет «битые» ссылки. Собирает из кода каждой страницы сайта все ссылки и проверяет их HTTP-код ответа.

Для использования скрипта нужен установленный PHP 7 с расширениями cUrl и sqlite 3. Скрипт поддерживает только цельный sitemap.xml. Инструкция по установке скрипта находится на отдельной странице.

Репозиторий парсера sitemap.xml выложен на GitHub.

Установка парсера sitemap.xml

На этой странице представлена инструкция по установке парсера sitemap.xml. О том, что это такое и зачем он нужен можно прочитать на отдельной странице.

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

Пошаговая инструкция (все команды выполняются из командной строки):

  1. клонируйте репозиторий:
    git clone https://github.com/cimmwolf/sitemap-parser.git;
  2. перейдите в папку со скриптом:
    cd sitemap-parser;
  3. чтобы получить список команд, введите:
    ./sp help

Если вы запускаете скрипт в ОС Windows, то лучше это делать из Git bush, так как дочерние процессы следят за тем, выполняется ли главный процесс с помощью Linux-команд. Иначе при остановке основного процесса, дочерние продолжат работать и собирать данные, что может привести к конфликтам при повторном запуске команды.

Настройка среды разработки на PHP в Windows

Для полноценной разработки на PHP понадобятся: виртуальная среда, менеджеры зависимостей, система контроля версий, система сборки приложений, система развёртки приложений, хороший редактор и, конечно, сам PHP. Всё это без особого труда устанавливается и работает под Windows.

У меня в блоге есть инструкции по установке каждого из компонентов. Цель этого поста собрать все ссылки на одной странице. Для удобства все ссылки открываются в новом окне.

Начнём непосредственно с PHP:
— Как установить PHP 7 в Windows 10.

Теперь установим систему контроля версий. Я использую Git. Инструкции по установке в этом посте:
— Установка и настройка Git в Windows.

После Git нам понадобятся менеджеры зависимостей NPM, Bower и Composer:
— Установка NodeJS и NPM в Windows.
— Установка Bower в Windows.
— Установка Composer в Windows.

Теперь пришла пора установить виртуальную среду Vagrant:
— Как установить Vagrant в Windows.

Система сборки приложений Gulp:
— Установка Gulp в Windows.

Система развёртывания Capistrano:
— Установка Capistrano в Windows.

Все необходимые компоненты установлены. Осталось только выбрать хороший редактор кода. Я использую PHPStorm, так как он поддерживает все инструменты, которые перечислены в этом посте и ежемесячная подписка на эту программу стоит что-то около $10. Но, конечно, можно установить любой редактор на свой вкус.

На установку всех компонентов понадобится примерно час времени.

Как установить Vagrant в Windows

Для установки Vagrant в Windows предварительно понадобится установить одного из провайдеров виртуальной среды. Я использую VirtualBox от Oracle. Установка обеих программ не составляет абсолютно никакого труда и требует только вовремя нажимать кнопку Next.

Ссылки на страницы откуда можно скачать установщики:

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

Установка Capistrano в Windows

Для того, чтобы установить Capistrano на Windows в первую очередь нужно установить язык программирования Ruby. В этом нет ничего сложного, для установки языка в Windows существует специальный проект rubyinstaller.org. Нужно лишь скачать установщик и несколько раз нажать кнопку Next. Не забудьте только поставить галочку напротив пункта о добавлении Ruby в PATH Windows
установка ruby на windows

Это позволит запускать Capistrano из любого каталога, что очень удобно.

После установки Ruby настало время установить Capistrano. Откройте командную строку (если она была открыта, до установки Ruby, то закройте и откройте её снова, чтобы обновить данные из PATH) и введите команду:
gem install capistrano
Эта команда установит Capistrano в систему и в дальнейшем его можно будет запускать командой cap.

Как видите, всё элементарно.

Установка Composer в Windows

У пакетного менеджера Composer есть специальный установщик для Windows. Скачать его можно с официального сайта. Сама установка элементарна и займёт не больше 5 минут, но есть две особенности.

Во первых, перед установкой Composer нужно установить PHP. О том как это сделать у меня есть отдельный пост. Во вторых, после установки Composer нужно передать ему специальный GitHub Tokken для того, чтобы обойти ограничени GitHub’а на количество обращений по API.

Но начнём с установки. После скачивания и запуска установщика он попросит указать путь к PHP. Если вы добавили PHP в PATH, как указано у меня в посте, то Composer сам определит этоть путь. Если нет, то вам нужно указать этот путь самостоятельно.
Установка Composer

После этого нужно ещё несколько раз нажать Next и Composer будет установлен в систему и доступен через командную строку из любого каталога.

В процессе работы с Composer программа в какой-то момент сама предложит вам ввести GitHub Tokken и даст ссылку на его создание. Но можно не ждать этого и сделать всё самому. Создать токен можно на специальной странице GitHub’а. Для того, что передать токен Composer’у нужно ввести в командной строке команду
composer config -g github-oauth.github.com <token>

Всё, на этом Composer установлен и готов к использованию.

Как установить PHP 7 в Windows 10

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

Для среды разработки я использую PHP 7, с тем расчётом, чтобы мой код был готов к тому моменту, как PHP 7 можно будет установить на боевой сервер. Для того, чтобы установить PHP 7 в операционной системе Windows понадобится программа Visual C++ Redistributable for Visual Studio 2015, которую можно скачать с официального сайта Майкрософта. Установка этой программы не содержит никаких трудностей, нужно просто нажимать кнопку «Далее».

После установки Visual C++ Redistributable скачиваем архив PHP 7 для Windows (VC14 Non Thread Safe x64 или x86 в зависимости от разрядности системы) c официального сайта PHP. В архиве нет инсталлятора, его просто нужно распаковать в папку где-нибудь на диске. В пути к этой папке не должно быть пробелов и русских букв, у меня это просто C:\PHP.

После распаковки нужно добавить PHP в системный PATH для того, чтобы можно было запускать PHP из любого каталога:

  1. нажимаем win+x и переходим в настройки System;
  2. переходим в Advanced system settings;
    Добавляем PHP в PATH шаг 1
  3. выбираем Environment Variables;
    Добавляем PHP в PATH шаг 2
  4. выбираем переменну PATH и нажимаем кнопку Edit;
    Добавляем PHP в PATH шаг 3
  5. нажимаем кнопку New и вводим адрес каталога с распакованным PHP, например C:\PHP;
    Добавляем PHP в PATH шаг 4
  6. нажимаем кнопку Ok.

Теперь нужно настроить PHP для работы:

  1. переименовываем файл php.ini-production в php.ini;
  2. раскоментируем (убираем знак ;) перед строчками:
    • extension=php_curl.dll;
    • extension=php_gd2.dll;
    • extension=php_mbstring.dll;
    • extension=php_openssl.dll;
    • extension=php_pdo_mysql.dll;
    • extension=php_pdo_sqlite.dll;
    • extension=php_sqlite3.dll.

Всё, PHP 7 установлен в системе и готов к использованию.

Установка Gulp в Windows

Для установки менеджера задача Gulp предварительно нужно установить NPM и NodeJS.

После этого введите в командной строке:
npm install gulp -g

Параметр -g нужен для того, чтобы установить Gulp глобально и иметь возможность запускать его из любого каталога.