как сделать curl запрос windows
Утилита командной строки CURL
CURL — утилита командной строки для Linux или Windows, поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах сайтов и других операций с URL адресами. Поддержка CURL добавлена в множество различных языков программирования и платформ.
Запускаем командную строку, переходим в директорию curl/bin и пытаемся скачать главную страницу Google:
Следовать за редиректами
Сохранить вывод в файл
Сохраняем страницу Google в файл google.html :
Сохраняем документ gettext.html в файл gettext.html :
Загрузить файл, только если он изменён
Прохождение аутентификации HTTP
Получение и отправка cookie
Cookie используются сайтами для хранения некой информации на стороне пользователя. Сервер сохраняет cookie на стороне клиента (т.е. в браузере), отправляя заголовки:
А браузер, в свою очередь, отправляет полученные cookie обратно на сервер при каждом запросе. Разумеется, тоже в заголовках:
Передать cookie на сервер, как будто они были ранее получены от сервера:
Чтобы сохранить полученные сookie в файл:
Затем можно отправить сохраненные в файле cookie обратно:
Файл cookie.txt имеет вид:
Получение и отправка заголовков
По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:
Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен HEAD запрос):
А вот так можно отправить свой заголовок:
Отправка данных методом POST
Содержимое файла data.txt :
Пример URL-кодирования данных из файла перед отправкой POST-запроса:
Содержимое файла username.txt :
Загрузка файлов методом POST
Чтобы отправить на сервер данные такой формы:
Работа по протоколу FTP
Скачать файл с FTP-сервера:
Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней:
Запуск команд cURL из консоли Windows
есть ли способ установить cURL в Windows для запуска команд cURL из командной строки?
16 ответов
Если вы не в Cygwin, вы можете использовать собственные сборки Windows. Некоторые здесь:curl скачать мастер.
сначала вам нужно загрузить исполняемый файл cURL. Для Windows 64bit загрузите его из здесь и для Windows 32bit скачать с здесь После этого, сохраните на C: диск.
чтобы использовать его, просто откройте command prompt и введите:
люди, которые буквально не нуждаются в curl исполняемый файл, но вместо этого просто нужно, например, видеть или сохранять результаты запроса GET время от времени, можно использовать powershell напрямую. В обычной командной строке введите:
что, хотя немного многословно, похоже на ввод
в более Unix-иш среде.
обновление: мне нравится как Имранхафиз сделал еще один шаг в ответ. Однако я бы предпочел более простой cmd-скрипт, возможно, создающий следующего содержания:
который можно было бы назвать так же, как пример Unix-ish выше:
Если вы используете шоколадный диспетчер пакетов, вы можете установить cURL выполнив эту команду из командной строки или из PowerShell:
создайте пакетный файл в windows и наслаждайтесь cURL в windows:)
p.s. Если вы хотите, чтобы другая папка хранила исполняемый файл, Проверьте свои пути > echo %PATH%
Я также обнаружил, что если я положил Cygwin bin на мой путь windows, я могу запустить curl из командной строки windows. Он также даст вам доступ к таким вещам, как ls и grep
Я смог использовать это сайт чтобы легко загрузить и установить curl на моей машине Windows. Это заняло всего 30 секунд. Я использую Windows 7 (W / Admin privelages), поэтому я загрузил curl-7.37.0-win64.msi от http://curl.haxx.se/download.html.
кроме того, не забудьте перезагрузить консоль/терминал после установки curl, иначе вы получите те же сообщения об ошибках.
предполагая, что вы новичок в игре или не можете установить программное обеспечение из-за ограничений безопасности, вы можете использовать Scoop для установки curl. В powershell или окне команд выполните следующие команды. Примечание это предполагает, что вы имеете PowerShell версии 3.0+.
другое классное преимущество здесь в том, что это устанавливает программное обеспечение только для текущего пользователя.
установить исключение выполнения
установить curl. Вы можете увидеть предупреждение о недостающем хэше, но вы должны увидеть окончательное сообщение о том, что cURL был успешно установлен
Проверьте установку curl
после завершения установки нажмите на cygwin, чтобы открыть консоль curl в windows и работать над командами curl.
Я могу немного опоздать для этого, но я могу решить свою проблему curl в cmd для windows 10.
вот некоторые объяснения
Шаг 2: Поиск «Win64-Generic» и скачать «Win64 x86_64 7zip» по «Darren Owen»
Шаг 3: распакуйте файл скачать и установите сертификат » ca-bundle.ЭЛТ » не трогать завиток.exe
Шаг 6: в системной переменной нажмите «путь» и вставьте путь к папке файла в моем случае это «C:\curl\curl_7_53_1_openssl_nghttp2_x64»
Не забудьте перезагрузить систему в течение одного раза
из командной строки Windows запустите curl через Git Bash
для тех, кто ищет быстрое решение, после стандартной установки cygwin, но выяснение curl не работает на платформе win 10 x64:
скачать этой удаленный репозиторий, извлечение его и запуск:
сработало как заклинание. Я предполагаю, что у него есть предустановленная опция для curl.
Создание GET и POST-запросов с помощью Curl
cURL — это программное обеспечение, состоящее из утилиты командной строки и библиотеки, предназначенное для передачи данных по разнообразным протоколам (HTTP, FTP, POP3, IMAP, SMTP и мн. др.). Мы рассмотрим только утилиту командной строки, название которой мы будем записывать как «curl». Навыки, полученные при ее использовании, позволяют легко освоить работу с библиотекой libcurl. Кроме того, мы ограничимся формированием HTTP-запросов: GET и POST.
Предварительные сведения
Протокол HTTP
HTTP — это протокол, используемый при обмене данных между веб-сервером и программой-клиентом (например, браузером). Он состоит из строк ASCII-текста, отсылаемых от клиента к серверу для запроса какого-либо действия. При получении запроса сервер отвечает клиенту несколькими служебными текстовыми строками, а затем выдает запрошенное содержимое.
Формы
Формы представляют собой наборы полей, размещенные на веб-странице. Пользователь вводит в эти поля данные, затем нажимает на кнопку «OK» или «Отправить», после чего данные отправляются на сервер. Сервер принимает данные и решает, как поступить дальше: искать ли информацию в базе данных, показать ли введенный адрес на карте или использовать информацию для аутентификации пользователя. Разумеется, «решает» — означает, что на стороне сервера должна быть какая-то программа, которая принимает и обрабатывает присланные данные. Простейший пример: форма запроса поисковика Google.
Справка
Справку по curl можно получить, набрав в командной строке
$ — приглашение командной строки.
Получить содержимое страницы (GET)
Самый простой и обычный HTTP-запрос — получить содержимое заданного URL. URL может ссылаться на веб-страницу, изображение или какой либо-другой файл. Клиент отсылает GET-запрос на сервер и получает запрашиваемый документ. Если выполнить команду
Отправить GET-запрос из формы
Форма запроса может использовать метод GET. Например, так:
Для формирования GET-запроса, введите то, что ожидалось от формы:
Метод POST
Метод GET приводит к тому, что вся введенная информация отображается в адресной строке браузера. Очевидно, что это не самый лучший способ в тех случаях, когда нужно отправить конфиденциальные данные или когда объем введенной информации очень велик. Для решения этой проблемы протокол HTTP предоставляет пользователю еще один метод — POST. С его помощью клиент отправляет данные отдельно от URL, и поэтому в адресной строке браузера вы их не увидите.
Форма, генерирующая POST-запрос, отличается от предыдущей лишь методом отправки:
curl сформирует POST-запрос с теми же данными следующим образом:
Обратите внимание на то, что данные, которые вы отправляете серверу, должны быть правильно закодированы. curl не сделает этого за вас. К примеру, если вы хотите, чтобы данные содержали пробел, то вам нужно заменить этот пробел на %20 и т. п. Это одна из самых распространенных ошибок, в результате чего данные передаются не так, как нужно.
Загрузка файлов с помощью POST
Форма, с помощью которой пользователь может загрузить файл, выглядит примерно так:
Чтобы с помощью curl отослать данные в такую форму, введите:
Скрытые поля формы
Скрытые поля в формах являются одним из наиболее распространенных способов передачи информации о состоянии HTML-приложения. Такие поля не заполняются, они невидимы для пользователя, но передаются так же, как и обычные поля.
Пример формы с одним видимым и одним скрытым полями:
Чтобы отправить POST-запрос с помощью curl, вам не нужно задумываться о том, скрыто поле или нет — для curl все поля одинаковы:
Как выглядит POST-запрос «изнутри»
Когда с помощью curl вы заполняете форму и отсылаете ее данные на сервер, вы наверняка хотите, чтобы сформированный curl POST-запрос выглядел так же, как если бы он был выполнен с помощью браузера.
Простейший способ увидеть свой POST-запрос заключается в следующем:
Читайте также
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
Что Такое Curl. Как работает команда Curl: определение и примеры
Что такое curl?
На самом деле, curl – это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.
Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl – это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.
Команда curl
Перед тем как перейти к описанию того как может использоваться команда curl linux, давайте разберем саму утилиту и ее основные опции, которые нам понадобятся. Синтаксис утилиты очень прост:
$ curlопции ссылка
Теперь рассмотрим основные опции:
Это далеко не все параметры curl linux, но здесь перечислено все основное, что вам придется использовать.
Команда Curl для Работы с Файлами
Команды Curl могут загружать файлы из удалённой локации. Есть два способа это сделать:
Приведённая выше команда сохранит файл как testfile.tar.gz.
А эта команда сохранит его как newtestfile.tar.gz.
Если по какой-либо причине загрузка будет прервана, вы можете возобновить её с помощью следующей команды:
Curl также позволяет загрузить несколько файлов одновременно. Пример:
Если вы хотите загрузить несколько файлов с нескольких URL, перечислите их все в файле. Команды Curl могут быть объединены с xargs для загрузки различных URL-адресов.
Например, если у нас есть файл allUrls.txt, который содержит список всех URL-адресов для загрузки, то приведённый ниже пример выполнит загрузку всех файлов с этих URL.
Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:
В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.
Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.
Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.
Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:
А вот пример запроса POST:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp
Здесь text=Hello — это параметр запроса POST. Такое поведение похоже на HTML-формы.
Вы также можете указать несколько методов HTTP в одной команде curl. Сделайте это, используя опцию –next, например:
curl –data “text=Hello” https://myDomain.com/firstPage.jsp –next https://myDomain.com/displayResult.jsp
Команда содержит запрос POST, за которым следует запрос GET.
Каждый HTTP-запрос содержит агент пользователя, который отправляется как часть запроса. Он указывает информацию о браузере клиента. По умолчанию запрос содержит curl и номер версии в качестве информации об агенте пользователя. Пример вывода показан ниже:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:
Теперь вывод будет выглядеть так:
“GET / HTTP/1.1” 200 “_” ”My new Browser”
Команда Curl и Cookies
Утилиту можно использовать для проверки того, какие файлы cookie загружаются по URL. Допустим вы зашли на https://www.samplewebsite.com, вы можете вывести и сохранить файлы cookie в файл, а затем получить к ним доступ, используя команду cat или редактор Vim.
Вот пример такой команды:
Точно так же, если у вас есть файлы cookie в файле, вы можете отправить их на сайт. Вот, как это будет выглядеть:
curl –cookie Mycookies.txt https://www. samplewebsite.com
Curl и FTP
Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.
В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.
Вы также можете загружать файлы с помощью этой команды:
Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.
Ограничение Скорости Скачивания
Скачивая или загружая данные с помощью Curl, вы не можете знать, насколько большим будет вывод. Вы можете ограничить скорость скачивания, чтобы убедиться, что Curl не ограничивает пропускную способность канала.
Команда ниже ограничивает скорость скачивания до 100К:
Основной Синтаксис Команды Curl
Итак, давайте узнаем, как пользоваться утилитой. Основной синтаксис Curl выглядит следующим образом:
Самый простой пример использования Curl — для отображения содержимого страницы. Приведённая ниже команда отобразит домашнюю страницу testdomain.com.
Эта команда отобразит полный исходный код домашней страницы домена. Если протокол не указан, Curl интерпретирует его как HTTP.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Самая частая задача – это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:
Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:
Если загрузка была неожиданно прервана, вы можете ее возобновить:
Если нужно, одной командой можно скачать несколько файлов:
Еще одна вещь, которая может быть полезной администратору – это загрузка файла, только если он был изменен:
Данная команда скачает файл, только если он был изменен после 21 декабря 2017.
Ограничение скорости
Передача файлов
Или проверим отправку файла по HTTP, для этого существует специальный сервис:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Затем можно отправить cookie curl обратно:
Передача и анализ заголовков
Аутентификация curl
Точно так же будет выполняться аутентификация на серверах HTTP.
Использование прокси
Примеры использования cURL в PHP
GET запрос
$ch = curl_init(‘https://vk.com’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
POST запрос
$array = array(
‘login’ => ‘admin’,
‘password’ => ‘1234’
);
// Или предать массив строкой:
// curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array, ”, ‘&’));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
file_get_contents() так же умеет отправлять POST запросы:
PUT запрос
$ch = curl_init(‘https://cloud-api.yandex.net/v1/disk/’);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
DELETE запрос
HTTP-метод DELETE используется в REST API для удаления объектов.
$ch = curl_init(‘http://site.com/delete/999’);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘DELETE’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);PHP5
Скачивание файлов
Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE.
$ch = curl_init(‘http://yandex.ru’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
Отправка файлов на другой сервер
Отправка файлов осуществляется методом POST:
С PHP 5.5 такой метод загрузки файлов вызывает ошибку, поэтому следует применять CURLFile.
Также через curl можно отправить сразу несколько файлов:
Еще файлы можно отправить методом PUT, например так загружаются файлы в REST API Яндекс Диска.
8 примеров использования cURL вместе с PHP
1. Проверяем доступность определённого веб сайта
Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.
Замените URL в строке 3 на тот, который вам нужен. Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.
2. Замена cURL для функции file_get_contents()
Функция file_get_contents() очень полезная, но на многих хостингах она отключена. С помощью cURL можно написать функцию, которая будет работать в точности как file_get_contents().
function file_get_contents_curl($url) <
$ch = curl_init();
$data = curl_exec($ch);
curl_close($ch);
3. Получаем последний статус Twitter
С помощью PHP и cURL очень просто получить статус определённого пользователя. Данную информацию можно выводить в блоге.
Использовать функцию очень просто:
4. Twitter: проверяем отношения между двумя пользователями
Если вам нужно узнать, читает ли ваши твиты определенный пользователь, то можно задействовать API Twitter. Данный скрипт выводит true, если два пользователя, указанные на строчках 17 и 18, находятся в дружеских отношениях на Twitter. В противном случае возвращается false.
/* Персоны для проверки */
$person1 = ‘phpsnippets’;
$person2 = ‘catswhocode’;
/* Отправляем запрос на twitter */
$url = ‘https://api.twitter.com/1/friendships/exist’;
$format = ‘xml’;
5. Загружаем и сохраняем изображения со страницы с помощью cURL
Данная функция может быть очень полезна: задаем ей URL страницы и она сохраняет все изображения с нее на вашем сервере.
function getImages($html) <
$matches = array();
$regex = ‘
while ($i 6. Конвертируем валюту с помощью cURl и Google
Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.
7. Получаем информацию о размере файла с помощью cURL
Как определить размер определенного файла, расположенного на другом сервере? Поможет следующая функция. Она получает 3 параметра: URL файла, и (если требуется) имя пользователя и пароль.
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
8. Загрузка через FTP с помощью cURL
PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:
// Открываем файл
$file = fopen(“/path/to/file”, “r”);
// URL содержит большую часть нужной информации
$url = “ftp://username:password@mydomain.com:21/path/to/new/file”;
// Устанавливаем режим ASCII (то есть – файл текстовой)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
$output = curl_exec($ch);
curl_close($ch);
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://www.catswhocode.com/blog/amazing-things-to-do-with-php-and-curl
Перевел: Сергей Фастунов
Урок создан: 14 Февраля 2012
Просмотров: 124011
Правила перепечатки
5 последних уроков рубрики “PHP”
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете