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

Россия+7 (495) 960-65-87
Шрифт:
0 3837

1. Введение
   1.1. Назначение протокола HTTP
2. Просмотр HTTP-заголовков
   2.1. Методы HTTP

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

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, заголовок которого необходимо просмотреть.

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

(Нет голосов)
Читайте нас в Telegram - digital_bar

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


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
    ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
    Рейтинг Известности 2018: старт народного голосования
    Михаил Р
    1
    комментарий
    0
    читателей
    Полный профиль
    Михаил Р - 1. Demis 2. кокс 3. Ашманов 4. Скобеев 5. Digital Strategy
    Тест: Кто как пробежал, или Итоги клиентского рейтинга SEOnews 2018
    Анна Макарова
    338
    комментариев
    0
    читателей
    Полный профиль
    Анна Макарова - Друзья, спасибо всем за участие! Мы определили победителей. Кто ими стал - вы найдете по ссылке: www.seonews.ru/events/darim-knigi-ot-mif-pobediteli-opredeleny/ Если вы стали одним из победителей, обязательно свяжитесь с нами по указанной в новости (по ссылке выше) почте. Всем хороших выходных! =)
    SEO глазами клиентов 2018
    Артур Якушев
    1
    комментарий
    0
    читателей
    Полный профиль
    Артур Якушев - >сейчас же сложно найти агентства, которые специализируются только на SEO Не так и сложно найти нас www.msk.lapkinlab.ru
    Рейтинг Известности 2018: второй этап народного голосования
    Константин Сокол
    3
    комментария
    0
    читателей
    Полный профиль
    Константин Сокол - Кто был ответственный за дизайн таблицы голосования? Копирайтер?
    Комплексный аудит интернет-магазина от «Ашманов и партнеры». Часть 1
    Александр Сова
    1
    комментарий
    0
    читателей
    Полный профиль
    Александр Сова - А вот и сеошники подъехали, покидать на вентилятор :D
    Кейс: вывод лендинга по изготовлению флагов на заказ в ТОП 1 по Санкт-Петербургу
    utka21
    4
    комментария
    0
    читателей
    Полный профиль
    utka21 - Кейс как кейс. Для некоторых станет вполне возможно полезным. ( Для конкурентов точно) . А вот с комментариями , что то пошло не так )
    Не очень удачный кейс продвижения сайта по услуге «Трезвый водитель» в Москве
    Кирилл Щербаков
    3
    комментария
    0
    читателей
    Полный профиль
    Кирилл Щербаков - "даже пришлось подключить отслеживание звонков с сайта" "Даже" - как будто это что-то нереальное
    Как использовать Python для LSI-копирайтинга
    Evgeny Montana
    6
    комментариев
    0
    читателей
    Полный профиль
    Evgeny Montana - спасибо)
    Стартовал сбор заявок на участие в рейтинге «Известность бренда SEO-компаний 2018»
    Артем Первухин
    1
    комментарий
    0
    читателей
    Полный профиль
    Артем Первухин - Make KINETICA Great Again!
    Эксперимент: как уникальность контента влияет на продвижение сайта
    Ilia Nazmutdinov
    2
    комментария
    0
    читателей
    Полный профиль
    Ilia Nazmutdinov - Кстати, ПФ не работают на нулевом трафике. Пока на сайт не льются тысячи показов по одним и тем же запросам влияние оказывает ток ссылочное\внешнее и внутреннее\ и внутренняя оптимизация.
    ТОП КОММЕНТАТОРОВ
    Комментариев
    910
    Комментариев
    834
    Комментариев
    554
    Комментариев
    540
    Комментариев
    483
    Комментариев
    373
    Комментариев
    338
    Комментариев
    262
    Комментариев
    241
    Комментариев
    171
    Комментариев
    156
    Комментариев
    137
    Комментариев
    121
    Комментариев
    97
    Комментариев
    97
    Комментариев
    97
    Комментариев
    96
    Комментариев
    80
    Комментариев
    67
    Комментариев
    61
    Комментариев
    60
    Комментариев
    59
    Комментариев
    57
    Комментариев
    55
    Комментариев
    54

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