• Инструменты командной строки для веб-разработчика. Написание HTTP-запросов с помощью Curl Curl из командной строки

    21 ответ

    Возможно, у вас уже есть завиток

    Возможно, вам не нужно ничего скачивать:

    • Если вы используете Windows 10 версии 1803 или выше, ваша ОС поставляется с копией curl , уже настроенной и готовой к использованию.
    • Если у вас есть более эзотерические потребности (например, вам нужны сборки cygwin, сторонние сборки, libcurl, файлы заголовков, исходные коды и т.д.), Используйте мастер загрузки curl. После ответа на пять вопросов вам будет представлен список ссылок для скачивания.

      Извлечение и настройка скручивания

      Найдите curl.exe в вашем загруженном пакете; это наверное под bin\ .

      Выберите место на жестком диске, которое будет служить постоянным домом для завитков:

      • Если вы хотите сделать curl своей собственной папкой, подойдут C:\Program Files\curl\ или C:\curl\ .
      • Если у вас много свободных исполняемых файлов и вы не хотите добавлять много отдельных папок в PATH , используйте для этой цели одну папку, например C:\Program Files\tools\ или C:\tools\ .

      Поместите curl.exe в папку. И никогда не перемещайте папку или ее содержимое.

      Затем вы захотите сделать curl доступным в любом месте командной строки. Для этого добавьте папку в PATH , вот так:

      1. Щелкните меню "Пуск" Windows 10. Начните вводить "окружение".
      2. Вы увидите результат поиска. Отредактируйте системные переменные среды . Выбери это.
      3. Откроется окно "Свойства системы". Нажмите кнопку Переменные среды внизу.
      4. Выберите переменную "Путь" в разделе "Системные переменные" (нижнее поле). Нажмите кнопку Изменить .
      5. Нажмите кнопку " Добавить" и вставьте путь к папке, в которой находится curl.exe .
      6. Нажмите OK, если необходимо. Закройте открытые окна консоли и снова откройте, чтобы они получили новый 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) из

    Думал, что напишу именно то, что сделал (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 из любой папки, как любой пользователь. Не забывайте свои двойные кавычки.

    Это ответ, который я хотел бы получить.

    Я искал процесс загрузки Curl и каждый, где они сказали, копирует файл curl.exe в System32 , но они не предоставили прямую ссылку. так что здесь можно наслаждаться curl.exe легко в папке bin просто

    разархивируйте его, а затем перейдите в папку bin там, где вы получите exe файл

    Этот установщик облегчил мне http://www.confusedbycode.com/curl/

    "Вы можете установить cURL для Windows всего за несколько кликов. Просто загрузите и запустите программу установки из приведенной ниже таблицы и нажмите" Установить ". Установка по умолчанию включает в себя.

    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 в файл
    Мы можем сохранить результат команды curl в файл, используя опции -o/-O.
    • -o (o нижнего регистра) результат будет сохранён в файле, заданном в командной строке
    • -O (O верхнего регистра) имя файла будет взято из URL и будет использовано для сохранения полученных данных.

    $ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

    Теперь будет сохранена страница 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

    302 Moved

    The document has moved here.

    Приведённый выше вывод говорит, что запрашиваемый документ был перемещён в ‘

    Скрыто от гостей

    .
    Вы можете указать curl следовать редиректам, это делается с использованием опции -L как показано ниже. Теперь будет загружен исходный код html с

    Скрыто от гостей

    .

    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.

    Команда выше загрузит yy.html только если он изменялся позднее чем заданная дата и время.

    Команда выше загрузит файл file.html, если он изменялся до заданной даты и времени. Наберите ‘man curl_getdate’ чтобы узнать больше о различных поддерживаемых синтаксисах для выражений даты.

    Прохождение аутентификации HTTP в cURL
    Иногда веб-сайты требуют имя пользователя и пароль для просмотра их содержимого. С помощью опции -u вы можете передать эти учётные данные из cURL на веб-сервер как показано ниже.

    $ curl -u username:password URL

    Примечание: По умолчанию curl использует базовую HTTP аутентификацию. Мы можем задать иные методы аутентификации используя –ntlm | –digest.


    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 включит полный дамп трассировки всех входящих/исходящих данных для заданного файла

    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 в файл
    Мы можем сохранить результат команды curl в файл, используя опции -o/-O.
    • -o (o нижнего регистра) результат будет сохранён в файле, заданном в командной строке
    • -O (O верхнего регистра) имя файла будет взято из URL и будет использовано для сохранения полученных данных.

    $ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

    Теперь будет сохранена страница 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

    302 Moved

    The document has moved here.

    Приведённый выше вывод говорит, что запрашиваемый документ был перемещён в ‘

    Скрыто от гостей

    .
    Вы можете указать curl следовать редиректам, это делается с использованием опции -L как показано ниже. Теперь будет загружен исходный код html с

    Скрыто от гостей

    .

    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.

    Команда выше загрузит yy.html только если он изменялся позднее чем заданная дата и время.

    Команда выше загрузит файл file.html, если он изменялся до заданной даты и времени. Наберите ‘man curl_getdate’ чтобы узнать больше о различных поддерживаемых синтаксисах для выражений даты.

    Прохождение аутентификации HTTP в cURL
    Иногда веб-сайты требуют имя пользователя и пароль для просмотра их содержимого. С помощью опции -u вы можете передать эти учётные данные из cURL на веб-сервер как показано ниже.

    $ curl -u username:password URL

    Примечание: По умолчанию curl использует базовую HTTP аутентификацию. Мы можем задать иные методы аутентификации используя –ntlm | –digest.


    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 включит полный дамп трассировки всех входящих/исходящих данных для заданного файла

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

    Перед тем как приступить к рассмотрению curl хочу напомнить, что язык PHP мы с Вами уже затрагивали, например, в материале про выгрузку в Excel на PHP или возможность аутентификации на PHP , а теперь давайте поговорим о возможности посылать запросы на PHP.

    Что такое CURL?

    CURL – это библиотека функций PHP, с помощью которой можно посылать запросы, например, HTTP, из PHP скрипта. CURL поддерживает такие протоколы как HTTP, HTTPS, FTP и другие. Посылать HTTP запросы можно методами GET, POST, PUT.

    CURL может пригодиться в случаях когда необходимо вызвать удаленный скрипт и получить результат или просто сохранить HTML код вызываемой страницы, в общем каждый может найти свое применение но смысл один это то что можно послать запросы в процессе выполнения скрипта.

    Подключение библиотеки CURL в PHP

    Для того чтобы использовать библиотеку CURL ее соответственно нужно подключить.

    Примечание! В качестве примера мы будем использовать PHP 5.4.39 на Windows 7, а в качестве Web-сервера у нас будет выступать Apache 2.2.22.

    Первое что нужно сделать, это скопировать библиотеки ssleay32.dll, libeay32.dll, libssh2.dll они расположены в директории с PHP, в системный каталог Windows, а именно в C:\Windows\System32 .

    Затем в php.ini подключить библиотеку php_curl.dll, т.е. раскомментировать следующую строку

    Библиотека не подключена

    ;extension=php_curl.dll

    Библиотека подключена

    Extension=php_curl.dll

    Все, перезапускаем Apache, вызываем функцию phpinfo() и в случае успешного подключения у Вас должен появиться раздел curl


    Если его нет, то это означает только одно, что библиотека не загрузилась, самая распространенная причина этого небыли скопированы вышеперечисленные DLL в системный каталог Windows.

    Пример CURL – запрашиваем удаленную страницу для вывода на экран

    В данном примере мы просто запросим удаленную страницу по протоколу HTTP методом GET и выведем ее содержимое на экран.

    У нас имеется каталог test в нем 2 PHP файла это test_curl.php и test.php, где test_curl.php и есть скрипт где мы будем использовать curl, а test.php удаленный скрипт который мы будем вызывать. Код я подробно прокомментировал.

    Код test_curl.php

    Код test.php

    Заголовок 1"; break; case 2: echo "<Н2>Заголовок 2"; break; case 3: echo "<Н3>Заголовок 3"; break; } } ?>

    В итоге если вы запустите test_curl.php у Вас выведется на экран надпись «Заголовок 1», можете поэкспериментировать с передачей параметров id (в данном случае 2 или 3 ).

    Пример CURL – вызываем удаленный скрипт и получаем результат

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

    Код test_curl.php

    Код test.php

    И если мы запустим test_curl.php то на экран у нас выведется 111, т.е. 1.11 полученное в результате обращения к удаленному скрипту, умноженное на 100.

    А теперь давайте поговорим о функциях и константах к ним.

    Часто используемые функции CURL и константы

    • curl_init - Инициализирует сеанс;
    • curl_close - Завершает сеанс;
    • curl_exec - Выполняет запрос;
    • curl_errno - Возвращает код ошибки;
    • curl_setopt - Устанавливает параметр для сеанса, например:
      • CURLOPT_HEADER – значение 1 означает, что необходимо вернуть заголовки;
      • CURLOPT_INFILESIZE — параметр для указания ожидаемого размера файла;
      • CURLOPT_VERBOSE — значение 1 означает что CURL будет выводить подробные сообщения о всех производимых операциях;
      • CURLOPT_NOPROGRESS – отключение индикатора прогресса операции, значение 1;
      • CURLOPT_NOBODY – если Вам не нужен документ, а нужны только заголовки, то поставьте значение 1;
      • CURLOPT_UPLOAD — для закачки файла на сервер;
      • CURLOPT_POST – выполнить запрос методом POST;
      • CURLOPT_FTPLISTONLY — получение списка файлов в директории FTP сервера, значение 1;
      • CURLOPT_PUT — выполнить запрос методом PUT, значение 1;
      • CURLOPT_RETURNTRANSFER — возвратить результат, не выводя в браузер, значение 1;
      • CURLOPT_TIMEOUT – максимальное время выполнения в секундах;
      • CURLOPT_URL – указание адреса для обращения;
      • CURLOPT_USERPWD — строка с именем пользователя и паролем в виде :;
      • CURLOPT_POSTFIELDS – данные для POST запроса;
      • CURLOPT_REFERER — задает значение HTTP заголовка «Referer: »;
      • CURLOPT_USERAGENT — задает значение HTTP заголовка «User-Agent: »;
      • CURLOPT_COOKIE — содержимое заголовка «Cookie: », который будет отправлен с HTTP запросом;
      • CURLOPT_SSLCERT- имя файла с сертификатом в формате PEM;
      • CURLOPT_SSL_VERIFYPEER – значение 0, для того чтобы запретить проверку сертификата удаленного сервера (по умолчанию 1);
      • CURLOPT_SSLCERTPASSWD — пароль к файлу сертификата.
    • curl_getinfo - Возвращает информацию об операции, вторым параметром может выступать константа для указания, что именно нужно показать, например:
      • CURLINFO_EFFECTIVE_URL — последний использованный URL;
      • CURLINFO_HTTP_CODE — последний полученный код HTTP;
      • CURLINFO_FILETIME — дата модификации загруженного документа;
      • CURLINFO_TOTAL_TIME — время выполнения операции в секундах;
      • CURLINFO_NAMELOOKUP_TIME — время разрешения имени сервера в секундах;
      • CURLINFO_CONNECT_TIME — время, затраченное на установку соединения, в секундах;
      • CURLINFO_PRETRANSFER_TIME — время, прошедшее от начала операции до готовности к фактической передаче данных, в секундах;
      • CURLINFO_STARTTRANSFER_TIME — время, прошедшее от начала операции до момента передачи первого байта данных, в секундах;
      • CURLINFO_REDIRECT_TIME — время, затраченное на перенаправление, в секундах;
      • CURLINFO_SIZE_UPLOAD — количество байт при закачке;
      • CURLINFO_SIZE_DOWNLOAD — количество байт при загрузке;
      • CURLINFO_SPEED_DOWNLOAD — средняя скорость закачки;
      • CURLINFO_SPEED_UPLOAD — средняя скорость загрузки;
      • CURLINFO_HEADER_SIZE — суммарный размер всех полученных заголовков;
      • CURLINFO_REQUEST_SIZE — суммарный размер всех отправленных запросов;
      • CURLINFO_SSL_VERIFYRESULT — результат проверки SSL сертификата, запрошенной с помощью установки параметра CURLOPT_SSL_VERIFYPEER;
      • CURLINFO_CONTENT_LENGTH_DOWNLOAD — размер загруженного документа, прочитанный из заголовка Content-Length;
      • CURLINFO_CONTENT_LENGTH_UPLOAD — размер закачиваемых данных;
      • CURLINFO_CONTENT_TYPE — содержимое полученного заголовка Content-type, или NULL в случае, когда этот заголовок не был получен.

    Подробнее о функциях CURL и константах к ним можете посмотреть на официальном сайте PHP —


    cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.

    Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL — кроссплатформенная утилита для Windows, MAC и UNIX.
    Ниже приведены некоторые часто используемые примеры синтаксиса.

    1. Проверка возможности подключения к URL-адресу

    Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl . Для этого используйте следующую команду:

    # curl yoururl.com

    2. Сохранение вывод URL / URI в файл

    # curl yoururl.com > yoururl.html

    Например:

    # curl 74.125.68.100 >/tmp/google.html

    Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html .

    3. Показать заголовок запроса и ответа

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

    # curl -v yoururl.com

    например:

    # curl -v 74.125.68.100 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* >< HTTP/1.1 200 OK

    4. Загрузить с предельной скоростью

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

    # curl –-limit-rate 2000B

    например:

    # curl –-limit-rate 2000B 74.125.68.100

    5. Использование прокси для подключения

    Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:

    # curl --proxyyourproxy:port http://yoururl.com

    6. Проверка URL-адресас введением заголовка

    Для устранения конкретной проблемы можно использовать Curl , чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:

    # curl --header "Content-Type: application/json" http://yoururl.com

    Мы просим curl передать Content-Type в качестве application / json в заголовок запроса.

    7. Добавить дополнительный заголовок

    Вы можете добавить заголовок к запросу с помощью синтаксиса — header .

    # curl –-header “X-CustomHeader: GeekFlare” http://yoururl.com

    например:

    # curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * About to connect() to 74.125.68.100 port 80 (#0) * Trying 74.125.68.100... * Connected to 74.125.68.100 (74.125.68.100) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.29.0 >Host: 74.125.68.100 >Accept: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK

    8. Открыть только заголовок ответа

    Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.

    # curl --head http://yoururl.com

    # curl -I 74.125.68.100 HTTP/1.1 200 OK Date: Sun, 18 Jan 2015 08:31:22 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=Mon, 20-Jul-2015 08:31:22 GMT; path=/; domain=.; HttpOnly P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for moreinfo." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding #

    9. Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата

    Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.

    curl --insecure https://yoururl.com

    10. Подключиться с использованием определенного протокола (SSL / TLS)

    Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS ,используйте следующий синтаксис.

    Для подключения с использованием SSLV2:

    # curl --sslv2 https://yoururl.com

    Для подключения с использованием SSLV3:

    # curl --sslv3 https://yoururl.com

    Для подключения через TLS:

    # curl --tlsv1 https://yoururl.com

    11. Загрузить файл с FTP-сервера

    С помощью cURL можно загрузить файл с ftp-сервера , указав имя пользователя и пароль.

    # curl -u user:password -O ftp://ftpurl/style.css

    Всегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.

    Использования cURL онлайн

    Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
    Online CURL — компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.

    Connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent

    Пример вывода:


    cURL command line builder –позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.