# Команда curl. Синтаксис

**URL:** <https://383.su/t/komanda-curl-sintaksis/266>\
**Category:** Linux\
**Created:** [29.Март.2024 13:10:05 UTC](https://383.su/t/komanda-curl-sintaksis/266 "2024-03-29T13:10:05Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![cyb3r](https://383.su/user_avatar/383.su/cyb3r/32/1273_2.png) [@cyb3r](https://383.su/u/cyb3r)\
**Post date:** [29.Март.2024 13:10:05 UTC](https://383.su/t/komanda-curl-sintaksis/266/1 "2024-03-29T13:10:05Z")

</div>

Originally published at: [Команда curl. Синтаксис. — cyb3r](https://cyb3r.su/komanda-curl-sintaksis/)

_Сurl_&nbsp;– утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.

### Синтаксис и опции curl

Синтаксис команды следующий:

```
curl [ОПЦИИ] [АРГУМЕНТ]
```

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

-#&nbsp;— отображать простой прогресс-бар во время загрузки;

-0&nbsp;— использовать протокол http 1.0;

-1&nbsp;— использовать протокол шифрования tlsv1;

-2&nbsp;— использовать sslv2;

-3&nbsp;— использовать sslv3;

-4&nbsp;— использовать ipv4;

-6&nbsp;— использовать ipv6;

-A&nbsp;— указать свой USER\_AGENT;

-b&nbsp;— сохранить Cookie в файл;

-c&nbsp;— отправить Cookie на сервер из файла;

-C&nbsp;— продолжить загрузку файла с места разрыва или указанного смещения;

-m&nbsp;— максимальное время ожидания ответа от сервера;

-d&nbsp;— отправить данные методом POST;

-D&nbsp;— сохранить заголовки, возвращенные сервером в файл;

-e&nbsp;— задать поле Referer-uri, указывает с какого сайта пришел пользователь;

-E&nbsp;— использовать внешний сертификат SSL;

-f&nbsp;— не выводить сообщения об ошибках;

-F&nbsp;— отправить данные в виде формы;

-G&nbsp;— если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;

-H&nbsp;— передать заголовки на сервер;

-I&nbsp;— получать только HTTP заголовок, а все содержимое страницы игнорировать;

-j&nbsp;— прочитать и отправить cookie из файла;

-J&nbsp;— удалить заголовок из запроса;

-L&nbsp;— принимать и обрабатывать перенаправления;

-s&nbsp;— максимальное количество перенаправлений с помощью Location;

-o&nbsp;— выводить контент страницы в файл;

-O&nbsp;— сохранять контент в файл с именем страницы или файла на сервере;

-p&nbsp;— использовать прокси;

—proto&nbsp;— указать протокол, который нужно использовать;

-R&nbsp;— сохранять время последнего изменения удаленного файла;

-s&nbsp;— выводить минимум информации об ошибках;

-S&nbsp;— выводить сообщения об ошибках;

-T&nbsp;— загрузить файл на сервер;

-v&nbsp;— максимально подробный вывод;

-y&nbsp;— минимальная скорость загрузки;

-Y&nbsp;— максимальная скорость загрузки;

-z&nbsp;— скачать файл, только если он был модифицирован позже указанного времени;

-V&nbsp;— вывести версию.

Основные опции мы рассмотрим на простых примерах.

### Просмотр версии curl

Опция -V или —version выводит не только версию curl, но и краткую информацию о поддерживаемых протоколах и функциях:

```
$ curl --version
```
 ![](https://383.su/uploads/default/original/2X/b/b2663119ad96fa67d4f3eb27272d0582da063c56.jpeg)
### 

### Скачивание файла

Если вам требуется скачать файл, запустите&nbsp;_curl_&nbsp;с опцией&nbsp;_–O_&nbsp;или&nbsp;_–o_. Первая из них сохраняет файл в текущей рабочей директории под тем же именем, что и в удаленном месторасположении. Вторая опция позволяет вам указать другое имя и/или место для скачивания.

Cохранение файла под исходным именем (yourfile) в текущей рабочей директории.

```
$ curl -O http://yourdomain.com/yourfile
```

Cохранение файла под именем newfile в директории /tmp/examplе/.

```
$ curl -o /tmp/examplе/newfile http://yourdomain.com/yourfile.tar.gz - сохранение файла под именем newfile.tar.gz в директории /tmp/examplе/
```

### Возобновление прерванной загрузки

Если скачивание по какой-то причине было прервано (например, пользователь нажал Ctrl+C), вы легко можете возобновить его с момента остановки при помощи опции&nbsp;_-C –_&nbsp;(дефис, С, тире):

```
$ curl -C - -O http://yourdomain.com/yourfile
```

### Скачивание нескольких файлов

Следующая команда позволит вам скачать info.html с http://yoursite.com и about.html c http://mysite.com в один прием:

```
$ curl -O http://yoursite.com/info.html/info -O http://mysite.com/about.html/about
```

Если использовать&nbsp;_curl_&nbsp;вместе с командой&nbsp;_xargs_, можно скачивать файлы в соответствии со списком URL, заданном в файле (в данном примере listurls.txt):

```
$ xargs -n 1 curl < listurls.txt
```

### Использование прокси-сервера

Если вы подключены через прокси-сервер, нужно указать его команде&nbsp;_curl_&nbsp;при помощи следующих опций (в данном примере имя сервера proxy.yourdomain.com, порт 8080, имя пользователя user, пароль qwerty1234):

```
$ curl -x proxy.yourdomain.com:8080 -U user:qwerty1234 -O http://yourdomain.com/yourfile
```

Если ваш прокси-сервер не требует аутентификации, опцию -U user:qwerty1234 указывать не нужно.

### Запрос HTTP-заголовков

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

Для запроса HTTP-заголовков веб-сайта выполните команду с опцией -I:

$ curl -I https://itproffi.ru

 ![](https://383.su/uploads/default/original/2X/2/2293af41d2ed91fd7ff67b9586d945f4d4f3e3ad.jpeg)

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

### cURL POST-запросы с параметрами

Следующая команда отправит на https://yourdomain.com/info.php параметры firstName и lastName с соответствующими значениями:

```
$ curl --data "firstName=Ivan&lastName=Ivanov" https://yourdomain.com/info.php
```

Этим приемом можно пользоваться для симуляции работы обычных веб-форм.

```
Скачивание файлов с FTP-сервера
```

Следующая команда скачивает в текущую рабочую директорию файл yourfile с удаленного FTP-сервера ftp://yourftpserver (имя пользователя user, пароль qwerty1234):

```
$ curl -u user:qwerty1234 -O ftp://yourftpserver/yourfile
```

Если FTP-сервер поддерживает анонимный вход, параметр –u с именем пользователя и пароля указывать не нужно.

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

Для загрузки локального файла mylocalfile.tar.gz воспользуйтесь следующей командой:

```
$ curl -u user:qwerty1234 -T mylocalfile.tar.gz ftp://yourftpserver
```

### Указание агента пользователя

Агент пользователя – часть информации HTTP-запроса. Она показывает, каким браузером пользуется клиент. Можно посмотреть, что имеющаяся версия&nbsp;_curl_&nbsp;передает по умолчанию и установить новое значение:

```
$ curl -I http://localhost --user-agent "I am a new web browser"
```

### Запись файлов cookie с веб-сайта

Хотите посмотреть, какие файлы cookie скачиваются на ваш компьютер, когда вы заходите на определенный сайт? Опция —cookie-jar сохраняет их список в файл, который в дальнейшем можно просмотреть при помощи команды cat.

```
$ curl --cookie-jar cookies.txt https://itproffi.ru/
```

### Отправка файлов cookie на сайт

Полученные в предыдущем примере файлы cookie можно использовать в дальнейших запросах к тому же самому сайту:

```
$ curl --cookie cookies.txt https://itproffi.ru
```

### Изменение разрешения имен

Если вы веб-разработчик и хотите протестировать локальную версию сайта, прежде чем загружать его на сервер, при помощи опции&nbsp;_—resolve_&nbsp;можно указать&nbsp;_curl_&nbsp;выполнять разрешение имени вашего сайта на адрес локального узла, например:

```
$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/
```

Таким образом, при запросе на http://www.yourdomain.com curl будет запрашивать сайт с локального узла, а не использовать DNS или файл /etc/hosts.

### Ограничение скорости скачивания

Чтобы&nbsp;_curl_&nbsp;не занимал всю пропускную способность канала, можно ограничить скорость скачивания при помощи опции&nbsp;_—limit-rate_:

```
$ curl --limit-rate 100K http://yourdomain.com/yourfile -O
```

### Заключение

Мы рассмотрели краткую историю появления curl и наиболее характерные примеры применения этой команды. Для более подробной информации можно обратиться к соответствующей man-странице.
