Аналог curl для windows

Обновлено: 04.07.2024

Microsoft делает Windows 10 еще более совершенной и эффективной, постепенно интегрируя популярные приложения и службы Linux непосредственно в Windows.

Сначала у нас появилась подсистема Linux для Windows, которая позволяет вам запускать почти полную версию Linux поверх Windows 10, а затем Microsoft предоставила нам встроенные бета-версии OpenSSH Client и Сервер OpenSSH.


Теперь в Windows 10, добавлены хорошо известные утилиты Tar и Curl. С помощью tar можно быстро и легко упаковывать и распаковывать файлы с помощью командной строки. Пользователи Linux и Unix знают.


С помощью команды curl вы можете легко загрузить файлы из Интернета. Curl в своем роде - менеджер загрузки старого типа.

Для просмотра возможных команд наберите в командной строке tar -help и curl -help. В PowserShell вызов несколько другой tar.exe -help и curl.exe -help.
Хотя эти утилиты не встроены в существующую версию Windows, добавление их в сборку Insider показывает, что Microsoft серьезно относится к Linux и пытается заработать делом, расположение тех, кто ее регулярно использует.

Использование cURL в Windows 10

Связанная версия Curl в Windows 10 будет расположена в C:\Windows\System32\curl.exe, в настоящее время представлена версия 7.55.1, август 2017 года. Непонятно, почему Microsoft использует более старую версию, когда последняя версия , 7.57.0.

Свойства cURL

Свойства cURL

Для тех, кто знаком с Curl, способы взаимодействия с ним в Windows будут точно таким же. Просто откройте командную строку и введите curl -h, чтобы просмотреть список аргументов командной строки.

откройте командную строку и введите curl -h

Curl в Windows 10 Preview Build

Использование Tar в Windows 10

Исполняемый файл Tar идущий в комплекте с Windows 10 расположен по следующему пути C:\Windows\System32\tar.exe и имеет bbdtar версии 3.3.2 . Это последняя версия bsdtar, выпущенная 15 июля 2017 года.

откройте командную строку и введите curl -h

Свойства tar


Точно так же, как и исполняемый файл cURL, Tar работает так же, как и его Linux-аналог. Поэтому, если вы знакомы с Tar, у вас не будет проблем с его использованием в Windows 10.

Результат вышеуказанной команды вернёт нам следующий результат:

HTTP Response
HTTP Response
HTTP Response

Создайте файл index.js и поместите туда фейковые данные.

Запустите сервер, указав файл index.js .

В результате выполнения команды получим следующий результат:

Для отправки POST запроса, нам необходимо указать ключевое слово POST перед URL. Пример:

В результате выполнения команды получим следующий результат:

Теперь если снова выполнить GET запрос, то получим список пользователей, включая только что вставленные данные.

В результате выполнения данной команды, значение заголовка запроса Content-Type будет автоматически преобразовано в application/x-www-form-urlencoded; charset=utf-8 , так что об этом не стоит волноваться.

В результате выполнения команды получим следующий результат:

Работа с аутентификацией

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

Настройка формата вывода результатов

После выполнения данной команды мы увидим только заголовки:

Результат выполнения вышеуказанной команды:

Работа с сессиями

В результате будет создана сессия с названием roy , которую можно задействовать для выполнения других запросов. Пример использования сессии roy :

Работа с автоподстановкой

A demo of the autocomplete
A demo of the autocomplete
A demo of the autocomplete

The response of a GET command
The response of a GET command
The response of a GET command

Подытожим

Как я могу загрузить что-то из Интернета напрямую, не открывая браузер Internet Explorer или Firefox Acrobat Reader/Quicktime/MS Word/ что угодно?

Я использую Windows, поэтому подойдет версия Wget для Windows.

Альтернатива, которую я недавно обнаружил, используя PowerShell:

Это работает также с запросами GET.

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

Появится стандартная подсказка учетных данных Windows. Учетные данные, которые вы введете, будут использованы для загрузки файла. Вам нужно сделать это только один раз за все время, пока вы будете использовать объект $ client.

Из этого раздела FAQ предлагаются ссылки для скачивания:

Вместо этого используется ссылка с любезности Йерней Симончич.

Если у вас PowerShell> = 3.0, вы можете использовать Invoke-WebRequest

Windows имеет собственную утилиту загрузки из командной строки - BITSAdmin:

И полный пример битсадмина:

Редактировать : 15.05.2018 - оказалось, что можно скачать файл и с certutil :

Certutil не устанавливается по умолчанию в XP/Win2003, но доступен в более новых версиях Windows.Для XP/2003 вам понадобится Admin Tool Pack для Windows Server 2003

Сохраните следующий текст как wget.js и просто позвоните

Существует родной Curl для Windows , доступной здесь. Доступно много вариантов - с поддержкой SSL и без нее.

Вам не нужен дополнительный багаж Cygwin и тому подобное, всего один маленький EXE-файл.

Также важно знать, что псевдонимы wget и curl встроены во все современные версии Windows Powershell. Они эквивалентны.

Для получения функциональности wget не требуется никаких дополнительных файлов или загрузок:


Чтобы заставить это работать должным образом в PowerShell, проще всего использовать переменные и аргумент -OutFile как показано здесь:


Этот синтаксис загружает все содержимое целевого файла azuredeploy.json в локальный файл newfile.json

Основное преимущество заключается в том, что он встроен в сам Powershell, поэтому этот код будет выполняться напрямую без загрузок или каких-либо других дополнительных созданий файлов, необходимых для его работы в любой современной версии Windows.

Я сделал быстрый файл myGet.bat, который вызывает метод PowerShell, описанный выше.

Я искал то же самое, и, поскольку у меня не было привилегий для установки какого-либо из вышеперечисленных пакетов, я выбрал небольшой обходной путь (для загрузки более 30 файлов):

У Cygwin есть Wget (и многие другие утилиты).

Если PowerShell является опцией, это предпочтительный маршрут, так как вам (потенциально) не придется устанавливать ничего лишнего:

В противном случае Wget для Windows, как уже отмечали другие, определенно является вторым лучшим вариантом. Как написано в другом ответе, похоже, что вы можете загрузить Wget самостоятельно или взять его как часть Cygwin или MSys.

Если память используется, она существует со времен Windows 98, и я могу подтвердить, что она все еще есть в Windows 8 RTM (возможно, вам придется зайти в appwiz.cpl и добавить / удалить функции, чтобы получить ее). Эта утилита может загружать и загружать файлы на / с FTP-сайтов в Интернете. Он также может быть использован в сценариях для автоматизации любой операции.

Этот встроенный инструмент был для меня реальным спасением жизни в прошлом, особенно во времена ftp.cdrom.com - я однажды скачал Firefox таким образом, на полностью сломанной машине, на которой был только коммутируемый Интернет. подключение (назад, когда максимальный размер пакета sneakernet был все еще 1.44 МБ, и Firefox все еще назывался "Netscape" /me делает trollface).

Пара советов: это собственный командный процессор и собственный синтаксис. Попробуйте набрать "помощь". Все FTP-сайты требуют ввода имени пользователя и пароля; но если они разрешают "анонимных" пользователей, имя пользователя "анонимный", а пароль - ваш адрес электронной почты (вы можете создать его, если не хотите, чтобы его отслеживали, но обычно есть какая-то логика, чтобы убедиться, что это действительный адрес электронной почты).

date

04.12.2018

directory

PowerShell

comments

комментариев 36 Совет. Командлет Invoke-WebRequest доступен в Windows PowerShell 3.0, поэтому перед началом работы убедитесь, что у вас используется эта или более свежая версия. Если на компьютере установлено несколько версий Posh, переключиться между ними можно так.

Использование командлета Invoke-WebRequest

Попробуем выполнить следующую команду:

Invoke-WebRequest -Uri "http://winitpro.ru"

Invoke-WebRequest обработка html страниц в powershell

Совет. Если вы подключены к Интернет через прокси-сервер то для корректной работы командлетов PoweShell, воспользуйтесь советами из статьи: Как настроить PowerShell для доступа через прокси-сервер.

Как вы видите, возвращенный ответ представляет собой не простой HTML код страницы. Вы видите различные свойства web-документа. Командлет Invoke-WebRequest, как и большинство других командлетов PowerShell оперирует объектами. Invoke-WebRequest возвращает объект типа HtmlWebResponseObject. Посмотрим все свойства данного объекта:

$WebResponseObj = Invoke-WebRequest -Uri "http://winitpro.ru"
$WebResponseObj| Get-Member

свойства объекта HtmlWebResponseObject

Чтобы получить сырой HTML код веб страницы, который содержится в данном объекте, выполните:

powershell: получить html код страницы и http заголовки

Как вы видите, веб сервер вернул ответ 200, т.е. запрос выполнен успешно и веб сервер доступен и работает корректно.

Получаем список всех HTML ссылок на странице

Invoke-WebRequest вывести список ссылок на html странице

Чтобы получить и сам текст ссылки (содержится в элементе InnerText), можно воспользоваться такой конструкцией:

Можно выбрать только ссылки с определенным CSS классом:

Или определенным текстом в url:

powershell фильтр объектов на html странице

Парсинг HTML страниц с помощью Powershell

Командлет Invoke-WebRequest позволяет довольно быстро и удобно парсить содержимое любых веб-страниц. При обработке HTML страницы из ее содержимого формируются коллекции ссылок (links), веб-форм (forms), изображений (images), скриптов (scripts) и т.д.

С помощью Powershell получим содержимое главной страницы нашего сайта:

$Img = Invoke-WebRequest "https://winitpro.ru/"

Затем выведем список всех изображений на данной странице:

Сформируем коллекцию из полных url путей к используемым изображениям:

$images = $Img.Images | select src

Инициализируем новый экземпляр класса WebClient:

И скачаем все изображения со страницы (с оригинальными именами) в каталог c:\tools\:

Пример парсинга html страницы на powershell

В качестве интересного примера использования командлета Invoke-WebRequest можно привести способ узнать внешнего IP адреса компьютера из PowerShell.

Аналог wget на powershell: как скачать файл по http

Invoke-WebRequest "https://download.mozilla.org/?product=firefox-32.0.3-SSL&os=win&lang=ru" -outfile “c:\tools\firefox setup 32.0.3.exe”

Таким образом вы с легкостью можете на определенной веб-странице найти все ссылки, попадающие под конкретные критерии (класс ссылки, разрешение в имени файла, url адрес), и скачать файлы по полученным ссылкам. Например, имеется некий сайт с кучей ссылок на PDF документы. Ваша задача скачать все эти файлы на ваш компьютер. Костяк PowerShell скрипта для массовой скачки файлов может выглядеть так:

В результате выполнения скрипта в целевом каталоге будут загружены все pdf файлы со страницы. Каждый файл сохраняется под произвольным именем.

В PowerShell 6.1 команделт Invoke-WebRequest поддерживает режим докачки. Таким образом с помощью параметра Invoke-WebRequest -Uri $Uri -OutFile $OutFile –Resume вы можете возобновить загрузку файла в случае падения канала или сервера.

Заполнение и отправка веб-форм на Powershell

powershell аутентификация с помощью веб форм на mailru

С помощью следующей конструкции сохраним информацию о куках (Cookies) подключения в отдельной сессионной переменной:

Следующей командой отобразим список заполняемых полей в HTML форме авторизации (форма называется LoginExternal):

Присвоим нужные значения всем полям:

Чтобы передать заполненную форму на веб сервер, вызовем атрибут HTML-формы action.

$Log = Invoke-WebRequest -method POST -URI ("https://e.mail.ru/login" + $mailru.Forms["LoginExternal"].Action) -Body $mailru.Forms["LoginExternal"].Fields -WebSession $session

Недостатки командлета Invoke-WebRequest

Другая проблема – командлет Invoke-WebRequest тесно связан с Internet Explorer. Например, в редакциях Windows Server Core, в которых IE не установлен, командлет Invoke-WebRequest использовать нельзя.


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

1- Download cURL

Чтобы скачать cURL вам нужно перейти по следующему адресу:

Существует много разных версий cURL для разных операционных систем, он может вас запутать с выбором версий. Вам стоит нажать на ссылку "curl Download Wizard", которая поможет вам легко найти подходящую версию (Смотрите изображение ниже).


Далее нажмите на ссылку "curl executable".


если ваша операционная система это Windows 64bit выберите Win64 и нажмите на Select, наоборот если ваш Windows является 32bit выберите Windows/Win32.





Wizard отображает для вас список подходящих версий. Здесь я скачиваю первую версию в списке.



2- Установка cURL

После того, как вы скачали cURL, вам не нужно его устанавливать, нужно просто извлечь его в определенную папку.


Открыть папку bin в cURL, и запустить файл curl-ca-bundle.crt для установки сертификата безопасности (Security Certificate).







3- Использование cURL

Открыть окно CMD и CD к папке bin у cURL.



Смотреть детальную инструкцию использования cURL:

4- Объявить переменную среды для cURL

Обычно, чтобы работать с cURL вам нужно CD к папке bin. Но если вы объявляете "путь папки bin" в переменной среде Path, вы можете выполнить это везде.

На Windows, выберите System в Control Panel.




Добавить "путь папки bin" впереди переменной среды Path.

Читайте также: