Вопрос на собеседовании: сможете ли вы запросить содержание веб-страницы с помощью telnet?

Ответ: а как же! Ведь HTTP – текстовый протокол. Всё что нужно – это дописать после получения соединения telnet две строчки: GET  и HOST.

Пробуем.


telnet lexpr.ru 80
Trying 50.87.147.141...
Connected to lexpr.ru.
Escape character is '^]'.
HEAD / HTTP/1.1
HOST: www.lexpr.ru

Первые четыре строчки выдаёт телнет. Мы печатаем HEAD / HTTP/1.1, нажимаем ввод, печатаем HOST: www.lexpr.ru, нажимаем ввод два раза.

Результат:


HTTP/1.1 200 OK
Date: Thu, 03 Sep 2020 07:42:19 GMT
Server: Apache
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: SESS812f3c8068cde43f97e1ca99cc55a898=d283ee9c09ccfb4fedcff715903d9f7a; expires=Sat, 26-Sep-2020 11:15:48 GMT; path=/; domain=.lexpr.ru
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Thu, 03 Sep 2020 07:42:28 GMT
Content-Type: text/html; charset=utf-8

Connection closed by foreign host.

Тут нам важно 200 ОК, то есть сервер ответил штатно.

Теперь получаем содержание некой страницы:


telnet lexpr.ru 80
Trying 50.87.147.141...
Connected to lexpr.ru.
Escape character is '^]'.
GET /node/566 HTTP/1.1
HOST: www.lexpr.ru

Путь в строке GET печатаем от корня сайта, то есть полная ссылка будет интерпретирована сервером как www.lexpr.ru/node/566

Результат:


HTTP/1.1 200 OK
Date: Thu, 03 Sep 2020 07:38:31 GMT
Server: Apache
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-Cookie: SESS812f3c8068cde43f97e1ca99cc55a898=1955b918d4451303c2cad5fb11d032b5; expires=Sat, 26-Sep-2020 11:12:00 GMT; path=/; domain=.lexpr.ru
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Thu, 03 Sep 2020 07:38:40 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8

3d11

И далее идёт содержание страницы в виде HTML.

Вот такая нехитрая фигня.

Leave a Reply

Your email address will not be published. Required fields are marked *