Технология Curl в linux

Довольно часто нам необходимо установить какие-либо файлы из интернета. Это могут быть файлы программ, различные архивы, скрипты, и прочее. Правда, не всегда это можно делать из браузера.

Этот процесс можно сделать куда проще с помощью терминала, ибо это может позволить сделать процесс автоматизированным. Хотя, веб-разработчикам иногда все же надо проверять статус сайта, а также проверять, получаемые и отправляемые заголовки, а также много других данных. Подобные задачи может легко решить утилита под названием curl, да и не только эти задачи. Но кроме вышеуказанной проблемы, она также может имитировать действия реального пользователя на сайте.

В данной статье мы разберемся с этой технологией, для каких целей она нужна, как ею пользоваться и так далее.

Введение

Curl — оболочка с большим сборником различным библиотек для работы с сервером. Да, Это также сборник библиотек. В них содержатся основные возможности, которые нужны для работы с URL страницами, а также передачи файлов.

У curl есть возможность работать с большим количеством протоколов: FTPS, TFTP, SCP, SMTP и много других. Ранее было сказано, что с помощью этой технологии можно делать имитацию, но это не далеко не единственное, что можно делать с сайтом, пользуясь помощью данной утилиты.

Также данная библиотека curl существует также и в различных ЯП, и в данной статье мы поговорим об утилите curl. Это своего рода оболочка для этой самой библиотеки.

Синтаксис CURL

Но перед самим использованием и возможностями данной оболочки, давайте изучим синтаксис и обозначение команд, которые пригодятся нам в работе. Синтаксис команд довольно простой, и давайте его изучим:

$ curl option url

Опции curl:

  • -# — позволяет делать во время загрузки отображение прогресс-бара.
  • -0 — возможность использования протокола http 1.0.
  • -1 — использование протокола шифрования tlsv1.
  •  -2 — использование протокола sslv2.
  • -3 — использование протокола sslv3.
  • -4 — использование ipv4.
  • -6 — использование ipv6.
  • -b — сохранение куки в отдельный файл(дальше их можно будет передавать).
  • -с — отправление куки из отдельного файла на сервер.
  • -С — Если соединение оборвалось, то данная опция поможет его восстановить.
  • -d — использование метода POST для отправления данных.
  • -D — сохранение заголовков, которые сервер вернул из отдельного файла.
  • -e — задает поле Referer-uri, источник, с которого пришел пользователь, будет указан.
  • -E — позволяет сделать процесс использования внешнего сертификата SSL.
  • -f — отключает вывод сведений об ошибках.
  • -F — отправление в виде формы.
  • -G — данная опция позволяет передавать данные из опции -d методологией GET.
  • -H — позволяет осуществлять передачу заголовков на сервер.
  • -I — опция позволяет получать только HTTP заголовок, а прочие данные веб-страницы не читает.
  • -j — чтение и отправка куки из отдельного файла.
  • -J — удаление заголовков из запроса.
  • -L — принятие и обработка направлений.
  • -s — максимальный количество процессов перенаправления с помощью метода Location
  • -o — вывод контента страницы в отдельный файл
  • -O — сохранение контента в отдельный файл с именем веб-страницы, либо использовать имя серверного файла.
  • -p — использование прокси.
  • —proto — указание протокола, нужного для использования.
  • -R — сохранения времени последнего изменения файла, который удалён.
  • -s — вывод малых сведений об ошибках.
  • -S — вывод сведений об ошибках.
  • -v — вывод с подробным объяснением
  • -y — Минимальные ограничения по скорости загрузки.
  • -Y — Максимальные ограничения по скорости загрузки.
  • -z — скачивание файла, но только в случае, если он был обновлен позже заданного времени.
  • -V — вывод версии.

Это лишь базовые методы, которые должны хватить для большинства задач. Дальше мы рассмотрим их применение и использования при решений различных задач.

Использование CURL

Пожалуй, мы рассказали всю необходимую теорию, теперь же обратимся к практике. Сейчас мы применим все вышеперечисленное.

Работа с файлами

Пожалуй, наиболее чаще приходится сталкиваться с загрузкой файлов. Установить же необходимый файл довольно несложно. Оболочке curl нужно лишь взять имя, оно может быть взято со страницы, либо же с файла. Делается это так:

 curl https://raw.githubusercontent.com/curl/curl/master/README.md

Технология Curl в linux

Правда, здесь наступаем маленькая неприятность, ведь данные файла будут на стандартном выводе отправлены, а нужно другое. Для его записи в какой-нибудь файл нужно использовать следующую конструкцию:

curl -o readme.txt https://raw.githubusercontent.com/curl/curl/master/README.md

Технология Curl в linux

Но если у вас есть необходимость в том, чтобы файл, который вы получили имел название такое же, которое имел серверный файл, то здесь пригодится опция -O. Конструкция:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md

Технология Curl в linux

Но бывают ситуации, когда загрузка прерывается, но это не беда, ибо её легко можно возобновить. Делается это следующим образом:

curl -# -C — -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Технология Curl в linux

Кстати, для установки сразу нескольких файлов можно воспользоваться лишь одной командой:

curl -O https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Технология Curl в linux

Теперь разберем немаловажную вещь для администратора. Речь идет о загрузке файла, но в случае, когда он модифицирован. Делается это так:

curl -z 21-Dec-17 https://raw.githubusercontent.com/curl/curl/master/README.md -O https://raw.githubusercontent.com/curl/curl/master/README

Файл будет установлен, если его изменения происходили после 2017 года 21 декабря.

Скорость загрузки.Ограничения

Дабы не перегрузить сеть загрузкой файлов, можно воспользоваться ограничениями скорости до нужно уровня -Y:

curl —limit-rate 50K -O https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.11-rc7.tar.xz

Технология Curl в linux

Как и говорилось, можно настроить определенный уровень. Для настройки укажите количество килобайт в секунду, которые необходимо загружать. Кстати, есть возможность разорвать соединение, в случае если скорость загрузки не достигает вашего уровня. Как и в предыдущем способе, используем -Y:

curl -Y 100 -O https://raw.githubusercontent.com/curl/curl/master/README.md

Файлы.Передача

Итак, сама по себе загрузка файлов процесс простой, но у curl это не единственная функция, можно например отправлять файлы на ftp-сервер. Используя метод -T, пишем следующую команду:

curl -T login.txt ftp://speedtest.tele2.net/upload/

Технология Curl в linux

Ну или же можно проверить отправление файла по протоколу HTTP. Воспользуемся сервисом для этой задачи:

curl -T ~/login.txt http://posttestserver.com/post.php

Технология Curl в linux

В ответ получите от curl местонахождение файла, который загрузили.

Работа с данными

Данный метод нужен не только для отправки данных, он также может быть использовать как отправитель форм. Для данного запроса будем использовать -d. Для тестов будем использовать тот же сервис:

curl -d «field1=val&fileld2=val1″http://posttestserver.com/post.php

Технология Curl в linux

Если же такой вариант вам не нравится, можно пойти другим путем, используя опцию -F:

curl -F «password=@pass;type=text/plain» http://posttestserver.com/post.php

Технология Curl в linux

Здесь происходит передача пароля, но делается это под видом формы, причем тип: обычный текст. Таким же способом можно передавать и другие данные.

Куки

Cookie нужны сайтам для того, чтобы хранить информацию на стороне юзера. Это может понадобиться для аутентификации. В Curl куки можно передавать. Для этого их нужно сохранить в отдельный файл, используя -с:

curl -c cookie.txt http://posttestserver.com/post.php

Позже можно эти данные возвратить. Пример:

curl -b cookie.txt http://posttestserver.com/post.php

Заголовки.Передача, анализ.

Бывают ситуации, когда нам вовсе не интересно содержимое веб-страницы, а только заголовки на ней, тогда необходимо использовать следующую функцию:

curl -I https://losst.ru

Технология Curl в linux

Опция -H же в свою очередь дает возможность отправить определенный заголовок, либо же несколько на сервер. Заголовки можно передать так, что страница возвращается, если она модифицирована:

curl -I —header ‘If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT’ https://losst.ru

Технология Curl в linux

Итог

Curl — это эффективная библиотека, которая решает множество проблем. Его синтаксис прост, а функционал огромен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *