- Команда Curl в Linux с примерами
- Установка Curl
- Установите Curl в Ubuntu и Debian
- Установите Curl на CentOS и Fedora
- Как использовать Curl
- Сохранить вывод в файл
- Скачать несколько файлов
- Возобновить загрузку
- Получить HTTP-заголовки URL-адреса
- Проверьте, поддерживает ли веб-сайт HTTP / 2
- Следить за перенаправлениями
- Сменить User-Agent
- Укажите максимальную скорость передачи
- Передача файлов через FTP
- Отправить файлы cookie
- Использование прокси
- Выводы
- Доступ по HTTPS с помощью разных клиентов
- Ошибка при удалении приложения CURL из Centos8
- curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
- ibiza global radio и curl
- Правильный запрос curl
- Curl: узнать причину отказа в авторизации.
- Прокси для curl
- Почему отправка писем с помощью curl является небезопасной
- содержание файла mail.txt
- и получаю ошибку
- curl — как пометить письма как прочитанные?
- Мужик взбесился из-за curl
- Curl + grep
- curl обрезает имя файла
- Пополнить счет мобильного телефона из командной строки
- специалисты по окурливанию bash или питон есть?
- задача собрать полученное curl-ом в виде таблички
- гость|60|70|30|
- Curl не слушается
- Curl переезжает на Rust
- Авторизоваться и получить главную страницу с помощью curl.
- Пауза 6 секунд при подключении
- Php curl post iptables открытие порта на локальной машине
- curl: скачать все данные форм
Команда 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 .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Доступ по HTTPS с помощью разных клиентов
Дано: есть некий HTTPS-ресурс, про который известно, что он может отвечать, используя TLS 1.2. И есть правильно (до определённой степени) настроенные iptables :
И вот теперь я пытаюсь зайти на этот самый ресурс по HTTPS:
Всё хорошо. А теперь попробуем то же самое с помощью curl :
И тишина. И, что характерно, причина отнюдь не в User-Agent , потому что curl -A ‘Wget/1.20.1 (linux-gnu)’ -v —tlsv1.2 —tls-max 1.2 https://www.linkedin.com тоже не получает ответа.
Совершенно аналогичным образом, lynx и elinks как раз работают, а w3m , links и обычные браузеры как раз нет.
Update: openssl s_client -connect www.linkedin.com:443 лишь устанавливает TCP-соединение, и не более того, так что отладочной информации, увы, нет.
Update 2: призываю всех проголосовать за Issue 908132: FR: Support for Encrypted SNI (ESNI).
Ошибка при удалении приложения CURL из Centos8
Всем доброго времени суток. При попытке удалить приложение curl (yum remove curl) из Centos8 (Linux version 4.18.0-305.19.1.el8_4.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1)) выдается ошибка: Error: Problem: The operation would result in removing the following protected packages: dnf (try to add ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages).
Гугль не помог. Пробовал на иных приложениях, удаляет, ставит без проблем.
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Пытаюсь установить pip на centos 5, но после команды
Инфа по версиям:
Предполагаю что проблема в том что curl вяжется к старой версии openssl, но как фиксить не понимаю
ibiza global radio и curl
Откуда стащить и как подсунуть curl-у серификат для https://listenssl.ibizaglobalradio.com:8024. Хочу снова слышать Ибицу в mpd.
Правильный запрос curl
Подскажите пожалуйста как правильно составить команду на скачивание, если стоит защита на сервере. https://icedrive.net/downloads/portable/Icedrive_Portable_Linux-x64.AppImage
Если просто через curl то ошибка 1020
Curl: узнать причину отказа в авторизации.
SFTP. Курлом пытаюсь скачать файл с авторизацией по ключу.
Как узнать что именно не так? Если подключаться по SSH с этим ключом – пускает. Если курлом пытаться стянуть файл с авторизацией по логину-паролю – пускает.
Открытю часть ключа деллал ssh-keygen-ом из закрытого, потому что курл сам не осилил почему-то
Если стянуть с сайта курла сишный пример работы по sftp, подправить опции под свой случай – то же самое что и с консольным, инфы дополнительной нет.
Может важно: сервер OpenSSH for Windows, опыты провожу, естессна, под онтопиком.
Прокси для curl
Добрый день вам знатоки! Являюсь начинающим познавателем ОС LINUX поэтому просьба сильно не удивляться моим вопросам )
Ситуация: Есть web-сервис, который работает на tomcat. Данный сервис пользуется КриптоПро CSP 4,0. Ввиду окончания действия сертификатов, крипта пытается напрямую их скачать. И все бы ничего, но в организации прямой доступ в инет закрыт и приходится рассматривать вариант пройти через прокси. Здесь стоит уточнить, что крипта пытается скачать серты посредством curl, вивду чего была добавлена переменная окружения для соответствующего пользователя. Результат: посредством curl из командной строки, сертификат качается (разумеется, под нужным пользователем), но вот беда: когда tomcat пытается инициализировать крипту (под данным пользователем все качается) и та начинает качать серты, то в логах крипты видно ошибки вида «UrlRetriever failed (CURLcode: 12029 URL:…», т.е. скачать не получается ввиду отсутствия доступа к сертификату. Т.е. если говорить проще, то все качается нормально черзе curl, а через tomcat/криптопро — нет. Как предположение: прописаная прокся в переменной окружения пользователя, работает только из консоли (интерактивного сеанса пользователя). Вопрос: насколько верно данное утверждение и что в таком случае делать? Если вариант — бред, то какое возможно решение?
Почему отправка писем с помощью curl является небезопасной
что бы отправить письмо через сервер gmail мне потребовалось настроить свой аккаунт gmail так что бы он позволял небезопасным приложениям использовать его. после этого письмо отправилось, но попало в спам. но с такой же проблемой я столкнулся так же с корпоративной почтой, через которую не удается отправить письмо, хотя с теми же настройками сервера почты(например в ipmi) письма успешно доставляются.
я выполняю следующую команду:
curl —url «smtp://webmail.avilex.ru:587» —ssl-reqd —mail-from «from@domain» —mail-rcpt «recipient» —upload-file mail.txt —user «user:password» —insecure
содержание файла mail.txt
и получаю ошибку
curl: (56) Failure when receiving data from the peer
можно ли как то сделать так что бы сервер считал curl безопасным? или есть еще какие то библиотеки для Си что бы можно было отправлять письма?
curl — как пометить письма как прочитанные?
Мне нужно пометить все письма в INBOX как прочитанные. Пользуясь хелпами curl написал такое:
Мужик взбесился из-за curl
И направил его автору письмо, где пообещал прибить его, автор ответил и удивительно, но и ему ответили. Зацените как его порвало:
Мне плевать. Твое дерьмовое ПО послужило вектором атаки, из-за которой я потерял многомиллионный оборонный проект.
Они использовали твое дерьмовое ПО, чтобы украсть root у меня и у многих других. Из-за этого только на прототипировании я потерял более 15 тысяч долларов.
С октября я живу в изоляции — всему виной твое дерьмовое ПО, из-за которого долбаная Google-шпана может развести меня, пытаясь выманить из изоляции, поскольку они слишком бедны, чтобы представлять, что делают.
Знаешь, что я сделал, чтобы заслужить это? Я пытался разработать торговый путь в сфере технологий и разработать методики обучения на основе проектов, чтобы детки были при деле. И знаешь, кто во всех этих файлах? Ты. Это отвратительно. Меня взломали в октябре 2020, перехватив трафик федерального сервера, и всем этим я обязан тебе.
Мне пришлось сидеть и смотреть вот на это:
1. fireeye в октябре 2020;
2. Solarwinds в октябре 2020;
3. взлом модемов Zyxel в октябре 2020;
4. множество векторов атаки на Sigover с помощью XML injection;
5. стохастическая шаблонизация в JS с использованием выражений сравнения для записи в регистры данных;
6. 50-миллиардные компании охотятся за мной, поскольку я разоблачил их дерьмовое вредоносное ПО.
И меня взломали и перенаправили важную корреспонденцию в другое место. Какой-то больной ублюдок разрушил мою жизнь с помощью кода с твоим именем. Из-за этой ситуации я даже не могу уехать из страны; если уж ты смог запилить код, который гадит всем подряд, то мне совершенно наплевать на твои чувства по этому поводу.
Ты построил гоночный болид для Формулы-1, а ключи бросил шпане с раздутым эго. А теперь из-за всего этого мусора мне приходится разбираться с уязвимостями нулевого дня в Win10.
Я потерял свою семью, свою страну, своих друзей, свой дом и 6 лет работы, пытаясь построить лучшее будущее для потомков. И во всем этом виноват твой код. Этот код используется для того, чтобы похищать root и внедрять эксплойты. Этот код используется для шантажа.
Так что я ни капельки не расстроен. Ты прекрасно представлял себе возможности этого кода. И думал, что все это большая шутка. А я не смеюсь. Я уже давно прошел эту точку. /- Al
Еще в одном письме такой кусок:
Есть проект: Анализ риска военных операций в урбанизированной местности с помощью широкополосного анализа электромагнитного спектра с использованием различных преобразований Фурье. Ты и этот David Krider, кем бы он ни был, вы часть всего этого.
— Взломы федеральных серверов;
— соучастие в покушение на убийство;
Как я понял, мужик в штатах потерял работу из-за того, что его или даже его заказчиков расхакали с использованием curl. Его вывод — автор curl — большая бяка, плохой парень. Хотя curl даже не хакерский инструмент, просто удобен для автоматизации некоторых сетевых операций. А может это и вообще бред сумасшедшего, начитавшегося про взломы и каким-то образом вообразившего, что curl как-то связан с ними.
Curl + grep
Ребята, всем привет! Вопрос таков: Хочу curl’ом отрыть сайт, собрать всё что заключено в тег «>НУЖНАЯ_ИНФА, и записать всё это построчно в файл. Помогите пожалуйста. Прошу прощения если тема не в тот раздел.
curl обрезает имя файла
запускаю команду curl «https:xxxxx» -o /xxx/xxxx/yyyyy.csv задаю имя явно, на выходе получаю файл в нужной папке но с именем YYYYY
1.CSV причем на одном сервере команда отрабатывается нормально, на другом с таким эффектом какие настройки шелла копать?
Пополнить счет мобильного телефона из командной строки
Как можно автоматизировать пополнение мобильного счета из командной строки (bash скрипт)?
Для простоты — путь это будут повторные пополнения счета одного и того же телефона на разные суммы (менее 1000 руб).
Желательно без подтверждения оплаты кодом из смс (при повторных оплатах).
Рассмотрю все варианты, кроме автоплатежей через сайт оператора.
Например через платежные системы, счета которых надо заранее пополнить вручную.
или с оплатой через карту, данные которой будут храниться без шифрования (можно завести для этого отдельную карту).
специалисты по окурливанию bash или питон есть?
специалисты по bash или питону есть? Мой приятель и коллега — настоящий хакер, он уронил сервер со стола на пол. Диск не читается. Мне бы завтра пережить.
Сейчас я поднял nginx с файлами в json они должны выводится на табло, картинку или таблицу из экселя ставить не вариант слишком много возни с перенастройкой табло. Условно выглядит минимально вот так, помогите с заготовкой дальше я сам.
задача собрать полученное curl-ом в виде таблички
клиент | суп| котлета| пюре|
гость|60|70|30|
На сервере много всего было, меня за это трахнут, а за студенческую столовку просто убьют. Бэкапы есть, но сейчас недоступны.
Curl не слушается
Говорю жахни пост по ссылке, игнорь ssl.
$respObject->Url — строка с https ссылкой
$postData — строка с текстом длиной дцать символов
А он в ответ шлёт меня далеко.
$html == false
curl_error($ch) == «SSL certificate problem: unable to get local issuer certificate»
curl_getinfo($ch):
Curl переезжает на Rust
Как ты, наверное, слышал, Rust зачастую используется как замена языку C, позволяющая избежать множества проблем, связанных с утечками памяти и безопасностью.
Daniel Stenberg, один из авторов curl, написал, что hyper – библиотека для работы с HTTP в Rust – в будущем будет использоваться как бэкенд для curl для работы с HTTP.
Авторизоваться и получить главную страницу с помощью curl.
Не проходит авторизация с указанием пароля
Если пароль указать вручную, то авторизация проходит без проблем.
Как нужно указывать пароль чтобы авторизация была успешной.
Пауза 6 секунд при подключении
Несколько месяцев замечаю, что страницы в браузерах стали медленно открываться. Грузится всё нормально, но перед открытием страницы на несколько секунд задумывается. Но не особо мешало.
Сегодня понадобилось скачивать страницы скриптом. Оказалось, задержка перед каждым подключением строго 6 секунд. Если в одну команду CURL вставить несколько URL-ов, для всех используется общее подключение, и пауза только перед первым.
Вопрос: это какие-то закидоны Мегафона и Net by Net/Wifire, или это так снижают нагрузку в связи с пандемией?
И чтобы 2 раза не спрашивать: кто-нибудь знает, как в curl отказаться от скачивания страницы, если в заголовке возвращает 404? —fail
Php curl post iptables открытие порта на локальной машине
Сервер1 на айпи 1.1.1.1, вебсервер на порту 80 Сервер2 на айпи 2.2.2.2, вебсервер апач на порту 99
На сервере1 находится php скрипт, который отправляет сообщение с 80 порта в сторону сервера2 через curl методом post на 99 порт
почему нужно на сервере1 открывать порт 99 в фаерволе чтобы запрос ушел на сервер2 на порт 99.
p.s. Правило iptables выглядит так: -A ALLOWOUT ! -o lo -p tcp -m tcp –dport 99 -m owner –uid-owner 1258 -j ACCEPT
curl: скачать все данные форм
Хитрая задача (для меня). Есть сайт с формами (веб-интерфейс железки) — куча параметров. Мне нужно curl-ом из консоли переключить один параметр сначала на одно значение, а потом вернуть на предыдущее (ну типа передернуть один параметр).
Отсюда вопрос. Как мне узнать какие параметры там стоят чтобы их передать без изменений, а поменять только один нужный мне. На той стороне сишный cgi-bin которому нужен весь комплект параметров (порядка 70, убираешь любой и уже ничего не работает). Как вариант, можно слить полные параметры из инспектора браузера (я сейчас так и сделал) и для каждого случая отправлять два набора. Но если там в какой-то настройке что-то будет не совпадать с моей заготовкой, то моим запросом тот параметр переустановится в неправильный.
Резервный вариант это писать на каком-нидь пистоне/php полноценный парсер и все такое. Но хотелось бы обойтись только bash-ем и всякими curl/grep/awk/sed и т.д.
Источник