- Команда Curl в Linux с примерами
- Установка Curl
- Установите Curl в Ubuntu и Debian
- Установите Curl на CentOS и Fedora
- Как использовать Curl
- Сохранить вывод в файл
- Скачать несколько файлов
- Возобновить загрузку
- Получить HTTP-заголовки URL-адреса
- Проверьте, поддерживает ли веб-сайт HTTP / 2
- Следить за перенаправлениями
- Сменить User-Agent
- Укажите максимальную скорость передачи
- Передача файлов через FTP
- Отправить файлы cookie
- Использование прокси
- Выводы
- How to use curl command with proxy username/password on Linux/ Unix
- Unix and Linux curl command with proxy syntax
- Linux use curl command with proxy
- How to use the specified proxy server with curl on Unix
- How to use socks protocol?
- How do I configure and setup curl to permanently use a proxy connection?
- Использование HTTP proxy и SOCKS в Linux
- curl: передача данных через proxy
- wget: закачка файлов через proxy
- ssh: доступ к серверам
- Соксификатор dante
- DNS запросы через proxy
Команда Curl в Linux с примерами
curl — это утилита командной строки для передачи данных с сервера или на сервер, предназначенная для работы без взаимодействия с пользователем. С помощью curl вы можете загружать или выгружать данные, используя один из поддерживаемых протоколов, включая HTTP, HTTPS, SCP , SFTP и FTP . curl предоставляет ряд параметров, позволяющих возобновить передачу, ограничить полосу пропускания, поддержку прокси, аутентификацию пользователя и многое другое.
В этом руководстве мы покажем вам, как использовать инструмент завивки, на практических примерах и подробных объяснениях наиболее распространенных вариантов завивки.
Установка Curl
Сегодня пакет curl предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет Curl в вашей системе, откройте консоль, введите curl и нажмите Enter. Если у вас установлен curl , система напечатает curl: try ‘curl —help’ or ‘curl —manual’ for more information . В противном случае вы увидите что-то вроде curl command not found .
Если curl не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Установите Curl в Ubuntu и Debian
Установите Curl на CentOS и Fedora
Как использовать Curl
Синтаксис команды curl следующий:
В простейшей форме при вызове без каких-либо параметров curl выводит указанный ресурс на стандартный вывод.
Например, чтобы получить домашнюю страницу example.com вы должны запустить:
Команда напечатает исходный код домашней страницы example.com в окне вашего терминала.
Если протокол не указан, curl пытается угадать протокол, который вы хотите использовать, и по умолчанию будет использовать HTTP .
Сохранить вывод в файл
Чтобы сохранить результат команды curl , используйте параметр -o или -O .
vue-v2.6.10.js -o сохраняет файл с предопределенным именем файла, которым в приведенном ниже примере является vue-v2.6.10.js :
Верхний регистр -O сохраняет файл с исходным именем:
Скачать несколько файлов
Чтобы загрузить сразу несколько файлов, используйте несколько параметров -O , за которыми следует URL-адрес файла, который вы хотите загрузить.
В следующем примере мы загружаем iso-файлы Arch Linux и Debian:
Возобновить загрузку
Вы можете возобновить загрузку, используя параметр -C — . Это полезно, если ваше соединение прерывается во время загрузки большого файла, и вместо того, чтобы начинать загрузку с нуля, вы можете продолжить предыдущую.
Например, если вы загружаете iso-файл Ubuntu 18.04 с помощью следующей команды:
и внезапно ваше соединение прерывается, вы можете возобновить загрузку с помощью:
Получить HTTP-заголовки URL-адреса
Заголовки HTTP — это пары ключ-значение, разделенные двоеточиями, содержащие такую информацию, как пользовательский агент, тип контента и кодировка. Заголовки передаются между клиентом и сервером с запросом или ответом.
Используйте параметр -I чтобы получить только HTTP-заголовки указанного ресурса:
Проверьте, поддерживает ли веб-сайт HTTP / 2
Чтобы проверить, поддерживает ли конкретный URL новый протокол HTTP / 2 , —http2 заголовки HTTP с помощью -I вместе с параметром —http2 :
Параметр -s указывает curl работать в автоматическом (тихом) режиме и скрывать индикатор выполнения и сообщения об ошибках.
Если удаленный сервер поддерживает HTTP / 2, curl печатает HTTP/2.0 200 :
В противном случае ответ будет HTTP/1.1 200 :
Если у вас curl версии 7.47.0 или новее, вам не нужно использовать параметр —http2 поскольку HTTP / 2 включен по умолчанию для всех соединений HTTPS.
Следить за перенаправлениями
По умолчанию curl не следует за заголовками HTTP Location.
Если вы попытаетесь получить версию google.com без www, вы заметите, что вместо получения источника страницы вы будете перенаправлены на версию с www:
Параметр -L указывает curl следовать любому перенаправлению, пока не достигнет конечного пункта назначения:
Сменить User-Agent
Иногда при загрузке файла удаленный сервер может быть настроен так, чтобы блокировать пользовательский агент Curl или возвращать различное содержимое в зависимости от устройства посетителя и браузера.
В подобных ситуациях для эмуляции другого браузера используйте параметр -A .
Например, для эмуляции Firefox 60 вы должны использовать:
Укажите максимальную скорость передачи
Параметр —limit-rate позволяет ограничить скорость передачи данных. Значение может быть выражено в байтах, килобайтах с суффиксом k , мегабайтах с суффиксом m и гигабайтах с суффиксом g .
В следующем примере curl загрузит двоичный файл Go и ограничит скорость загрузки до 1 МБ:
Эта опция полезна для предотвращения использования curl всей доступной полосы пропускания.
Передача файлов через FTP
Чтобы получить доступ к защищенному FTP-серверу с помощью curl , используйте параметр -u и укажите имя пользователя и пароль, как показано ниже:
После входа в систему команда выводит список всех файлов и каталогов в домашнем каталоге пользователя.
Вы можете загрузить один файл с FTP-сервера, используя следующий синтаксис:
Чтобы загрузить файл на FTP-сервер, используйте -T за которым следует имя файла, который вы хотите загрузить:
Отправить файлы cookie
Иногда вам может потребоваться выполнить HTTP-запрос с определенными файлами cookie для доступа к удаленному ресурсу или для отладки проблемы.
По умолчанию при запросе ресурса с помощью curl файлы cookie не отправляются и не сохраняются.
Чтобы отправить файлы cookie на сервер, используйте переключатель -b за которым следует имя файла, содержащего файлы cookie, или строку.
Например, чтобы загрузить rpm-файл Oracle Java JDK jdk-10.0.2_linux-x64_bin.rpm вам необходимо передать файл cookie с именем oraclelicense со значением a :
Использование прокси
curl поддерживает различные типы прокси, включая HTTP, HTTPS и SOCKS. Для передачи данных через прокси-сервер используйте параметр -x ( —proxy ), за которым следует URL-адрес прокси.
Следующая команда загружает указанный ресурс с помощью прокси на 192.168.44.1 порт 8888 :
Если прокси-сервер требует аутентификации, используйте параметр -U ( —proxy-user ), за которым следует имя пользователя и пароль, разделенные двоеточием ( user:password ):
Выводы
curl — это инструмент командной строки, который позволяет передавать данные с удаленного хоста или на него. Это полезно для устранения неполадок, загрузки файлов и многого другого.
Примеры, показанные в этом руководстве, просты, но демонстрируют наиболее часто используемые параметры curl и призваны помочь вам понять, как работает команда curl .
Для получения дополнительной информации о curl посетите страницу документации по Curl .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
How to use curl command with proxy username/password on Linux/ Unix
Unix and Linux curl command with proxy syntax
Another option is to pass the -x option to the curl command. To use the specified proxy:
Linux use curl command with proxy
First set the http_proxy:
In this example, I’m downloading a pdf file:
$ export http_proxy=»vivek:myPasswordHere@10.12.249.194:3128/»
$ curl -v -O http://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf
OR use the -x option:
curl -x ‘http://vivek:myPasswordHere@10.12.249.194:3128’ -v -O https://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf
Sample outputs:
Fig.01: curl in action (click to enlarge)
How to use the specified proxy server with curl on Unix
$ curl -x http://prox_server_vpn:3128/ -I https://www.cyberciti.biz/faq/howto-nginx-customizing-404-403-error-page/
How to use socks protocol?
The syntax is same:
How do I configure and setup curl to permanently use a proxy connection?
/.curlrc file using a text editor such as vim:
$ vi
/.curlrc
Append the following:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Save and close the file. Another option is create a bash shell alias in your
Remember, the proxy string can be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. If the port number is not specified in the proxy string, it is assumed to be 1080. The -x option overrides existing environment variables that set the proxy to use. If there’s an environment variable setting a proxy, you can set proxy to “” to override it. See curl command man page here for more info.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
I want to learn linux + networking for example iptables etc.
What is the best place to start?
I need a help to curl comand to download a large files from google drive, nothing works for me, sorry about my poor english.
thx for the post. this is exactly what i needed.
Источник
Использование HTTP proxy и SOCKS в Linux
В Linux существует много полезных консольных команд, которые при необходимости хотелось бы запустить через proxy. Некоторые приложения имеют встроенную поддержку proxy, а некоторые нет. Далее описано как пользоваться востребованными утилитами через proxy, даже теми, которые этой поддержки не имеют.
curl: передача данных через proxy
curl имеет полноценную поддержку как HTTP proxy так и SOCKS.
Для тестирования возможно использовать proxy сервера из бесплатных списков (socks — sockslist.net, и HTTP proxy — proxyhttp.net). Проверка IP адреса будет производиться с помощью ресурса check-host.net
Часть параметров curl можно записать в файл
С помощью time и curl также можно замерить время отклика сервера:
Результат будет выглядеть так:
wget: закачка файлов через proxy
wget имеет встроенную поддержку proxy. Недостаток лишь в том, что только поддержку HTTP proxy. Для использования совместно с SOCKS рекомендуется использовать соксификатор dante.
Чтобы все время не указывать —proxy-user и —proxy-password можно их прописать в файл
ssh: доступ к серверам
Для доступа к серверам через ssh и proxy также лучше использовать соксификатор dante.
Соксификатор dante
С помощью socksify можно направить через proxy почти любое приложение, не только консольное.
Чтобы все время не вводить данные о proxy можно создать файл /etc/socks.conf
Пример для SOCKS:
Пример для HTTP proxy с авторизацией:
А также экспортировать переменные SOCKS_USERNAME и SOCKS_PASSWORD, если для SOCKS или HTTP proxy требуется авторизация:
DNS запросы через proxy
Часто требуется чтобы и преобразование имен происходило через proxy. Если использовать dante, то запрос на преобразование имен идет и через proxy, и через именной сервер указанный в /etc/resolv.conf . Понять почему же идет два одинаковых запроса вместо одного не удалось. Поэтому можно предложить два варианта:
1) Закомментировать именные сервера в файле /etc/resolv.conf, чтобы преобразование имен шло только через proxy. Это отразится на всей системе.
2) Изменить /etc/resolv.conf и выставить именные сервера необходимой страны, или просто отличные от серверов провайдера. Например установить сервера Google:
Чтобы данные не были перезаписаны именными серверами провайдера (при переподключении), можно запретить обновление списка именных серверов сетевому менеджеру (NetworkManager/wicd) или DHCP-клиенту (спасибо ergil за корректировку).
Или воспользоваться «грубым» методом — запрещением изменения файла /etc/resolv.conf:
Если есть какие-то дополнения, пожалуйста, напишите, это будет полезно узнать и применить.
Источник