Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое.
Источник:
cURL — это пакет программного обеспечения, состоящий из утилиты командной строки и библиотеки для передачи данных с использованием синтаксиса URL.
cURL поддерижвает множество протоколов, среди них DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet и TFTP.
Загрузить отдельный файл
Следующая команда получит содержимое URL и отобразит его в стандартном выводе (т. е. в вашем терминале).
Curl https://mi-al.ru/ > mi-al.htm % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14378 0 14378 0 0 5387 0 --:--:-- 0:00:02 --:--:-- 5387
Сохранение вывода cURL в файл
- -o (o нижнего регистра) результат будет сохранён в файле, заданном в командной строке
- -O (O верхнего регистра) имя файла будет взято из URL и будет использовано для сохранения полученных данных.
Теперь будет сохранена страница gettext.html в файле с названием ‘mygettext.html’. Когда curl запущена с опцией -o, она отображает шкалу прогресса загрузки следующим образом.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987
Когда вы используете curl -O (O верхнего регистра), она сама по себе сохранит содержимое в файл под названием ‘gettext.html’ на локальной машине.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Примечание: Когда curl должна писать данные в терминал, она отключает шкалу прогресса, чтобы не было путаницы в напечатанных данных. Мы можем исользовать ‘>’|’-o’|’-O’ опции для передачи результатов в файл.
Выборка нескольких файлов одновременно
Мы можем загрузить несколько файлов за один раз, задав все URL в командной строке.
Curl -O URL1 -O URL2
Команда ниже загрузит оба index.html и gettext.html и сохранит их с теми же именами в текущей директории.
Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Пожалуйста, обратите внимание, когда мы загружаем несколько файлов с одного сервера как показано выше, curl попытается повторно использовать соединение.
Следуем за HTTP Location в заголовках с опцией -L
По умолчанию, CURL не следует за HTTP Location в заголовках (редиректы). Когда запрошенная веб-страница перемещена в другое место, то соответствующий ответ будет передан в заголовках HTTP Location.
Например, когда кто-то печатает google.com в строке браузера из своей страны, они автоматически будут перенаправлены на ‘google.co.xx’. Это делается на основе заголовка HTTP Location как показано ниже.
Curl https://www.google.com/?gws_rd=ssl
302 Moved
The document has moved here.Приведённый выше вывод говорит, что запрашиваемый документ был перемещён в ‘http://www.google.co.th/’.
Вы можете указать curl следовать редиректам, это делается с использованием опции -L как показано ниже. Теперь будет загружен исходный код html с https://www.google.co.th/?gws_rd=ssl.
Curl -L https://www.google.com/?gws_rd=ssl
Продоление/Вообновление предыдущей закачки
Используя опцию -C вы можете продолжить закачку, которая была остановлена по каким-либо причинам. Это будет полезным при обрыве загрузки больших файлов.
Если мы говорим ‘-C -’, то curl будет искать, с какого места возобновить загрузку. Мы также можем задать ‘-C <смещение>’. Заданное смещение байт будет пропущено от начала исходного файла.
Начните большую загрузку с curl и нажмите Ctrl-C для остановки посреди закачки.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1%
Закачка была остановлена на 20.1%. Используя “curl -C -” мы можем продолжить загрузку с того места, где мы остановились. Теперь загрузка продолжиться с 20.1%.
Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%
Ограничение скорости передачи данных
Вы можете ограничить величину скорости передачи данных опцией -limit-rate. Вы можете передать максимальную скорость в качестве аргумента.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Команда выше ограничит скорость передачи на 1000 байт/секунду. curl может использовать скорость выше на пиках. Но средняя скорость будет примерно 1000 байт/секунду.
Ниже показан индикатор прогресса для представленной выше команды. Вы можете видеть, что текущая скорость в районе 1000 байт.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
Загрузить файл только если он изменён до/после заданного времени
Вы можете получить файлы, которые были изменены после определённого времени, используя опцию -z в curl. Это будет работать и для FTP и для HTTP.
$ curl -z 20-Aug-14Команда выше загрузит yy.html только если он изменялся позднее чем заданная дата и время.
Команда выше загрузит файл file.html, если он изменялся до заданной даты и времени.
Наберите ‘man curl_getdate’ чтобы узнать больше о различных поддерживаемых синтаксисах для выражений даты.
Прохождение аутентификации HTTP в cURL
Иногда веб-сайты требуют имя пользователя и пароль для просмотра их содержимого. С помощью опции -u вы можете передать эти учётные данные из cURL на веб-сервер как показано ниже.
$ curl -u username:password URL
Примечание: По умолчанию curl использует базовую HTTP аутентификацию. Мы можем задать иные методы аутентификации используя -ntlm | -digest.
Загрузка файлов с FTP сервера
cURL может также использоваться для загрузки файлов с FTP серверов. Если заданный FTP путь является директорией, то по умолчанию будет выведен список файлов в ней.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
Команда выше загрузит файл xss.php с ftp-сервера и сохранит его в локальной директории.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Здесь URL отсылает к директории. Следовательно, cURL сделает список файлов и директорий по заданному URL адресу.
Список/Загрузка с использованием диапазонов.
CURL поддерживает диапазоны заданные в URL. Когда дан диапазон, будут загружены соответствующие файлы внутри этого диапазона. Это будет полезным при загрузке пакетов с сайтов FTP зеркал.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Команда выше сделает список всех пакетов в диапазоне a-z в терминале.
Выгрузка файлов на FTP-сервер
Curl также может использоваться для выгрузки на FTP-сервер с опцией -T.
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
Команда выше выгрузит файл с именем myfile.txt на FTP-сервер. Вы можете также выгрузить несколько файлов за один раз используя диапазоны.
$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
Опционально мы можем использовать “.” для получения из стандартного ввода и передачи его на удалённую машину.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Команда выше получит вывод от пользователя из стандартного ввода и сохранит содержимое на ftp-сервере под именем ‘myfile_1.txt’.
Вы можете задать ‘-T’ для каждого URL, и каждая пара адрес-файл будут определять что куда выгружать
Больше информации с увеличением вербальности и опцией трассировки
Вы можете узнать что происходит, используя опцию -v. Опция -v включает вербальный режим и будет печатать подробности.
Curl -v https://www.google.co.th/?gws_rd=ssl
Команда выше выведет следующее
* Rebuilt URL to: https://www.google.co.th/?gws_rd=ssl * Hostname was NOT found in DNS cache * Trying 27.123.17.49... * Connected to www.google.co.th (27.123.17.49) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Host: www.google.co.th > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...
Если вам нужно больше детальной информации, тогда вы можете использовать опцию -trace. Опция -trace включит полный дамп трассировки всех входящих/исходящих данных для заданного файла
=> Send header, 169 bytes (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1. 0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog 0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.xx..Accept 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a: */*.... == Info: HTTP 1.0, assume close after body <= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a
Опции увеличения вербальности и трассировки пригодятся, когда curl терпит неудачу по каким-то причинам и мы не знаем почему.
Получаем определение слова и его перевод с использованием протокола DICT
Посмотреть список доступных словарей можно так:
Curl dict://dict.org/show:db
Получить перевод слова с английского на русский можно так:
Curl dict://dict.org/d:girl:fd-eng-rus
220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64
Больше информации по DICT можно найти прочитав RFC2229 .
Использование прокси для загрузки файла
Мы можем указать cURL использовать прокси для определённых операций, это делается опцией -x. Нам нужно задать хост и порт прокси.
$ curl -x proxysever.test.com:3128 https://www.google.co.in/?gws_rd=ssl
Отправка электронной почты с использованием протокола SMTP в curl
cURL также может быть использована для отправки электронной почты по протоколу SMTP. Вам нужно указать адрес от кого, адрес кому и IP адрес почтового сервера как показано ниже.
$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com
Когда команда будет введена, начнётся ожидание введения пользователем данных для письма. Когда вы закончите набирать сообщение, напечатайте. (точку) в качестве последней строки, и письмо будет немедленно отправлено.
Subject: Testing This is a test mail .
Гарант является доверенным посредником между Участниками при проведении сделки.
16.02.2006 Джеф Феллинг
Curl поможет управлять данными, размещенными в Web В данной статье рассматривается бесплатный инструмент Curl, с помощью которого можно передавать и принимать Web-страницы из командной строки. Благодаря Curl легко автоматизировать многие
Curl поможет управлять данными, размещенными в Web
В данной статье рассматривается бесплатный инструмент Curl, с помощью которого можно передавать и принимать Web-страницы из командной строки. Благодаря Curl легко автоматизировать многие операции информационной защиты и администрирования, например извлечь Web-страницу для анализа или загрузить исправление для системы безопасности из Web.
Установка Curl
Curl входит в состав многих дистрибутивов Unix. Имеются двоичные файлы и исходные тексты для большинства других операционных систем. Даже программисты, работающие с открытым PHP, могут использовать Curl для безопасного доступа к Web-контенту непосредственно из PHP-сценариев.
Для работы Curl с Web-узлами Secure Sockets Layer (SSL) необходим пакет OpenSSL. Существуют две версии Curl: одна с SSL, другая без SSL. Рекомендую первую, поскольку SSL надежно защищает данные.
Прежде чем использовать Curl с функциями SSL, необходимо загрузить из сети и отдельно установить пакет OpenSSL. Двоичные файлы OpenSSL for Windows можно загрузить с сайта проекта GnuWin32 SourceForge по адресу . На этом сайте имеется и много других полезных инструментов, портированных в Windows.
Следует загрузить и установить пакет OpenSSL, затем скопировать два DLL-файла в каталог system32:
Copy "C:Program FilesGnuWin32 binlibeay32.dll" %windir%system32 copy "C:Program FilesGnuWin32 binlibssl32.dll" %windir%system32
После этого можно установить Curl. SSL-совместимые двоичные файлы Curl для Windows можно найти по адресу http://curl.haxx.se/latest.cgi?curl=win32-ssl-sspi . Новейшая версия, curl 7.15.0, находится в win32-ssl-sspi.zip, который содержит файл curl.exe и документацию.
После установки Curl следует убедиться в его работоспособности, введя команду
Curl http://isc.sans.org/ infocon.txt
Если на экране появится слово, обозначающее цвет (например, green), значит, Curl работает. В этом простом примере Curl извлекает содержание Infocon из Web-узла Internet Storm Center института SANS. Green означает, что Internet функционирует нормально и серьезных угроз не обнаружено. Если же вместо green на экране появляются слова yellow, orange или red, то отложите эту статью и посетите сайт http://isc.sans.org , чтобы узнать о состояниях повышенной опасности в Internet. В случае ошибки необходимо проверить правильность установки Curl.
В сущности, Curl извлекает Web-страницу, а затем выдает исходный текст HTML страницы на консоль. Однако возможности утилиты шире. Curl располагает встроенной функцией проверки ошибок. Например, команда
Curl http://noserverhere
выдает ошибку Curl: (6) Could not resolve host: noserverhere; Host not found. Коды ошибок можно использовать в сценариях, чтобы проверить доступность Web-страницы или реакцию Web-сервера. Например, если использовать Curl для ежедневного извлечения Web-страницы, в частности суточной статистики Web-узла, можно дополнить сценарий исходным текстом, отыскивающим коды ошибок. Если Curl выдает код ошибки Curl: (7) couldn?t connect to host, то можно немедленно передать предупреждение или отправить сообщение по электронной почте.
Извлечение шифрованных данных
Одно из важнейших достоинств Curl - совместимость с SSL. Запрошенные страницы HTTPS передаются через сеть в зашифрованном виде, а затем Curl выводит на экран восстановленный текст. Кроме того, Curl проверяет сертификаты - дату завершения действия сертификата, соответствие имени хост-компьютера хост-имени в сертификате и уровень доверия к корневому сертификату - и предупреждает, если сертификат некорректен. Параметр -cacert позволяет указать определенный файл сертификата. Проверка сертификатов отменяется с помощью параметра -k. Альтернативный подход - использовать параметр -insecure.
Не только для WWW
Возможности Curl шире простой пересылки файлов через Internet. С помощью Curl можно быстро получить список каталогов FTP-сайта:
Curl ftp://myftpsite
Чтобы увидеть подкаталоги сайта, следует ввести команду
Curl ftp://myftpsite/subdir/
Для загрузки файла из сети достаточно указать в URL имя файла. В следующем примере файл с именем readme.txt загружается прямо из командной строки и отображается на экране:
Curl ftp://ftp.microsoft.com/ deskapps/games/readme.txt
Нередко проще подготовить сценарий с Curl для ввода FTP-файлов, чем использовать команду FTP интерактивно.
По умолчанию данные выводятся непосредственно на консоль, но их можно перенаправить в файл с помощью параметров -o и -O. Чтобы получить страницу и сохранить ее на диске, следует указать параметр -o. Параметр -O сохраняет полученную страницу в локальном файле, и Curl извлекает имя удаленного документа. Если в URL имя файла не указано, то эта операция закончится неудачей. Если использовать Curl для передачи на Web-узел запроса без имени файла, но нужно сохранить результат в файле, можно указать имя файла в командной строке, например:
Аутентификация
Curl обеспечивает методы аутентификации Basic, Digest и интегрированный. На большинстве сайтов доступ к страницам с аутентификацией на базе форм можно получить с использованием функций отправки Curl, что будет продемонстрировано чуть ниже. Это значит, что можно передать данные формы, в частности имя пользователя и пароль, на удаленный Web-узел, на Web-странице которого выводится запрос на ввод информации. Для пересылки учетных данных можно использовать параметр -u или вставить их в URL, что традиционно делается в FTP, например:
Curl ftp://username: password@myhtmlsite
С помощью Curl приемы, заимствованные из FTP, можно перенести в HTTP, как в следующем примере:
Curl http://username:password @myhtmlsite/default.htm
Curl также обеспечивает доступ к Web-страницам через proxy-сервер. Поэтому Curl можно настроить на использование proxy-сервера для аутентификации в режимах Basic, Digest и NTLM.
Читайте документацию
В одной статье трудно охватить все многочисленные функции Curl, среди которых и загрузка файлов на сервер (-T), и просмотр только информации в заголовке HTTP (-I), и просмотр всех данных в детальном режиме (-V), и скрытый вывод (-s). Я рекомендую более подробно ознакомиться с функциями Curl в руководстве, опубликованном по адресу http://curl.haxx.se/docs .
Пример использования Curl
Ознакомившись с основами Curl, рассмотрим простой пример извлечения данных из Web-узла при заданных входных данных. Построим простой инструмент Whois, который демонстрирует простоту и удобство применения Curl и процедуру отправки данных на Web-узел с использованием параметра -d. В данном примере Curl посылает IP-адрес на Web-узел Arin Whois, а затем извлекает результаты из этого сайта. Whois отыскивает информацию о владельце IP-адреса.
Перед началом работы важно исследовать Web-узел, так как в исходном тексте каждого сайта есть свои особенности, и Curl не всегда одинаково работает с любыми сайтами. Предварительное посещение сайта позволяет собрать необходимую информацию для работы Curl. В данном примере я воспользовался браузером, чтобы посетить Web-узел http://www.arin.net/whois/ , и обратил внимание, что на сайте имеется единственное поле ввода данных, в котором посетители указывают интересующий их IP-адрес. Необходимо получить детали этого поля, которое представляет собой часть Web-формы. В данном примере используется Perl-сценарий formfind.pl (http://cool.haxx.se/cvs.cgi/curl/perl/contrib/ formfind?rev=HEAD&content-type=text/vnd.viewcvs-markup ). Сценарий Formfind.pl преобразует данные формы в удобные выходные результаты и упрощает ручной поиск данных в HTML. Конечно, для запуска Formfind на компьютере должен быть развернут Perl. Хороший пакет Win32 Perl можно заказать на сайте ActiveState ActivePerl по адресу http://www.activestate.com .
Рассмотрим пример более подробно. Во-первых, обратимся к Web-узлу, содержащему форму, которая запрашивает информацию:
Curl -o whoisOutputFile http://www.arin.net/whois/
Эта команда извлекает страницу Whois из http://www.arin.net и сохраняет ее в текстовом файле whoisOutputFile, который содержит исходный текст HTML, воспроизводимый браузером при посещении сайта.
Затем необходимо найти и выделить данные формы:
./formfind.pl
Formfind выдает переменные формы и их возможные величины. В данном примере выходные результаты имеют довольно простой вид (см. экран 1 ).
Следует обратить внимание на данные формы Input с именем queryinput. Это текстовое поле, в которое Curl должен послать искомый IP-адрес. Конкретный IP-адрес не имеет значения - в данном примере использовался адрес Microsoft. С помощью параметра -d искомый IP-адрес пересылается в поле queryinput:
Curl -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/ whois.pl
Команда Curl с параметром -d отыскивает данные в форме, в данном случае queryinput, которые представляют собой искомый IP-адрес. При этом меняется целевой адрес; форма должна передавать данные на новый URL, который представляет сценарий whois.pl. Новый целевой адрес можно увидеть на выходе formfind на экране 1.
В данном примере также получен исходный текст HTML ответа Whois, но он скрыт группой тэгов HTML. По умолчанию сообщение о статусе Curl показывает размер документа, процент выполнения и скорость пересылки. Выходные данные можно немного расчистить и отфильтровать имя организации, которой принадлежит IP-адрес. Статус Curl можно блокировать с помощью параметра -s. Команду следует выполнять через grep, чтобы получить только OrgName:
Curl -s -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/ whois.pl | grep OrgName
В данном примере выходные результаты показывают, что OrgName - Microsoft Corp.
@echo off curl -k -s -d "queryinput= %1" http://ws.arin.net/cgibin/ whois.pl | grep OrgName
21 ответ
Возможно, у вас уже есть завиток
Возможно, вам не нужно ничего скачивать:
- Если вы используете Windows 10 версии 1803 или выше, ваша ОС поставляется с копией curl , уже настроенной и готовой к использованию.
- Если вы хотите сделать curl своей собственной папкой, подойдут C:\Program Files\curl\ или C:\curl\ .
- Если у вас много свободных исполняемых файлов и вы не хотите добавлять много отдельных папок в PATH , используйте для этой цели одну папку, например C:\Program Files\tools\ или C:\tools\ .
- Щелкните меню "Пуск" Windows 10. Начните вводить "окружение".
- Вы увидите результат поиска. Отредактируйте системные переменные среды . Выбери это.
- Откроется окно "Свойства системы". Нажмите кнопку Переменные среды внизу.
- Выберите переменную "Путь" в разделе "Системные переменные" (нижнее поле). Нажмите кнопку Изменить .
- Нажмите кнопку " Добавить" и вставьте путь к папке, в которой находится curl.exe .
- Нажмите OK, если необходимо. Закройте открытые окна консоли и снова откройте, чтобы они получили новый PATH .
Если у вас есть более эзотерические потребности (например, вам нужны сборки cygwin, сторонние сборки, libcurl, файлы заголовков, исходные коды и т.д.), Используйте мастер загрузки curl. После ответа на пять вопросов вам будет представлен список ссылок для скачивания.
Извлечение и настройка скручивания
Найдите curl.exe в вашем загруженном пакете; это наверное под bin\ .
Выберите место на жестком диске, которое будет служить постоянным домом для завитков:
Поместите curl.exe в папку. И никогда не перемещайте папку или ее содержимое.
Затем вы захотите сделать curl доступным в любом месте командной строки. Для этого добавьте папку в PATH , вот так:
Теперь наслаждайтесь вводом curl в любой командной строке. Время веселиться!
Чтобы запустить завиток из командной строки
a) Щелкните правой кнопкой мыши значок "Мой компьютер"
b) Выберите "Свойства"
d) Перейдите на вкладку [Дополнительно] - кнопка "Переменные среды"
e) В разделе "Системная переменная" выберите "Путь" и "Изменить"
f) Добавьте точку с запятой, а затем путь туда, куда вы поместили свой curl.exe(например, D:\software\curl)
Теперь вы можете запустить из командной строки, набрав:
Curl www.google.com
Начиная с Windows 10 версии 1803 (и более ранних, с инсайдерской сборкой 17063), вы больше не устанавливаете curl . Windows содержит собственный curl.exe (и tar.exe) в C:\Windows\System32\ , к которому вы можете обращаться прямо из обычного CMD .
C:\Users\vonc>C:\Windows\System32\curl.exe --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C:\Users\vonc>C:\Windows\System32\tar.exe --version bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.5.f-ipp
Вероятно, стоит отметить, что Powershell v3 и более поздних версий содержит командлет Invoke-WebRequest, который имеет некоторые возможности скручивания. Вероятно, стоит упомянуть и командлеты New-WebServiceProxy и Invoke-RestMethod .
Я не уверен, что они подойдут вам или нет, но, хотя я и не Windows, я должен сказать, что нахожу объектный подход, который использует PS, гораздо проще работать с такими утилитами, как curl, wget и т.д. Они могут стоить взглянуть на
Вы можете создать последнюю версию curl, openssl, libssh2 и zlib в 3 простых шаги, следуя этот учебник.
Curl построен статически, поэтому вам не нужно распространять необходимое динамическое время выполнения.
Вы также можете скачать предварительно созданную версию (x86 и x64) из
Я искал процесс загрузки Curl и каждый, где они сказали, копирует файл curl.exe в System32 , но они не предоставили прямую ссылку. так что здесь можно наслаждаться curl.exe легко в папке bin просто
разархивируйте его, а затем перейдите в папку bin там, где вы получите exe файл
Думал, что напишу именно то, что сделал (Windows 10, 64-битная версия):
Выберите исполняемый файл curl.
Выберите Win64.
Выберите универсальный.
Выбирай любой.
curl версия: 7.53.1 - SSL включен SSH включен. Предоставлено: Виктор Шакац. Этот пакет является исполняемым типом curl. По этой ссылке вы получите предварительно скомпилированный двоичный файл curl (или, в некоторых случаях, используя информацию, предоставленную на странице, по которой вас ведет эта ссылка). Вы можете или не можете установить libcurl как общую библиотеку /DLL. Файл упакован с использованием 7zip. 7zip - это формат архивирования файлов.
Нажмите скачать.
У вас должен быть файл curl-7.53.1-win64-mingw.7z в вашей папке загрузок.
Установите 7-Zip, если у вас его нет.
Щелкните правой кнопкой мыши, 7-Zip, Извлечь здесь. Скопируйте и вставьте извлеченный файл куда-нибудь вроде Z:\Tools\
Если вы посмотрите в папку bin, вы увидите curl.exe. Если вы дважды щелкните по нему, окно быстро вспыхнет и исчезнет. Чтобы запустить его, вам нужно использовать командную строку. Перейдите в папку bin и введите curl, а затем свои параметры, чтобы сделать запрос. Вы должны использовать двойные кавычки . Одинарные кавычки не будут работать с curl в Windows.
Теперь вам нужно добавить curl в пользовательскую переменную Path, чтобы вам не пришлось переходить в нужную папку для запуска программы. Перейдите в раздел "Этот ПК", "Компьютер", "Свойства системы", "Дополнительные параметры системы", войдите в систему как администратор (вы не являетесь администратором, верно? Верно?). Переменные среды, системные переменные, посмотрите список и выберите "Путь", затем "Редактировать", затем Новый, то, например,
Z:\Tools\завиток-7.53.1-win64-MinGW\Bin
Вы можете добавить обратную косую черту, если хотите, я не думаю, что это имеет значение. Нажмите кнопку перемещения вверх до тех пор, пока она не окажется вверху списка, и вы сможете легко увидеть ее с предыдущего экрана. Нажмите OK, OK, OK, затем откройте командную строку, и вы можете запустить curl, набрав curl из любой папки, как любой пользователь. Не забывайте свои двойные кавычки.
Это ответ, который я хотел бы получить.
Этот установщик облегчил мне http://www.confusedbycode.com/curl/
Автор: Obaro Ogbo
Дата публикации: 29 апреля 2015 года
Перевод: А. Кривошей
Дата перевода: июль 2015 г.curl - это кроссплатформенная утилита командной строки для получения и отправки файлов, использующая синтаксис URL. Название является рекурсивным акронимом для Curl URL Request Library, и это очень мощная программа, поддерживающая большое количество сетевых протоколов, включая HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, LDAPS, DICT, TELNET, FILE, IMAP, POP3, SMTP и RTSP.
curl поддерживает огромное количество полезных функций, в том числе аутентификацию пользователей, прокси-серверы, FTP, HTTP post, куки, возобновление передачи файлов, SSL-соединения и многое другое. В этой статье мы рассмотрим основные возможности curl для тех, кто впервые сталкивается с этой программой или мало знает о ней.
Установка
Для установки curl в системе Debian/Ubuntu используйте следующую команду:
$ sudo apt-get install curl
Синтаксис
curl ждет аргумент в виде url, и будет пытаться скачать любой файл, доступный по этому адресу.
$ curl http://www.maketecheasier.com
По умолчанию содержимое передаваемого файла отображается в командной строке. Если задан выходной файл, программа будет показывать индикатор прогресса с отображением количества переданных данных, скорость передачи, предполагаемое оставшееся время и потраченное время. Для сохранения скачиваемого файла под заданным именем используется опция -o:
$ curl -o mte-index.html http://www.maketecheasier.com
Для сохранения файла с тем же именем, что и на сервере, используется опция -O:
$ curl -O ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.0.tar.xz
Получение файла с ftp-сервера, где требуется авторизация:
$ curl -O ftp://username:[email protected]/pub/linux/kernel/v4.x/linux-4.0.tar.xz
Для того, чтобы задать несколько URL или частей URL, поместите эти части в фигурные скобки:
$ curl -O http://www.maketecheasier.com/author/{obaro,ivana,vamsi}
Вы также можете задать последовательный диапазон с помощью квадратных скобок:
$ curl -O ftp://ftp.numericals.com/file.txt $ curl -O ftp://ftp.letters.com/file.txt $ curl -O http://any.org/archive/vol/part{a,b,c}.html
$ curl -o "file_#1.txt" http://{one,two}.site.com $ curl -o "output_#1_#2" http://{site,host}.host.com
Вы можете задать строку User-Agent для идентификации на серверах, для соединений http используйте флаг -A:
$ curl -A "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0"-o mte-index.html http://www.maketecheasier.com
Для отправки данных с использованием HTTP POST предназначена опция -d:
$ curl -d "username=obaro" -d "password=password" http://maketecheasier.com
$ curl -d "username=obaro" -d "password=password" -c mte-cookies http://maketecheasier.com
Для использования этих сохраненных куки предназначена опция -b:
$ curl -b mte-cookies -d "hc_comment=This is a comment&submit=true" http://www.maketecheasier.com/monitor-hard-disk-health-linux/
Чтобы закачать файл на сайт, воспользуйтесь опцией -T. Для серверов http(s) вместо этого используется команда PUT:
$ curl -T "file1.jpg" http://www.uploadmania.com/upload
Чтобы в принудительном порядке задействовать соединение SSL/TLS, используется флаг --ssl-reqd. Также вы можете активировать SSL/TLS одной командой для нескольких файлов:
$ curl --ssl-reqd -T "file.jpg" ftp://username:[email protected]/upload
С помощью опции -u вы можете задать данные для авторизации:
$ curl -u username:password --ssl-reqd -T "file.jpg" ftp://ftp.uploadmania.com/upload
curl - очень простая, надежная и функциональная программа. Она имеет огромное количество опций и поддерживает множество протоколов, мы рассмотрели лишь малую долю ее возможностей. Если вы хотите изучить ее в совершенстве, читайте man-страницу.
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
cURL
cURL - программа для передачи данных по различным протоколам, похожая на wget. Основное отличие в том, что по умолчанию wget сохраняет в файл, а cURL выводит в командную строку. Так можно очень просто посмотреть контент веб-сайта. Например, вот как быстро получить свой текущий внешний IP:$ curl ifconfig.me 93.96.141.93
Параметры -i (показывать заголовки) и -I (показывать только заголовки) делают cURL отличным инструментом для дебаггинга HTTP-ответов и анализа того, что конкретно сервер вам отправляет:$ curl -I сайт HTTP/1.1 200 OK Server: nginx Date: Thu, 18 Aug 2011 14:15:36 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Keep-alive: timeout=25
Параметр -L тоже полезный, он заставляет cURL автоматически следовать по редиректам. cURL поддерживает HTTP-аутентификацию, cookies, туннелирование через HTTP-прокси, ручные настройки в заголовках и многое, многое другое.Siege
- инструмент для нагрузочного тестирования. Плюс, у него есть удобная опция -g , которая очень похожа на curl –iL , но вдобавок показывает вам ещё и заголовки http-запроса. Вот пример с google.com (некоторые заголовки удалены для краткости):$ siege -g www.google.com GET / HTTP/1.1 Host: www.google.com User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Connection: close HTTP/1.1 302 Found Location: http://www.google.co.uk/ Content-Type: text/html; charset=UTF-8 Server: gws Content-Length: 221 Connection: close GET / HTTP/1.1 Host: www.google.co.uk User-Agent: JoeDog/1.00 (X11; I; Siege 2.70) Connection: close HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 X-XSS-Protection: 1; mode=block Connection: close
Но для чего Siege действительно великолепно подходит, так это для нагрузочного тестирования. Как и апачевский бенчмарк ab , он может отправить множество параллельных запросов к сайту и посмотреть, как он справляется с трафиком. В следующем примере показано, как мы тестируем Google с помощью 20 запросов в течение 30 секунд, после чего выводится результат:$ siege -c20 www.google.co.uk -b -t30s ... Lifting the server siege... done. Transactions: 1400 hits Availability: 100.00 % Elapsed time: 29.22 secs Data transferred: 13.32 MB Response time: 0.41 secs Transaction rate: 47.91 trans/sec Throughput: 0.46 MB/sec Concurrency: 19.53 Successful transactions: 1400 Failed transactions: 0 Longest transaction: 4.08 Shortest transaction: 0.08
Одна из самых полезных функций Siege - то, что он может работать не только с одним адресом, но и со списком URL’ов из файла. Это отлично подходит для нагрузочного тестирования, потому что можно моделировать реальный трафик на сайте, а не просто жать один и тот же URL снова и снова. Например, вот как использовать Siege, чтобы нагрузить сервер, используя адреса из вашего лога Apache:$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ siege -c
-b -f urls.txt
Ngrep
Для серьёзного анализа трафика существует Wireshark с тысячами настроек, фильтров и конфигураций. Есть также версия для командной строки tshark . Но для простых задач функционал Wireshark я считаю избыточным. Так что до тех пор, пока мне не нужно мощное оружие, я использую . Он позволяет делать с сетевыми пакетами то же самое, что grep делает с файлами.Для веб-трафика вы почти всегда захотите использовать параметр -W , чтобы сохранить форматирование строк, а также параметр -q , который скрывает избыточную информацию о неподходящих пакетах. Вот пример команды, которая перехватывает все пакеты с командой GET или POST:
Ngrep -q -W byline "^(GET|POST) .*"
Вы можете добавить дополнительный фильтр для пакетов, например, по заданному хосту, IP-адресу или порту. Вот фильтр для всего входящего и исходящего трафика на google.com, порт 80, который содержит слово “search”.Ngrep -q -W byline "search" host www.google.com and port 80
Значение слова неудачный
Обзор Samsung Galaxy A7 (2017): не боится воды и экономии Стоит ли покупать samsung a7
Делаем бэкап прошивки на андроиде
Как настроить файл подкачки?
Установка режима совместимости в Windows