Первая часть здесь: «Урок cURL: основы использования и пара полезных трюков».

Источник: https://n0where.net/how-to-curl-command-examples/

cURL — это пакет программного обеспечения, состоящий из утилиты командной строки и библиотеки для передачи данных с использованием синтаксиса URL.

cURL поддерижвает множество протоколов, среди них DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet и TFTP.

Загрузить отдельный файл

Следующая команда получит содержимое URL и отобразит его в стандартном выводе (т. е. в вашем терминале).

Чтобы сохранить вывод в файл, сделайте редирект, как показано ниже. Это также приведёт к показу некоторой дополнительной информации по статистике загрузки.

Сохранение вывода cURL в файл

Мы можем сохранить результат команды curl в файл, используя опции -o/-O.

  • -o (o нижнего регистра) результат будет сохранён в файле, заданном в командной строке
  • -O (O верхнего регистра) имя файла будет взято из URL и будет использовано для сохранения полученных данных.

Теперь будет сохранена страница gettext.html в файле с названием ‘mygettext.html’. Когда curl запущена с опцией -o, она отображает шкалу прогресса загрузки следующим образом.

Когда вы используете curl -O (O верхнего регистра), она сама по себе сохранит содержимое в файл под названием ‘gettext.html’ на локальной машине.

Примечание: Когда curl должна писать данные в терминал, она отключает шкалу прогресса, чтобы не было путаницы в напечатанных данных. Мы можем исользовать ‘>’|’-o’|’-O’ опции для передачи результатов в файл. 

Выборка нескольких файлов одновременно

Мы можем загрузить несколько файлов за один раз, задав все URL в командной строке.

Команда ниже загрузит оба index.html и gettext.html и сохранит их с теми же именами в текущей директории.

Пожалуйста, обратите внимание, когда мы загружаем несколько файлов с одного сервера как показано выше, curl попытается повторно использовать соединение.

Следуем за HTTP Location в заголовках с опцией -L

По умолчанию, CURL не следует за HTTP Location в заголовках (редиректы). Когда запрошенная веб-страница перемещена в другое место, то соответствующий ответ будет передан в заголовках HTTP Location.

Например, когда кто-то печатает google.com в строке браузера из своей страны, они автоматически будут перенаправлены на ‘google.co.xx’. Это делается на основе заголовка HTTP Location как показано ниже.

Приведённый выше вывод говорит, что запрашиваемый документ был перемещён в ‘http://www.google.co.th/’.

Вы можете указать curl следовать редиректам, это делается с использованием опции -L как показано ниже. Теперь будет загружен исходный код html с http://www.google.co.th/.

Продоление/Вообновление предыдущей закачки

Используя опцию -C вы можете продолжить закачку, которая была остановлена по каким-либо причинам. Это будет полезным при обрыве загрузки больших файлов.

Если мы говорим ‘-C -’, то curl будет искать, с какого места возобновить загрузку. Мы также можем задать ‘-C <смещение>’. Заданное смещение байт будет пропущено от начала исходного файла.

Начните большую загрузку с curl и нажмите Ctrl-C для остановки посреди закачки.

Закачка была остановлена на 20.1%. Используя “curl -C -” мы можем продолжить загрузку с того места, где мы остановились. Теперь загрузка продолжиться с 20.1%.

Ограничение скорости передачи данных

Вы можете ограничить величину скорости передачи данных опцией –limit-rate. Вы можете передать максимальную скорость в качестве аргумента.

Команда выше ограничит скорость передачи на 1000 байт/секунду. curl может использовать скорость выше на пиках. Но средняя скорость будет примерно 1000 байт/секунду.

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

Загрузить файл только если он изменён до/после заданного времени

Вы можете получить файлы, которые были изменены после определённого времени, используя опцию -z в curl. Это будет работать и для FTP и для HTTP.

Команда выше загрузит yy.html только если он изменялся позднее чем заданная дата и время.

Команда выше загрузит файл file.html, если он изменялся до заданной даты и времени.

Наберите ‘man curl_getdate’ чтобы узнать больше о различных поддерживаемых синтаксисах для выражений даты.

Прохождение аутентификации HTTP в cURL

Иногда веб-сайты требуют имя пользователя и пароль для просмотра их содержимого. С помощью опции -u вы можете передать эти учётные данные из cURL на веб-сервер как показано ниже.

Примечание: По умолчанию curl использует базовую HTTP аутентификацию. Мы можем задать иные методы аутентификации используя –ntlm | –digest.

Загрузка файлов с FTP сервера

cURL может также использоваться для загрузки файлов с FTP серверов. Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней.

Команда выше загрузит файл xss.php с ftp-сервера и сохранит его в локальной директории.

Здесь URL отсылает к директории. Следовательно, cURL сделает список файлов и директорий по заданному URL адресу.

Список/Загрузка с использованием диапазонов.

CURL поддерживает диапазоны заданные в URL. Когда дан диапазон, будут загружены соответствующие файлы внутри этого диапазона. Это будет полезным при загрузке пакетов с сайтов FTP зеркал.

Команда выше сделает список всех пакетов в диапазоне a-z в терминале.

Выгрузка файлов на FTP-сервер

Curl также может использоваться для выгрузки на FTP-сервер с опцией -T.

Команда выше выгрузит файл с именем myfile.txt на FTP-сервер. Вы можете также выгрузить несколько файлов за один раз используя диапазоны.

Опционально мы можем использовать “.” для получения из стандартного ввода и передачи его на удалённую машину.

Команда выше получит вывод от пользователя из стандартного ввода и сохранит содержимое на ftp-сервере под именем ‘myfile_1.txt’.

Вы можете задать ‘-T’ для каждого URL, и каждая пара адрес-файл будут определять что куда выгружать

Больше информации с увеличением вербальности и опцией трассировки

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

Команда выше выведет следующее

Если вам нужно больше детальной информации, тогда вы можете использовать опцию –trace. Опция –trace включит полный дамп трассировки всех входящих/исходящих данных для заданного файла

Опции увеличения вербальности и трассировки пригодятся, когда curl терпит неудачу по каким-то причинам и мы не знаем почему.

Получаем определение слова и его перевод с использованием протокола DICT

Посмотреть список доступных словарей можно так:

Получить перевод слова с английского на русский можно так:

Больше информации по DICT можно найти прочитав RFC2229.

Использование прокси для загрузки файла

Мы можем указать cURL использовать прокси для определённых операций, это делается опцией -x. Нам нужно задать хост и порт прокси.

Отправка электронной почты с использованием протокола SMTP в curl

cURL также может быть использована для отправки электронной почты по протоколу SMTP. Вам нужно указать адрес от кого, адрес кому и IP адрес почтового сервера как показано ниже.

Когда команда будет введена, начнётся ожидание введения пользователем данных для письма. Когда вы закончите набирать сообщение, напечатайте . (точку) в качестве последней строки, и письмо будет немедленно отправлено.

Похожие темы

Решение проблемы с работой модуля cURL на PHP 5.6.... Те, кто использует cURL, после обновлений на 5.6.1, 5.5.17 столкнулись с тем, что модуль cURL перестал работать. Проблема с тех пор не исчезла. Даже...
Как узнать географическое расположение по IP адрес... Если вы хотите выяснить где физически на земле размещён определённый IP адрес (или веб-сайт), вы можете попробовать несколько онлайн поисковых служб...
Как отключить HTTP редирект в wget... Когда мы запускаем wget для извлечения URL X, который перенаправляет на другой URL Y, wget, по умолчанию, переходим автоматически на извлечённый URL...
Урок по cURL: основы использования и пара полезных... Для чего нужна cURL cURL отлично подходит для имитации действий пользователя в браузере. Реальный практический пример: вам нужно переза...
Как узнать, куда перенаправляет ссылка (как вычисл... На самом деле, задача эта вполне элементарная. Я был уверен, что в Гугле уже есть стопятьсот ответов на этот вопрос. Ответов, действительно много, н...