×
Россия +7 (495) 139-20-33

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

Россия +7 (495) 139-20-33
Шрифт:
0 5567

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

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

(Голосов: 5, Рейтинг: 5)
Читайте нас в Telegram - digital_bar

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


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
Как работать с сервисом для блогеров и бизнеса Perfluence
SergZa
1
комментарий
0
читателей
Полный профиль
SergZa - Не знал, что с небольшим количеством подписчиков можно заработать, буду пробовать;)
Диагностика и снятие ссылочного фильтра «Минусинск» в 2021 году. Кейс
Stanislav Romanenko
7
комментариев
0
читателей
Полный профиль
Stanislav Romanenko - Просто чисткой ссылочного можно просадить позиции в гугле, поэтому с бухты-барахты начинать удалять ссылки как-то тоже не хотелось бы. Ну в общем, если попадётся ещё подобный случай - не стесняйтесь выкладывать новый кейс :) Просто видите как мало кейсов по этому поводу, поэтому каждый на вес золота. "с этой бедой также приходится сталкиваться и пока кроме как крутить в обратную сторону ничего лучше не придумали." - на серче один товарищ скрипт антибота своего под это дело заточил searchengines.guru/ru/forum/981615/page39#unread - вроде боты пропадают, но и часть живых людей тоже :)
Алгоритм продвижения сайта через Pinterest
Гость
1
комментарий
0
читателей
Полный профиль
Гость - А через какое время гугл повысит позиции после индексации доски в пинтерест?
Михаил Ляшенко (PostMarket): о рынке инфлюенс-маркетинга и рекламе у блогеров
Данил Щеглов
1
комментарий
0
читателей
Полный профиль
Данил Щеглов - Сервис вообще отличный. Я обращался для рекламы к блогерам, которых я мог даже сам выбрать. Справляются быстро и качественно.
Как мы увеличили трафик из Яндекса более чем в 3 раза за неделю на сайте клиники. Кейс
Андрей
1
комментарий
0
читателей
Полный профиль
Андрей - У большинства сайтов произошел рост в Гугле в декабре и в марте Яндекса. Ваши шаманства тут не причём :)
Как забрать 5 мест в выдаче из 10. Кейс-эксперимент
Лидия Просто
2
комментария
0
читателей
Полный профиль
Лидия Просто - У нас тоже был небольшой эксперимент с выдачей. Мы заказали в zenlink несколько статей и публиковали их один раз в сутки в одно и то же время. Статьи были с ключевиками, но при этом имели уникальный текст. В результате за месяц где-то сайт стал мелькать в топах по запросам. Полезный опыт был. Правда мне интересно как это реализовать на сайтах каталогах одежды, к примеру?
Специалисты в Рунете заметили глобальную накрутку поведенческих факторов
Дмитрий Кулаевский
1
комментарий
0
читателей
Полный профиль
Дмитрий Кулаевский - кто-нибудь знает как с этим бороться? очень много такого трафа идёт с июля, сайт сильно просел
Локальное SEO, или Как увеличить трафик стоматологии на 700% в небольшом городе
Дмитрий Дмитриев
1
комментарий
0
читателей
Полный профиль
Дмитрий Дмитриев - расскажите, о чем именно речь? :)
Увеличение трафика новостного сайта в 2 раза с помощью SEO. Кейс
Гость
1
комментарий
0
читателей
Полный профиль
Гость - Делали подобное тут ruszakony.ru/rubrikator/ , получилось полная фигня
5 книг от эксперта: Александр Алаев (АлаичЪ и Ко)
Сергей
1
комментарий
0
читателей
Полный профиль
Сергей - Богатый папа, бедный папа - сборник мифов, которые уже разоблачил все. Все сразу стало понятно про "эксперта". Дальше можно список не смотреть. Прочитать ее конечно можно, если ничего другого нет под рукой, но советовать другим, это уже извините, совсем людей не уважать.
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
385
Комментариев
373
Комментариев
262
Комментариев
249
Комментариев
171
Комментариев
156
Комментариев
141
Комментариев
121
Комментариев
113
Комментариев
97
Комментариев
97
Комментариев
96
Комментариев
92
Комментариев
80
Комментариев
77
Комментариев
67
Комментариев
67
Комментариев
62
Комментариев
60
Комментариев
59

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