HTTP протокол - это просто
сентября 12, 2007
Влад Иванов
Сегодня хочу рассказать о том, как я начинал изучать основы HTTP протокола, прибегая к мануалам только в крайних случаях. безошибочно уже и не помню с какой целью мне понадобилось узнать как же все работает на самом деле, то ли я хотел заспамить какой-то провинившийся форум, то ли у меня были более благородные цели (хотя что может быть благороднее чем заспамить неугодный форум?). Так или иначе, в моей голове созрела дума: надобно узнать, как работает HTTP протокол.
Все мои попытки обсудить эту тему на форумах заканчивались тем, что меня посылали к мануалам или гораздо дальше. В итоге, я сдался и решил заняться самостоятельным изучением вопроса.
Честно говоря, чтение мануалов никогда не входило в число моих сильных сторон, обычно на второй или третьей странице меня начинает клонить в сон, а затем десятой драться с этим желанием просто нет сил. потом нескольких попыток прочитать мануал я рассудил так: коли браузер может отправлять нужные HTTP заголовки (HTTP headers), то нужно стырить у него эти заголовки, а не клевать носом над бесконечной документацией. Проявив маленько смекалки, я нашел очень обыкновенный прием как получить желаемое.
Допустим мне надобно узнать, какой POST запрос формирует браузер при отсылке заполненной веб-формы. Тогда, дабы узнать всю интересующую меня информацию надобно сделать так:
1. Создаеть маленький скрипт на PHP, который будет запускаться на локальной машине для прослушки 80-го порта. индивидуальность скрипта в том, что он вываливает все полученные данные на экран, ничего не утаивая от моего пытливого взора;
2. В браузере открыть страницу с интересующей нас веб-формой ( это должно быть что-то на подобии http://www.some-url.com/webform.html);
3. Заполнить все поля формы;
4. Открыть файл hosts (в ОС Linux данный файл находится по адресу /ets/hosts, а в Windows ищите сами, всевышний знает куда ушлые ребята из Мелкософта могли его засунуть. Кто найдет, может отписаться в комментарии! :-))) ). В завершение файла надобно дописать: 127.0.0.1 www.some-url.com
5. возвратиться в браузер и нажать кнопку “Отправить” (или какая там кнопка предусмотрена для отправки формы)
Собственно это все! В результате, бесхитростный браузер отправит форму не на www.some-url.com, а нашему скрипту, который, в свою очередь, все отобразит на экране. Нам останется только проанализировать полученные данные (тут уж без мануала не обойтись, но, согласитесь, значительно проще посмотреть пару тройку параметров, чем шерстить несколько десятков страниц).
Вероятно вы зададите вопрос, кушать ли другие способы получить заголовки? разумеется кушать, предположим, можно использовать снифер, или, скажем, специальные плагины для любимого барузера. Но мой метод тоже очень хорош, и вот почему:
1. Он обыкновенный! Даже первоклассник без труда сможет проделать все описываемые процедуры;
2. Он независим от браузера, в конечном итоге не браузерами одними жив HTTP протокол, кушать вдобавок RSS-ридеры и другие подобные программы;
3. Он кросплатформенный, абсолютный плюс!
4. Он позволяет получить заголовки “как есть” и перенести в свою программу простым копи-пастом;
5. Он открывает обширные возможности для анализа и экспериментирования.
В заключение привожу текст скрипта на PHP, слушающего 80-ый порт:
set_time_limit (0);
$address = ‘127.0.0.1′;
$port = 80;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die(’Could not bind to address’);
socket_listen($sock);
while(1)
{
$client = socket_accept($sock);
$input = socket_read($client, 1024);
echo $input;
socket_write($client, $output);
socket_close($client);
}
socket_close($sock);
Собственно, это все.
–
Хочется напомнить, что Акция “Провокация” продолжается, и в начале следующего месяца будет опубликован новый перечень блогов, давших наименьший трафик. Кроме этого, напоминаю, что любая статья на этом блоге может быть использована на других ресурсах, только с указанием ссылки на данный блог!
Интересно? Читай мой RSS feed! (?)
Популярность: нет [?]
Добавлено в Ссылки, Блоги, Софт для ВЕБ мастера |