Step 3 (S-44698)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/12528/step/3

Step 3 (S-44698) 1.png

[00:00 - 00:18] так давайте начнем с библиотек для работы с http которые присутствуют в разных языках программирования а в чем их особенность их особенность в том что они представляют максимум опции для работы именно с протоколом http


[00:18 - 00:33] а браузеры например действовать по некоторым правилам они позволяют пользователю произвольно менять содержимое некоторые заголовков то есть они делают это за полисом


[00:33 - 00:52] библиотеке а в языках программирования естественно предоставляет максимум опция они позволяют выбирать а сервер к которому подключаются полость формировать произвольные заголовке а выбирать метод запроса и делать все что угодно содержимое


[00:52 - 01:07] а как правило в этих библиотеках содержатся функционал именно работа с а протокол http то есть запросов парсинг либо анализ


[01:07 - 01:25] теперь ответа и различные работа с кодированием и декодированием данных а дело в том что данные в протоколе а теперь могут быть закодирована различным образом а простейшем случае текстовые данные не кодируются вообще


[01:25 - 01:42] а в некоторых случаях данные могут быть сжаты с помощью например алгоритм это уменьшает объем передаваемых данных но прикладному программисту желательно об этом не беспокоятся получить уже исходный поток


[01:42 - 01:59] разжатый а библиотеки для работы с hd теперь берут на себя эту обязанность также они могут представлять а некоторые дополнительный функционал уже из серебра серия функционал браузера


[01:59 - 02:14] пример а просто помимо выполнения 1 запроса по протоколу http они могут поддерживать серию запросов например следовать по перенаправление что такое перенаправление мы поговорим чуть позже могут


[02:14 - 02:31] предоставлять какой то набор кук если конечно прикладных программистах вел добавил в эту библиотеку а и тому подобные вещи и основных значения эта работа со степи внутри других программ


[02:31 - 02:48] а здесь на этом митинге мы можем видеть пример использования библиотеки угол лип и у рулит 2 состоит из 2 частей это стандартное для python библиотека для работы


Step 3 (S-44698) 2.png

[02:48 - 03:05] а саша степи и общем то позволяет работать а итак давайте разберем этот листинг 1 что происходит с ключа библиотеке


[03:05 - 03:20] так а с помощью директивы импорт мы подключаем необходимый нам библиотеке далее мы задаем уру сайта просто записываю в некоторую переменную а


[03:20 - 03:36] мы хотим на этот уровень отправить некоторую форму то есть не просто запросить дальний угол а как при отправке формы из браузера мы хотим туда передать некоторые да поэтому мы создаем словарик сдам


[03:36 - 03:54] конструкция фигурным скобочкам словарь а как называют отображения либо либо хэш а так у нас есть некоторые данные аргументы 1 аргумент 2 и кроме того мы хотим передать заголовки


[03:54 - 04:13] создаем отдельный словарик заголовка а далее данные чтобы передать их через протокол http должны быть соответствующим видом закодирован мы преобразуем в сроку а с помощью функции кот


[04:13 - 04:32] потом создаем объект запрос а в объекте запрос мука собственно говоря те данные которые мы будем передавать натуру и дополнительно заголовке с помощью функции мы отправляем запрос и получаем ответ а


[04:32 - 04:48] объект расположен в библиотеке у рулит а а представляет интерфейсов валютной файловому дескриптор то есть у него есть метод с помощью этого метода мы можем прочитать


[04:48 - 05:03] тело ответа а естественно уже декодированное разврата и тому подобное кроме того из объекта response мы можем получить статус ответа и дополнительные заголовки но об этом в частности мы поговорим позже


Step 3 (S-44698) 3.png

[05:03 - 05:19] а в чем заключается назначение консольных клиентов а консольные клиенты то есть это программы которые запускаются из командной строки а позволяет вам работать с протоколом http


[05:19 - 05:38] чаще всего используют следующих случаях для автоматизации в некоторых скриптах то есть вы можете выполнять написать скрипт для вашей операционной системы баш скрипт который автоматизирует работу вашу в некоторых случаях вам нужно вызвать какой то


[05:38 - 05:54] используется консольный клиент а консольные клиенты позволяют сделать статическую копию сайта либо как говорят скачать сайт что то означает а означает что они умеют анализировать а что мы


[05:54 - 06:09] и а скачивать все необходимые ресурсы помимо основной странички а то есть если библиотеки для работы с http они возвращает вам запрос в котором содержатся страничкой дальше вы сами должны с ней что то сделать


[06:09 - 06:28] а консольный клиент умеют скачивать рекурсивно то есть анализируя содержимое странички скачивать все необходимые файлы а и складывать в директорию рядом таким образом у вас появится копия сайта это было в принципе довольно востребованный функционал некоторое время назад


[06:28 - 06:43] сейчас связи с тем что сайта довольно динамичная не всегда получается создать его полную копию а сам теряется весь полезный функционал а кроме того


[06:43 - 07:01] консольные клиенты крайне полезно для отладки приложений а весьма часто бывает необходимо сделать запрос и посмотреть в точности что вернул вам ваш браузер покажет только


[07:01 - 07:18] содержимое документа причем уже отрисованы конечно браузере есть специальные утилиты которые позволяют смотреть заголовки и тому подобное но если вы хотите получить а с точностью добавить то что он вернул сервер


[07:18 - 07:35] а можно воспользоваться консольной утилиты самая простая из них эта утилита то умное простейшее средство отладки которая открывает tcp соединения на указанный адрес


Step 3 (S-44698) 4.png

[07:35 - 07:53] указанный хост указанный порт и связывают это соединение с консоли то есть с клавиатуры экрана фактически телнет к протоколу http не имеет никакого особого отношения а с помощью телнета можно отправлять и получать


[07:53 - 08:12] данные по любому протоколу но поскольку протокол http является текстовом а значит что вы так прогами сможете создавать http запросов практически руками вы можете отправить запрос с помощью телнета


Step 3 (S-44698) 5.png

[08:12 - 08:28] давайте посмотрим как это делается довольно полезный а во 1 вы запускаете команду в телнет указывая ей а адрес машины которые нужно подключиться и порт


[08:28 - 08:45] а телнет не умеет анализировать содержимое которой поэтому вы должны сами выбрать адрес машины правильный порт в нашем случае мы подключаемся к хостов с именем точка ru и port 80


[08:45 - 09:01] мы видим что цвет воде нам отложат информацию о том что он попытался подключиться ну во 1 преобразовал имя в ip адрес а попытался подключиться подключился и сказал что общем то он готов к работе


[09:01 - 09:19] далее мы должны отправить запрос то чтобы получить документ по протоколу http клиент отправляет запрос в данном случае при использовании ленты фактически является руками мы вводим вот этот текст


[09:19 - 09:35] дед индекса что модель цепи а более подробно в следующем а в следующем уроке мы поговорим про формат того что мы вводим а сейчас скажу что вот это вещь это все тебе запрос простейшей


[09:35 - 09:54] протокол 1 1 версия на что сервер отдает нам теперь ответ мы видим а весь ответ с точностью до байта как он пришел к нам от веб сервер это бывает очень полезно для того чтоб посмотреть различные заголовки


[09:54 - 10:12] а вот пример бывает крайне полезна при отладке в приложении а помимо телнета то есть он это крайне простая утилита есть специализированные


Step 3 (S-44698) 6.png

[10:12 - 10:28] консольная утилита например girl а те лица которые знают про протокол http фактически это полноценный консольный клиент а он может загружать


[10:28 - 10:43] данные по урлу в том числе рекурсивно может выполнять различные виды запросов и при необходимости печатать отладочную информацию а например каким образом посмотреть отладку


[10:43 - 11:00] гет запроса то есть запроса к определенному лапуся нас есть api сайт дот ком метод какой то там и мы хотим смотреть что он возвращает в таком случае мы можем выполнить команду girl с флажками - а в


[11:00 - 11:19] а скачать данный документ и выведет в консоль а все заголовки то есть полностью запрос который направил и полностью ответ которое прислал вот точно так же как темное только вам не нужно вводить запрос руками достаточно просто вести урок


[11:19 - 11:35] команда существует большое количество параметров полный полный список можно найти в документации с помощью команды ман


[11:35 - 11:54] это стандартная команда для чтения документации в линуксе girl получили документацию по программе кер а например если мы хотим передать данные и придать дополнительный слой заголовок мы можем использовать следующий вызов


[11:54 - 12:13] с помощью флага - д указываем данные с помощью flac - аш указываем заголовок - а пока покажет нам в консоли полностью запрос вы можете сделать запрос убедиться что а запросы вернул


[12:13 - 12:24] а что были переданы указанные данные указаны заголовок посмотреть что вернулся а интересно что нужно поменять урл сайта на действительно существуют