Содержание
- 1 Installation
- 2 Пожалуйста, помогите c переводом:
- 3 Команды Curl для HTTP
- 4 Обнаружение перенаправления в зависимости от браузера
- 5 Web-протоколы
- 6 What is curl?
- 7 Почему cURL?
- 8 Команда Curl для Работы с Файлами
- 9 Best practices for resolving curl issues
- 10 Contact
- 11 Загрузка файлов методом POST
- 12 И все же автоматика лучше!
- 13 Инструкция по ручному удалению вируса CURL.EXE
- 14 Следовать за редиректами
- 15 Информация о файле curl.exe
- 16 Как пользоваться curl?
- 17 EXAMPLES
- 18 HTTP-клиент на Python
- 19 Usage
- 20 Получение и отправка заголовков
- 21 Curl и FTP
- 22 5 последних уроков рубрики «PHP»
- 23 Download Several URLs With ‘curl’
- 24 Отправка данных методом POST
- 25 Direct the Contents of ‘curl’ to a File
- 26 Получение информации
- 27 Ubuntu install curl command
- 28 curl examples to simulate HTTP methods
Installation
Pull this package in through Composer.
{ "require": { "ixudra/curl": "6.*" } }
or run in terminal:
Laravel 5.5+ Integration
Laravel 5.* Integration
Add the service provider to your file:
'providers' => array( //... Ixudra\Curl\CurlServiceProvider::class, ),
Add the facade to your file:
'aliases' => array( //... 'Curl' => Ixudra\Curl\Facades\Curl::class, ),
Laravel 4.* Integration
Add the service provider to your file:
'providers' => array( //... 'Ixudra\Curl\CurlServiceProvider', ),
Add the facade to your file:
'facades' => array( //... 'Curl' => 'Ixudra\Curl\Facades\Curl', ),
Lumen 5.* integration
In your , make sure you’ve un-commented the following line (around line 26):
Then, register your class alias:
Finally, you have to register your ServiceProvider (around line 70-80):
Пожалуйста, помогите c переводом:
It slides comfortably into the ‘affordable’ bracket though, considering its supersized display, and when it lands on contract (which should be soon) it won’t carry hefty monthly fees. Английский-Русский
(8) 4 ÷ 2 are divided into 5 steps
(a) Correct quotient
(b) Over-quotient by once
(c) Over-quotient by twice or more
(d) Same first digits (2 scenarios)
(e) Both first digits are 1 over-quotient (129, 348, 567, 786, 95)
(f) Line to help memorize returning : minus 1 time, skip a space and add back Mr. Cat Английский-Русский
1. Lol when @hartdenton develops his coachella polaroids 2. Usting @melton as my bitch for gueen 3. Trying to pack for LA 4. Fresh nails wha dis 5. Me once my motor cycle license is done this summer 6. So cute 7. The detail. . . even down to my snake rings. . . Amazing! Английский-Русский
Giving a definition of the term “comedy”, one may face some difficulties as it’s one of the most complex categories of aesthetics. Comedy is historically volatile, it depends on the context and has a social nature. The laughter is not always a sight of comedy, and comedy is not always defined by laughter. It is circumstances, sharpening the contradictions and helping to reveal its social nature Английский-Русский
Команды Curl для HTTP
Curl также можно использовать c прокси-сервером. Если вы находитесь за прокси-сервером, прослушивающим порт 8090 на sampleproxy.com, загрузите файлы, как показано ниже:
curl -x sampleproxy.com:8090 -U username:password -O http:// testdomain.com/testfile.tar.gz
В приведённом выше примере вы можете выбросить -U username:password, если прокси-сервер не требует метода аутентификации.
Типичный HTTP-запрос всегда содержит заголовок. Заголовок HTTP отправляет дополнительную информацию об удалённом веб-сервере вместе с фактическим запросом. С помощью инструментов разработчика в браузере вы можете посмотреть сведения о заголовке, а проверить их можно с помощью команды curl.
Пример ниже демонстрирует, как получить информацию о заголовке с веб-сайта.
curl -I www.testdomain.com
Используя curl, вы можете сделать запрос GET и POST. Запрос GET будет выглядеть следующим образом:
curl http://mydomain.com
А вот пример запроса 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”
Вы можете изменить дефолтную информацию об агенте пользователя, используя следующую команду:
curl -I http://mydomain.com –-user-agent “My new Browser”
Теперь вывод будет выглядеть так:
“GET / HTTP/1.1” 200 “_” ”My new Browser”
Обнаружение перенаправления в зависимости от браузера
В этом первом примере мы напишем код, который сможет обнаружить перенаправления URL, основанные на различных настройках браузера. Например, некоторые веб-сайты перенаправляют браузеры сотового телефона, или любого другого устройства.
Мы собираемся использовать опцию CURLOPT_HTTPHEADER для того, чтобы определить наши исходящие HTTP заголовки, включая название браузера пользователя и доступные языки. В конечном итоге мы сможем определить, какие сайты перенаправляют нас к разным URL.
// тестируем URL $urls = array( "http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com" ); // тестируем браузеры $browsers = array( "standard" => array ( "user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)", "language" => "en-us,en;q=0.5" ), "iphone" => array ( "user_agent" => "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A537a Safari/419.3", "language" => "en" ), "french" => array ( "user_agent" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "language" => "fr,fr-FR;q=0.5" ) ); foreach ($urls as $url) { echo "URL: $url\n"; foreach ($browsers as $test_name => $browser) { $ch = curl_init(); // указываем url curl_setopt($ch, CURLOPT_URL, $url); // указываем заголовки для браузера curl_setopt($ch, CURLOPT_HTTPHEADER, array( "User-Agent: {$browser}", "Accept-Language: {$browser}" )); // нам не нужно содержание страницы curl_setopt($ch, CURLOPT_NOBODY, 1); // нам необходимо получить HTTP заголовки curl_setopt($ch, CURLOPT_HEADER, 1); // возвращаем результаты вместо вывода curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // был ли HTTP редирект? if (preg_match("!Location: (.*)!", $output, $matches)) { echo "$test_name: redirects to $matches\n"; } else { echo "$test_name: no redirection\n"; } } echo "\n\n"; }
Сначала мы указываем список URL сайтов, которые будем проверять. Точнее, нам понадобятся адреса данных сайтов. Далее нам необходимо определить настройки браузера, чтобы протестировать каждый из этих URL. После этого мы воспользуемся циклом, в котором пробежимся по всем полученным результатам.
Приём, который мы используем в этом примере для того, чтобы задать настройки cURL, позволит нам получить не содержание страницы, а только HTTP-заголовки (сохраненные в $output). Далее, воспользовавшись простым regex, мы можем определить, присутствовала ли строка “Location:” в полученных заголовках.
Когда вы запустите данный код, то должны будете получить примерно следующий результат:
Web-протоколы
Эти Web-сервисы, как правило, построены поверх уровня сокетов стека сетевых протоколов (рисунок 1). Уровень сокетов реализует API, который восходит к операционной системе Berkeley Software Distribution (BSD) и изолирует детали нижележащих протоколов транспортного и сетевого уровней.
Рисунок 1. Стек сетевых протоколов и libcurl
Web-сервисы обеспечивают взаимодействие между протоколами клиента и сервера. В контексте HTTP сервер – это оконечное устройство, а клиент – браузер в удаленной точке. Для SMTP сервер – это почтовый шлюз или удаленный пользователь, а клиент – оконечное устройство. В некоторых случаях взаимодействие протоколов происходит в два этапа (запрос и ответ), а в других для поддержания связи требуется гораздо больше трафика. Такое взаимодействие может создать значительные трудности, которые преодолеваются с помощью API, таких как libcurl.
What is curl?
curl, short for «Client for URLs», is a command line tool for transferring data using various protocols. This tool has applications in many household products such as tablets, printers, cars, routers, etc.
There are a vast amount of use-cases for curl, such as:
- FTP upload
- Proxy support
- SSL connections
- HTTP post
This tool also supports the use of all the following protocols: DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, and TFTP.
This guide will outline a few popular curl examples, along with a description of what each command does.
Почему cURL?
На самом деле, существует немало альтернативных способов выборки содержания веб-страницы. Во многих случаях, главным образом из-за лени, я использовал простые PHP функции вместо cURL:
$content = file_get_contents("http://www.nettuts.com"); // или $lines = file("http://www.nettuts.com"); // или readfile("http://www.nettuts.com");
Однако данные функции не имеют фактически никакой гибкости и содержат огромное количество недостатков в том, что касается обработки ошибок и т.д. Кроме того, существуют определенные задачи, которые вы просто не можете решить благодаря этим стандартным функциям: взаимодействие с cookie, аутентификация, отправка формы, загрузка файлов и т.д.
cURL — это мощная библиотека, которая поддерживает множество различных протоколов, опций и обеспечивает подробную информацию о URL запросах.
Команда Curl для Работы с Файлами
Команды Curl могут загружать файлы из удалённой локации. Есть два способа это сделать:
- -O сохранит файл в текущем рабочем каталоге с тем же именем, что и у удалённого;
- -o позволяет указать другое имя файла или местоположение.
Вот пример:
curl -O http://testdomain.com/testfile.tar.gz
Приведённая выше команда сохранит файл как testfile.tar.gz.
curl -o newtestfile.tar.gz http://testdomain.com/testfile.tar.gz
А эта команда сохранит его как newtestfile.tar.gz.
Если по какой-либо причине загрузка будет прервана, вы можете возобновить её с помощью следующей команды:
curl -C - -O http://testdomain.com/testfile.tar.gz
Curl также позволяет загрузить несколько файлов одновременно. Пример:
curl -O http://testdomain.com/testfile.tar.gz -O http://mydomain.com/myfile.tar.gz
Если вы хотите загрузить несколько файлов с нескольких URL, перечислите их все в файле. Команды Curl могут быть объединены с xargs для загрузки различных URL-адресов.
Например, если у нас есть файл allUrls.txt, который содержит список всех URL-адресов для загрузки, то приведённый ниже пример выполнит загрузку всех файлов с этих URL.
xargs –n 1 curl -O < allUrls.txt
Best practices for resolving curl issues
A clean and tidy computer is the key requirement for avoiding problems with curl. This means running a scan for malware, cleaning your hard drive using 1cleanmgr and 2sfc /scannow, 3uninstalling programs that you no longer need, checking for Autostart programs (using 4msconfig) and enabling Windows’ 5Automatic Update. Always remember to perform periodic backups, or at least to set restore points.
Should you experience an actual problem, try to recall the last thing you did, or the last thing you installed before the problem appeared for the first time. Use the 6resmon command to identify the processes that are causing your problem. Even for serious problems, rather than reinstalling Windows, you are better off repairing of your installation or, for Windows 8 and later versions, executing the 7DISM.exe /Online /Cleanup-image /Restorehealth command. This allows you to repair the operating system without losing data.
To help you analyze the curl.exe process on your computer, the following programs have proven to be helpful: ASecurity Task Manager displays all running Windows tasks, including embedded hidden processes, such as keyboard and browser monitoring or Autostart entries. A unique security risk rating indicates the likelihood of the process being potential spyware, malware or a Trojan. BMalwarebytes Anti-Malware detects and removes sleeping spyware, adware, Trojans, keyloggers, malware and trackers from your hard drive.
Contact
For package questions, bug, suggestions and/or feature requests, please use the Github issue system and/or submit a pull request. When submitting an issue, always provide a detailed explanation of your problem, any response or feedback your get, log messages that might be relevant as well as a source code example that demonstrates the problem. If not, I will most likely not be able to help you with your problem. Please review the contribution guidelines before submitting your issue or pull request.
For any other questions, feel free to use the credentials listed below:
Jan Oris (developer)
- Email: jan.oris@ixudra.be
- Telephone: +32 496 94 20 57
Загрузка файлов методом POST
Для HTTP запроса типа POST существует два варианта передачи полей из HTML форм, а именно, используя алгоритм и . Алгоритм первого типа создавался давным-давно, когда в языке HTML еще не предусматривали возможность передачи файлов через HTML формы.
Со временем возникла необходимость через формы отсылать еще и файлы. Тогда консорциум W3C взялся за доработку формата POST запроса, в результате чего появился документ RFC 1867. Форма, которая позволяет пользователю загрузить файл, используя алгоритм , выглядит примерно так:
<form action="/upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="upload"> <input type="submit" name="submit" value="OK"> </form>
Чтобы отправить на сервер данные такой формы:
> curl -F upload=@image.jpg -F submit=OK http://www.example.com/upload.php
Скрипт , который принимает данные формы:
<?php print_r($_POST); print_r($_FILES); move_uploaded_file($_FILES'upload''tmp_name', 'image.jpg');
Ответ сервера:
Array ( => OK ) Array ( => Array ( => image.jpg => image/jpeg => D:\work\temp\phpB02F.tmp => 0 => 2897 ) )
И все же автоматика лучше!
Если ручной метод — не для вас, и хочется более легкий путь, существует множество специализированного ПО, которое сделает всю работу за вас. Я рекомендую воспользоваться UnHackMe от Greatis Software, выполнив все по пошаговой инструкции.
UnHackMe выполнит все указанные шаги, проверяя по своей базе, всего за одну минуту.
При этом UnHackMe скорее всего найдет и другие вредоносные программы, а не только криптомайнер CURL.EXE.
При ручном удалении могут возникнуть проблемы с удалением открытых файлов. Закрываемые процессы могут немедленно запускаться вновь, либо могут сделать это после перезагрузки. Часто возникают ситуации, когда недостаточно прав для удалении ключа реестра или файла.
UnHackMe легко со всем справится и выполнит всю трудную работу во время перезагрузки.
И это еще не все. Если после удаления на CURL.EXE какие то проблемы остались, то в UnHackMe есть ручной режим, в котором можно самостоятельно определять вредоносные программы в списке всех программ.
Инструкция по ручному удалению вируса CURL.EXE
Для того, чтобы самостоятельно избавиться от CURL.EXE, вам необходимо последовательно выполнить все шаги, которые я привожу ниже:
- Поискать «CURL.EXE» в списке установленных программ и удалить ее.
Открыть Диспетчер задач и закрыть программы, у которых в описании или имени есть слова «CURL.EXE». Заметьте, из какой папки происходит запуск этой программы. Удалите эти папки.
Запретить вредные службы с помощью консоли services.msc.
Удалить “Назначенные задания”, относящиеся к CURL.EXE, с помощью консоли taskschd.msc.
С помощью редактора реестра regedit.exe поискать ключи с названием или содержащим «CURL.EXE» в реестре.
Проверить ярлыки для запуска браузеров на предмет наличия в конце командной строки дополнительных адресов Web сайтов и убедиться, что они указывают на подлинный браузер.
Проверить плагины всех установленных браузеров Internet Explorer, Chrome, Firefox и т.д.
Проверить настройки поиска, домашней страницы. При необходимости сбросить настройки в начальное положение.
Очистить корзину, временные файлы, кэш браузеров.
Следовать за редиректами
Сервер Google сообщил нам, что страница перемещена (301 Moved Permanently), и теперь надо запрашивать страницу . С помощью опции укажем CURL следовать редиректам:
> curl -L google.com <!doctype html> <html itemscope="" itemtype="http://schema.org/WebPage" lang="ru"> <head> <meta content="Поиск информации в интернете: веб страницы, картинки, видео и многое другое." name="description"> <meta content="noodp" name="robots"> <meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"> <meta content="origin" name="referrer"> <title>Google</title> ..........
Информация о файле curl.exe
Процесс The cURL executable принадлежит программе The cURL executable или ReadCube от cURL, http://curl.haxx.se или pepsmich.
Описание: curl.exe не является важным для Windows и часто вызывает проблемы. Curl.exe находится в подпапках «C:\Program Files». Известны следующие размеры файла для Windows 10/8/7/XP 10,240 байт (50% всех случаев), 76,288 байт или 937,984 байт. У процесса нет видимого окна. Это не системный процесс Windows. У файла нет информации о создателе этого файла. Curl.exe способен мониторить приложения. Поэтому технический рейтинг надежности 73% опасности.
Рекомендуем: Выявление проблем, связанных с curl.exe
- Если curl.exe находится в подпапках «C:\Users\USERNAME», тогда рейтинг надежности 39% опасности. Размер файла 480,048 байт (50% всех случаев) или 584,192 байт. У процесса нет видимого окна. Это не файл Windows. Вы можете удалить ReadCube, или попросить помощи у технической поддержки. Перейдите к ReadCube в Панели управления Windows (раздел Программы и компоненты) для удаления программы, или перейдите к labtiva.com Службе Поддержки Клиентов.
- Если curl.exe находится в папке C:\Windows, тогда рейтинг надежности 52% опасности. Размер файла 490,496 байт. Находится в папке Windows, но это не файл ядра Windows. У процесса нет видимого окна. Это не системный процесс Windows.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Самая частая задача — это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:
Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:
А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:
Если загрузка была неожиданно прервана, вы можете ее возобновить:
Если нужно, одной командой можно скачать несколько файлов:
Еще одна вещь, которая может быть полезной администратору — это загрузка файла, только если он был изменен:
Данная команда скачает файл, только если он был изменен после 21 декабря 2017.
Ограничение скорости
Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:
Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:
Передача файлов
Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:
Или проверим отправку файла по HTTP, для этого существует специальный сервис:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:
Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:
Затем можно отправить cookie curl обратно:
Передача и анализ заголовков
Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:
А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:
Аутентификация curl
Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:
Точно так же будет выполняться аутентификация на серверах HTTP.
Использование прокси
Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:
EXAMPLES
To send your password file to the server, where ‘password’ is the name of the form-field to which /etc/passwd will be the input:
$ curl -F password=@/etc/passwd www.mypasswords.com
To retrieve a web page and display in the terminal
$ curl http://www.tutorialspoint.com
To retrieve a web page and display header information
$ curl http://www.tutorialspoint.com -i
To retrieve a web page and save to a file.
$ curl http://www.tutorialspoint.com -0 tutorialspoint.html
To retrieve a web page, or its redirected target
$ curl www.tutorialspoint.com/unix/ $ curl www.tutorialspoint.com/unix/ --location
To limit the rate of data transfer to 1 Kilobytes/sec
$ curl http://www.tutorialspoint.com/unix/ --limit-rate 1k -o unix.html
To download via a proxy server
$ curl -x proxy.example.com:3128 http://www.tutorialspoint.com/unix/
HTTP-клиент на Python
В этом разделе приводится пример, подобный HTTP-клиенту на языке С, но на этот раз написанный на Python. Python – это полезный объектно-ориентированный язык сценариев, который отлично подходит для создания прототипов и коммерческого программного обеспечения. В примере предполагается, что вы немного знакомы с Python, но он используется очень мало, так что глубокие знания не потребуются.
Код простого HTTP-клиента, написанный на языке Python с использованием, приведен в листинге 4.
Листинг 4. HTTP-клиент на Python с использованием интерфейса из libcurl
import sys import pycurl wr_buf = '' def write_data( buf ): global wr_buf wr_buf += buf def main(): c = pycurl.Curl() c.setopt( pycurl.URL, 'http://www.exampledomain.com' ) c.setopt( pycurl.WRITEFUNCTION, write_data ) c.perform() c.close() main() sys.stdout.write(wr_buf)
Создание прототипа на Python
Здесь иллюстрируется одно из преимуществ языка Python при создании прототипов. Довольно широкая функциональность достигается при небольшом количестве кода. На С можно получить более высокую производительность, но если вашей целью является быстрое создание кода для проверки идеи, лучше воспользоваться высокоуровневыми языками сценариев, такими как Python.
Этот код значительно проще, чем версия на C
Он начинается с импортирования необходимых модулей (стандартного системного модуля и модуля ). Далее определяется буфер записи (). Как и в программе на C, я декларирую функцию . Обратите внимание, что эта функция принимает один аргумент: буфер данных, считанных с сервера HTTP. Я просто взял этот буфер и добавил его к глобальному буферу записи
Функция начинает с создания указателя , затем использует для записи методы для определения и . Она вызывает метод для запуска передачи и закрывает указатель. Наконец, она вызывает функцию и передает буфер записи в . Обратите внимание, что в данном случае указатель ошибки контекста не нужен, поскольку используется конкатенация строк Python, а значит, не нужно использовать строку со статически заданным размером.
Usage
Once installed you can use it as follows to see the headers: Sample outputs:
HTTP/2 200 date: Mon, 29 Jul 2019 13:13:08 GMT content-type: text/html; charset=UTF-8 set-cookie: __cfduid=d5292058141c28e3cda2d9501688cff531564405988; expires=Tue, 28-Jul-20 13:13:08 GMT; path=/; domain=.cyberciti.biz; HttpOnly; Secure vary: Accept-Encoding strict-transport-security: max-age=15552000 x-whome: l-cbz02 cf-cache-status: HIT age: 102433 x-content-type-options: nosniff expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" server: cloudflare cf-ray: 4fdf59334ab9dcb5-MAA |
Or download a file from a server using curl itself: You can resume broken download with the curl command as follows:Change user agent while accessing the url:Passing HTTP referer is easy too: In this example, upload a ‘.doc’ file (HTTP POST request) using the curl command:
Получение и отправка заголовков
По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:
> curl -i google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=utf-8 Date: Sun, 16 Sep 2018 08:28:18 GMT Expires: Tue, 16 Oct 2018 08:28:18 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен запрос):
> curl -I http://www.example.com/ HTTP/1.1 200 OK Date: Sun, 16 Sep 2018 08:20:52 GMT Server: Apache/2.4.34 (Win64) mod_fcgid/2.3.9 X-Powered-By: PHP/7.1.10 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/ Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/ Set-Cookie: lastvisit=1537086053; path=/ Content-Length: 132217 Content-Type: text/html; charset=utf-8
Посмотреть, какие заголовки отправляет CURL при запросе, можно с помощью опции , которая выводит более подробную информацию:
> curl -v google.com
- Строка, начинающаяся с означает заголовок, отправленный серверу
- Строка, начинающаяся с означает заголовок, полученный от сервера
- Строка, начинающаяся с означает дополнительные данные от CURL
* Rebuilt URL to: http://google.com/ * Trying 173.194.32.206... * TCP_NODELAY set * Connected to google.com (173.194.32.206) port 80 (#0)
> GET / HTTP/1.1 > Host: google.com > User-Agent: curl/7.61.1 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Location: http://www.google.com/ < Content-Type: text/html; charset=utf-8 < Date: Mon, 17 Sep 2018 15:11:49 GMT < Expires: Wed, 17 Oct 2018 15:11:49 GMT < Cache-Control: public, max-age=2592000 < Server: gws < Content-Length: 219 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
* Connection #0 to host google.com left intact
Если этой информации недостаточно, можно использовать опции или .
А вот так можно отправить свой заголовок:
> curl -H "User-Agent: Mozilla/5.0" http://www.example.com/
Curl и FTP
Утилита поддерживает FTP! Вы можете использовать её для загрузки файлов с удалённого сервера.
curl -u username:password -O ftp://sampleftpserver/testfile.tar.gz
В приведённой выше команде ftp://sampleftpserver — это FTP-сервер, который принимает соединения. Вы можете не указывать имя пользователя и пароль для анонимных FTP-соединений. Введите команду и посмотрите, как заполняется индикатор выполнения.
Вы также можете загружать файлы с помощью этой команды:
curl -u username:password -T testfile.tar.gz ftp://sampleftpserver
Опять же таки, мы можем пропустить имя пользователя и пароль для анонимных FTP-соединений.
5 последних уроков рубрики «PHP»
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных. Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак
В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода. Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение
В этой статье мы расскажем как улучшили процесс подключение нескольких модулей. Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке. Подборка PHP песочниц Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Download Several URLs With ‘curl’
In its simplest form, download several URLs simultaneously by specifying them in sequence:
curl -O http://www.mysite.com/page1.html -O http://www.mysite.com/page2.html
To download a large number of files with a common naming pattern, use square brackets to supply a range. For example, to get image files suffixed 1 to 100, specify the following:
curl -O http://www.mysite.com/images/image.jpg
Use curly brackets to specify multiple sites with similar formats.
For example, to download the index pages for both www.google.com and www.bing.com, use the following command:
curl -O http://www.{google,bing}.com
Your shell may rewrite these commands as necessary. Learn more about regular expressions for relevant context.
Displaying Progress
By default, the curl command returns the following information as it downloads a URL:
- Total %: Percent of the total transfer completed.
- Total bytes: Total size of the transfer in bytes.
- Received/Transferred %: Percentage of transfer completed.
- Received/Transferred bytes: Number of bytes downloaded.
- Average download speed: Download speed in bytes per second.
- Average upload speed: Upload speed in bytes per second.
- Total time: Estimated time to complete the current operation.
- Time spent: Time passed since the start of the transfer.
- Time left: Expected time to complete the transfer.
- Current speed: Current transfer speed in bytes per second.
If you would prefer a simple progress bar, specify the -# switch as follows:
curl -# -O <URL>
Отправка данных методом POST
Команда ниже отправляет POST запрос на сервер аналогично тому, как пользователь, заполнив HTML форму, нажал бы кнопку «Отправить». Данные будут отправлены в формате .
> curl -d "key1=value1&key2=value2" http://www.example.com
> curl --data "key1=value1&key2=value2" http://www.example.com
Параметр аналогичен , для отправки двоичных данных необходимо использовать параметр . Для URL-кодирования полей формы нужно использовать .
> curl --data-urlencode "name=Василий" --data-urlencode "surname=Пупкин" http://www.example.com
Если значение опции начинается с , то после него должно быть имя файла с данными (или дефис — тогда будут использованы данные из стандартного ввода). Пример получения данных из файла для отправки POST-запроса:
> curl --data @data.txt http://www.example.com
Содержимое файла :
key1=value1&key2=value2
Массив , который будет содержать данные этого запроса:
Array ( => value1 => value2 )
Пример URL-кодирования данных из файла перед отправкой POST-запроса:
> curl --data-urlencode name@username.txt http://www.example.com
Содержимое файла :
Иванов Иван Иванович
Массив , который будет содержать данные этого запроса:
Array ( = Иванов Иван Иванович )
Direct the Contents of ‘curl’ to a File
When you download an object like an ISO image, send it to a file instead of to the standard output.
To save the content to a file, specify the -o switch as follows:
curl -o <filenametocreate> <URL>
To download the page linked to in the basic command usage section, enter the following command:
curl -o google.htm http://www.google.com
After the file downloads, open it in an editor or its default program determined by the file type.
You can simplify this further by using the -O switch as follows:
curl -O http://www.google.com/index.html
This switch uses the filename portion of the URL and makes it the filename that the URL is saved to.
The -o and -O switches must reference a specific file; they cannot point generically to a folder or a top-level URL. The curl command reports a no-length error in such situations.
Получение информации
Ещё одним дополнительным шагом является получение данных о cURL запросе, после того, как он был выполнен.
// ... curl_exec($ch); $info = curl_getinfo($ch); echo 'Took ' . $info . ' seconds for url ' . $info; // …
Возвращаемый массив содержит следующую информацию:
- “url”
- “content_type”
- “http_code”
- “header_size”
- “request_size”
- “filetime”
- “ssl_verify_result”
- “redirect_count”
- “total_time”
- “namelookup_time”
- “connect_time”
- “pretransfer_time”
- “size_upload”
- “size_download”
- “speed_download”
- “speed_upload”
- “download_content_length”
- “upload_content_length”
- “starttransfer_time”
- “redirect_time”
Ubuntu install curl command
First update the system and get latest stable curl version for Ubuntu:
Type the following apt command or apt-get command: Sample outputs:
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libcurl4 The following NEW packages will be installed: curl libcurl4 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 373 kB of archives. After this operation, 1,036 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://in.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libcurl4 amd64 7.58.0-2ubuntu3.7 Get:2 http://in.archive.ubuntu.com/ubuntu bionic-updates/main amd64 curl amd64 7.58.0-2ubuntu3.7 Fetched 373 kB in 2s (150 kB/s) Selecting previously unselected package libcurl4:amd64. (Reading database ... 164985 files and directories currently installed.) Preparing to unpack .../libcurl4_7.58.0-2ubuntu3.7_amd64.deb ... Unpacking libcurl4:amd64 (7.58.0-2ubuntu3.7) ... Selecting previously unselected package curl. Preparing to unpack .../curl_7.58.0-2ubuntu3.7_amd64.deb ... Unpacking curl (7.58.0-2ubuntu3.7) ... Setting up libcurl4:amd64 (7.58.0-2ubuntu3.7) ... Processing triggers for libc-bin (2.27-3ubuntu1) ... Processing triggers for man-db (2.8.3-2ubuntu0.1) ... Setting up curl (7.58.0-2ubuntu3.7) ... |
curl examples to simulate HTTP methods
curl can also be useful for testing HTTP methods. The following is a list of that can be used by running a curl command.
13. method
The method is used to retrieve resources from a particular URL. The simple command will use as the default HTTP method, however it can also be specified using or .
14. method
15. method
16. method
The method creates or replaces a resource based on the data the client submits to the web server. (e.g creating a new web page or updating an existing one). This can be specified using or .
17. Making curl requests with data
You can make requests using certain HTTP methods and also send along data via the or option. The example below uses a request which sends login data to a login page of a particular website.
С этим читают
- Базовая работа с php curl: get, post, json, headers
- Python write file/ read file
- Чпу, роутинг, единая точка входа на php
- C++ files and streams
- Война с дубликатами. как нужно и как не нужно канонизировать url
- Чем открываются файлы расширения .aspx
- Скачать shareman
- 10+ вставок кода для htaccess
- Что мне сделать, чтобы мой сайт видели поисковые системы?
- Sitemap.xml:создание карты сайта — полный курс