Создание сайтов. Продвижение сайтов
Автоматизация вашего бизнеса
+7 (916) 721-91-87
Заказать звонок
Проверка ответа сервера

Проверка HTTP ответа сервера

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

Используется библиотека (Q)GumboParser для парсинга HTML5 (c) Google

Для загрузки допустимы как текстовые файлы со списком url типа одна строка - один урл, буффер обмена аналогичного формата, а так же xml файлы формата sitemap как просто список файлов, так и "список списков". Выгрузка осуществляется как в файлы tsv (с раздилителем табуляцией), так и в буффер обмена.

Так же имеется встроенный мини-сканнер сайта. Пока не оттестированный и без возможности прерывания/ограничения скана - будте внимательны на больших сайтах! В окне результата будут отмечены url отдавшие тип контента text/html, и не отмечены другие (например application/*). Добавить в список для сканирования можно только отмеченные - ну или все.

По умолчанию используется 3 потока, при необходимости можно поправить, #define HTTP_MAX_THREADS 3 в mainwindow.h
Но будьте внимательны, можно положить сервер.

В результирующей форме дубли тэгов будут выделены цветом. Проверка дублей - только по соответствующей колонке, то есть h1 по h1, но не по title.

Для запуска бинарников под Windows (ниже) может потребоваться MSVC Runtime 2017 x64 и OpenSSL Win64

Пример сборки (необходим пакет QT5 или QT6):

git clone https://github.com/ighor13/HTTPCodeTester
cd HTTPCodeTester
git submodule update --init --recursive
qmake (или qmake-qt5)
make

При сборке под QT версии 6 и выше потребуется патч двух файлов qgumbonode.h и qgumbonode.cpp внешней библиотеки QGumboNode

Обновление до актуальной текущей версии из исходников:

git pull
make

Загрузки

Просмотр патча

Патч для QGumboParser (Qt 6)

diff -urN a/QGumboParser/qgumbodocument.cpp b/QGumboParser/qgumbodocument.cpp
--- a/QGumboParser/qgumbodocument.cpp
+++ b/QGumboParser/qgumbodocument.cpp
@@ -2,2 +2,3 @@
 #include <QTextCodec>
+#include <QStringList>
 #include "qgumbonode.h"
diff -urN a/QGumboParser/qgumbonode.h b/QGumboParser/qgumbonode.h
--- a/QGumboParser/qgumbonode.h
+++ b/QGumboParser/qgumbonode.h
@@ -5,2 +5,3 @@
 #include <QObject>
+#include <QStringList>
 #include <QVector>
@@ -11,3 +12,3 @@
 
-class QStringList;
+// class QStringList;
 class QGumboNode;
diff -urN a/QGumboParser/qgumbonode.cpp b/QGumboParser/qgumbonode.cpp
--- a/QGumboParser/qgumbonode.cpp
+++ b/QGumboParser/qgumbonode.cpp
@@ -4,2 +4,3 @@
 #include <QDebug>
+#include <QStringList>
 #include "qgumbodocument.h"
@@ -120,9 +121,3 @@
 
-#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
-            const QVector<QStringRef> parts =
-                    value.splitRef(QChar(' '), QString::SkipEmptyParts, Qt::CaseInsensitive);
-#else
-            const QVector<QStringRef> parts =
-                    value.splitRef(QChar(' '), Qt::SkipEmptyParts, Qt::CaseInsensitive);
-#endif
+            auto parts = value.tokenize(QChar(' '));
 
-            for (const QStringRef& part: parts) {
+            for (const auto& part: parts) {
                 if (part.compare(name, Qt::CaseInsensitive) == 0) {