×
Россия +7 (909) 261-97-71

Написание скрипта для просмотра HTTP-заголовков

Россия +7 (909) 261-97-71
Шрифт:
0 8456
Подпишитесь на нас в Telegram

1. Введение

Очень часто требуется просмотреть HTTP-заголовок, отдаваемый отдельной страницей интересующего сайта.

Подобная необходимость может возникнуть, например, когда требуется проверить «работоспособность» своего собственного сайта. Для этого не надо загружать страницу со всей графикой, а достаточно просмотреть HTTP-заголовок, отдаваемый данной страницей.

Если в результатах присутствует строка, подобная

HTTP/1.1 200 OK

значит все в порядке, а если вроде

HTTP/1.1 404 OK,

то данная страница отсутствует на сайте и необходимо предпринять какие-либо меры.

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

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

1.1. Назначение протокола HTTP

(С использованием материалов www.codenet.ru)

HyperText Transfer Protocol (HTTP) - это протокол высокого уровня, уровня приложений (дословно - протокол передачи гипертекста), обеспечивающий необходимую скорость передачи данных, требующуюся для распределенных информационных систем гипермедиа. HTTP используется проектом World Wide Web с 1990 года.

Практические информационные системы требуют большего, чем примитивный поиск, модификация и аннотация данных. HTTP/1.0 предоставляет открытое множество методов, которые могут быть использованы для указания целей запроса. Они построены на дисциплине ссылок, где для указания ресурса, к которому должен быть применен данный метод, используется Универсальный Идентификатор Ресурсов (Universal Resource Identifier - URI), в виде местонахождения (Uniform Resource Locator - URL) или имени (Uniform Resource Name - URN). Формат сообщений сходен с форматом Internet Mail или Multipurpose Internet Mail Extensions (MIME - Многоцелевое Расширение Почты Internet).

HTTP/1.0 используется также для коммуникаций между различными пользовательскими просмоторщиками и шлюзами, дающими гипермедиа доступ к существующим Internet протоколам, таким как SMTP, NNTP, FTP, Gopher и WAIS. HTTP/1.0 разработан, чтобы позволять таким шлюзам через proxy серверы, без какой-либо потери передавать данные с помощью упомянутых протоколов более ранних версий.

2. Просмотр HTTP-заголовков

2.1. Методы HTTP

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

Метод GET служит для получения любой информации, идентифицированной URI Запроса. Если URI Запроса ссылается на процесс, выдающий данные, в качестве ответа будут выступать данные, сгенерированные данным процессом, а не код самого процесса (если только это не является выходными данными процесса).

Метод HEAD аналогичен методу GET, за исключением того, что в ответе сервер не возвращает «тело» Ответа. Метаинформация, содержащаяся в HTTP заголовках ответа на запрос HEAD, должна быть идентична информации HTTP заголовков ответа на запрос GET. Данный метод может использоваться для получения метаинформации о ресурсе без передачи по сети самого ресурса.

Более подробную информацию о протоколе HTTP и его методах можно найти в сети Интернет (http://www.citforum.ru/internet/cgi_tut/http.shtml, http://www.citycat.ru/doc/HTML/short/http.html). На http://webkomora.com.ua/ru/articles/web/raskrutka/httpoptimisation.html можно прочитать небольшую, но полезную статью про оптимизацию HTTP-заголовка страницы.

2.2. Скрипт для просмотра HTTP-заголовков интересующих интернет-ресурсов

Существует много сервисов, предоставляющих возможность просмотра HTTP-заголовков интересующего вас URL (например, http://www.webcode.ru/use/header/ или http://seolab.ru/add/header.htm).

Но попробуем написать скрипт, позволяющий просматривать заголовки HTTP интересующих интернет-ресурсов (сайтов или страниц), самостоятельно.

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

< head>
< title >Просмотр HTTP-заголовков интересующих Интернет-ресурсов
< meta http-equiv="content-type" content="text/html; charset=windows-1251">
< meta http-equiv="content-language" content="ru">
< /head>

< style>
* {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}

input {
width: 380px;
}
< /style>

< body>
< form action="gh.php?action=exec" method="post">
Введите URI интересующего Интернет-ресурса:

< input type="text" name="uri" value=" if ($uri) { echo $uri; }
else { echo "http://www.domain.ru/"; } ?>">

< input type="submit" name="exec" value="Просмотреть HTTP-заголовок">





Выберите User-Agent:

< select name="user_agent" selected=" echo $user_agent; ?>">
< option value="None" " if ($user_agent == "None")
{ echo "selected"; }
?>">None
< option value="User-Agent: Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1)"
if ($user_agent == "User-Agent: Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1)")
{ echo "selected"; }
?>>User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)








if ($action == exec)
{
// Указываем номер порта соединения
$httpport = 80;

// Удаляем "http://", если URI содержит данную подстроку
$uri = (substr(trim($uri), 0, 7) == "http://") ? substr(trim($uri), 7) : $uri;

// Выделяем из URI домен и страницу (если она присутствует):
// $res[1] будет содержать имя домена (заканчиваться должен слэшем)
// $res[2] будет содержать имя страницы (без имени домена)
preg_match("/(w{0,3}.?[wW]+.w{2,3})(?=/)/([wW]*)/?/", $uri, $res);

// Открывает сокет соединения указанного домена/страницы
$fp = @fsockopen($res[1], $httpport);
?>




// Сообщаем об ошибке, в случае если соединение не было установлено
// Возможно по причине долгого ответа сервера или неверного URI
if (!$fp)
exit ("Невозможно установить соединение!");
?>




// Формируем запрос для указанного домена
// Используем метод HEAD
// Если требуется получить в ответе домена "тело" страницы,
необходимо использовать метод GET
$query = "HEAD /".$res[2]." HTTP/1.1 ";
$query = $query."HOST: ".$res[1]." ";

if ($user_agent "None")
{
$query = $query.$user_agent." ";
}

$query = $query."Connection: close ";

// Отображаем текст запроса
echo nl2br(htmlspecialchars($query))."
";

// Отправляем домену запрос
fputs($fp, $query);

while (!feof($fp))
{
// Получаем ответ от домена (по одной строке)
$s = fgets($fp);
// Выводим ответ домена (также по одной строке)
echo nl2br(htmlspecialchars($s));
}

// Закрываем соединение
fclose($fp);
}
?>
< /body>



3. Заключение

Итак, у нас получился довольно простой, но в то же время очень полезный скрипт.На каком языке его писать - выбирать Вам. Например, при написании подобного скрипта на Perl (при обращении к удаленному ресурсу) можно воспользоваться Perl-модулем LWP::UserAgent. Затем необходимо создать объект данного класса и сделать запрос HEAD (или GET) по интересующему URL. Функция, реализующая подобный алгоритм, может выглядеть так:

sub get_http_header
{
my $uri = shift;
my $usr = LWP::UserAgent->new;

my $req = HTTP::Request->new (HEAD => $uri);
my $res = $usr ->request($req);

my $str = $res->as_string;

return $str;
}

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

В заключение стоит сказать, что данный скрипт будет полезен при анализе интересующего сайта/страницы (например, своего собственного или конкурента): с помощью него можно узнать как тот или иной сайт/страница «относится» к поисковым роботам (например, Яндекса), которые постоянно блуждают по всемирной паутине.

Есть о чем рассказать? Тогда присылайте свои материалы Марине Ибушевой


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
Как ИИ усиливает маркетинг и помогает общаться с пользователем
Иван
1
комментарий
0
читателей
Полный профиль
Иван - Классная статья, забрал Хотелось бы услышать еще от эксперта мнение про модели в таком случае и дисперсию
Тренды e-commerce 2026: рынок ждет отток с маркетплейсов?
Арина
1
комментарий
0
читателей
Полный профиль
Арина - Мы пробовали разные сервисы, но уже давно используем этот сервис tryon.mall-er.com у них есть и Визуальный поиск и Виртуальная примерка. Мы пользуемся Виртуальной примеркой очков и поиском и внедрили себе на сайт, сейчас порядка 80% нашего трафика с удовольствием пользуются данными функциями.
SEO-анализ сайта – новый сервис для технического аудита сайта
Олег Алексеев
1
комментарий
0
читателей
Полный профиль
Олег Алексеев - Сюда t.me/obivaaan или сюда t.me/olegalexeyev
Накрутка ПФ vs Бизнес: как накрутка поведенческих факторов «убьет» ваш бизнес в интернете
Гость
1
комментарий
0
читателей
Полный профиль
Гость - Вообще бред несут-пункт позиции и там и там суотрудничать,банов нет,риски и остальные пункты просто смешно,пф гораздо эффективнее чем платить в пиксель)))
Что будет с SEO в 2026: эксперты рынка подводят итоги и делают прогнозы на этот год
Марал Гаипова
142
комментария
0
читателей
Полный профиль
Марал Гаипова - Дмитрий, спасибо, эксперты и правда - топ)
MAX прошел хакерскую проверку на ZeroNights
Игорь
2
комментария
0
читателей
Полный профиль
Игорь - Когда нужно быстро понять, что происходит с каналами в MAX можно зайти на сервис maxdash.ru/ Пользоваться очень удобно: видно рост подписчиков, охваты, вовлечённость, какие каналы сейчас реально растут. Всё собрано в одном месте, без лишней возни с таблицами. Помогает трезво оценивать результаты и принимать решения не «на глаз», а по цифрам.
Что прямо сейчас можно сделать сайту регионального СМИ, чтобы получить мощный приток органического трафика
Дмитрий Севальнев
129
комментариев
0
читателей
Полный профиль
Дмитрий Севальнев - Максим, молодец! Хороший материал
Яндекс Браузер оптимизировал потребление оперативной памяти благодаря ИИ
Гость
1
комментарий
0
читателей
Полный профиль
Гость - На днях поставил Яндекс браузер на старый ноутбук с процессором AMD V140 и памятью 6 Гб. Система оказалась парализована - загрузка ЦП 100%. С другими браузерами: Firefox, Chrome ничего подобного.
GEO-продвижение: гайд повышения видимости бренда (сайта) в нейросетях
Дмитрий Севальнев
129
комментариев
0
читателей
Полный профиль
Дмитрий Севальнев - Вай, кайф!
Классические ML-алгоритмы vs. GPT в SEO: сравнение подходов, плюсы и ограничения
Дмитрий Севальнев
129
комментариев
0
читателей
Полный профиль
Дмитрий Севальнев - Монументально!
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
393
Комментариев
373
Комментариев
262
Комментариев
249
Комментариев
171
Комментариев
156
Комментариев
142
Комментариев
129
Комментариев
121
Комментариев
100
Комментариев
97
Комментариев
97
Комментариев
96
Комментариев
80
Комментариев
77
Комментариев
74
Комментариев
67
Комментариев
66
Комментариев
60
Комментариев
59

Отправьте отзыв!
Отправьте отзыв!