Что важно знать о HTTP
Продолжение серии статей об Интернет-ботах.
HTTP (Hyper Text Transport Protocol) – это тот самый язык, на котором разговаривают браузеры с веб-серверами.
Самое важное о HTTP:
- протокол предполагает наличие сервера и клиента (клиент посылает запрос «хочу страницу index.html», сервер отвечает «на тебе эту страницу, вот ее содержимое»)
- это текстовый протокол (запросы и ответы имеют понятный человеку вид, их можно читать в обычном текстовом редакторе)
- каждое сообщение состоит из стартовой строки, заголовков и тела (об этом подробнее дальше)

Перечисленные особенности делают HTTP очень простым и расширяемым. Например, когда возникла задача сохранять информацию на машине клиента, протокол переписывать не пришлось. Все что надо было сделать – добавть один новый заголовок запроса (Cookie) и один – ответа (Set-Cookie).
Ниже по тексту я буду предлагать вам делать разные вещи. Например, скачать Яндекс Telnet-клиентом. «Пощупав» HTTP своими руками, проще понять его принцип. Но можно и просто читать, специально для вас у меня припасены скриншоты ![]()
Минимальный HTTP запрос
Скачаем содержимое сайта www.ya.ru без браузера. Для этого подойдет Telnet-клиент, который наверняка есть в вашей ОС. Чтобы воспользоваться им в Windows, запустите интерпретатор командной строки (cmd.exe). Далее набирайте текст, как на картинке, и нажимайте Enter.

Появился пустой черный экран. Вводите:
GET / HTTP/1.1
Нажимайте Enter. Пусть вас не смущает, что ничего не отображается на экране. Продолжайте ввод:
Host: www.ya.ru
Нажимайте Enter дважды.
Это был HTTP-запрос. А вот и ответ:

Что же мы сделали:
- подключились к серверу ya.ru на 80-ый порт (стандартный для HTTP)
- отправили сообщение, состоящее из стартовой строки и одного заголовка
- получили ответ, состоящий из стартовой строки, семи заголовков и тела
В стартовой строке запроса необходимо указать HTTP метод, URI документа и версию HTTP. В заголовке Host – имя хоста. Это был минимальный запрос. Если что-нибудь убрать, сервер скажет «Bad request».
Ответ начинается со стартовой строки «HTTP/1.1 200 OK», что означает, что наш запрос обработан успешно. Нам присылают желанный документ, содержимое которого находится в теле HTTP ответа. Именно его мы увидим, если нажмем в браузере кнопку «Исходный код страницы». Из заголовков хотел бы обратить ваше внимание только на Content-Length – здесь указан размер тела сообщения в байтах.
Пустая строка означает, что заголовки закончились и начинается тело сообщения. Именно поэтому мы нажимали Enter дважды в конце запроса.
Методы HTTP
Стартовая строка запроса начинается с названия метода, то есть имени основной операции, производимой над ресурсом.
Основные методы:
- GET – используется при наборе адреса вручную или переходе по ссылке
- POST – используется при отправке формы
Думаю, что распределение частоты запросов примерно такое:
- 99.9% – GET
- 0.1% – POST (читают Интернет намного чаще, чем пишут)
- 0% – другие методы (имеют скорее историческую ценность)
Примечание: не стоит воспринимать эти цифры буквально.
При обращении к серверному скрипту обычно передаются параметры запроса. Например, URI http://svitter.ru/?p=621 означает, что я хочу прочитать статью #621. Методом GET можно передать парамтеры только через URI. С помощью POST их можно передавать как через URI, так и в теле сообщения.
В следующей статье я напишу, как анализировать HTTP трафик. Это необходимо для создания программы, эмулирующей браузер (ведь нам нужен Интернет-бот, помните?
).
Recent Comments