- Примеры использования cURL в PHP
- GET запрос
- POST запрос
- PUT запрос
- DELETE запрос
- Запрос через proxy
- Отправка файлов на другой сервер
- Скачивание файлов
- Отправить и получить cookie
- Имитация браузера
- HTTP авторизация
- Basic Authorization
- Установка PHP+Curl на Windows
- young
- tony2001
- Hummerstadt
- Настройка curl php на Windows
- Настройка cURL
- Включение поддержки SSL для cURL
- Проверка работы cURL
- [решено] php curl https запрос как правильно
- How To Use Curl with HTTPS Protocol and URLS?
- Install Curl
- Ubuntu, Debian, Mint, Kali:
- Fedora, CentOS, RHEL:
- SSL/TLS Problems
- Allow Insecure Connections
- Provide Site HTTPS Certificate Manually
- Provide a Certificate Authority Certificate Explicitly
Примеры использования cURL в PHP
GET запрос
POST запрос
file_get_contents() так же умеет отправлять POST запросы:
PUT запрос
DELETE запрос
HTTP-метод DELETE используется в REST API для удаления объектов.
Запрос через proxy
Отправка файлов на другой сервер
Отправка файлов осуществляется методом POST :
С PHP 5.5 такой метод загрузки файлов вызывает ошибку, поэтому следует применять CURLFile.
Также через curl можно отправить сразу несколько файлов:
Ещё файлы можно отправить методом PUT , например так загружаются файлы в REST API Яндекс Диска.
Скачивание файлов
Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE .
Отправить и получить cookie
Чтобы CURL сохранял куки в файле достаточно прописать его путь в параметрах CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR .
Передать значение кук можно принудительно через параметр CURLOPT_COOKIE .
Имитация браузера
На многих сайтах есть защита от парсинга. Она основана на том что браузер передает серверу user agent , referer , cookie . Сервер проверяет эти данные и возвращает нормальную страницу. При подключение через curl эти данные не передаются и сервер отдает ошибку 404 или 500. Чтобы имитировать браузер нужно добавить заголовки:
HTTP авторизация
Basic Authorization
Если на сервере настроена HTTP авторизация, например с помощью .htpasswd, подключится к нему можно с помощью параметра CURLOPT_USERPWD .
Установка PHP+Curl на Windows
Новичок
Установка PHP+Curl на Windows
Подскажите, как установить PHP+Curl на Windows. Я скачал все что нужно, установил curl в папку apache\php\curl\
Проверил из командной строки, библиотек работает. Но как ее связать с PHP не знаю. В Интернете у всех одна и таже фраза:
compile PHP —with-curl[=DIR]
Но как же быть с Виндой. Как параметры прописать?
young
Новичок
TeaM PHPClub
у меня юзать эту dll-ку под виндой так и не получилось.
я в итоге из командой строки curl вызываю.
т.е.
@exec(«c:\path\to\curl\curl.exe -d \»$data\» https://sslserver.com», $return_string);
tony2001
TeaM PHPClub
Новичок
Все получилось, спасибо. Привожу пример настройки, если кому интересно:
1. установил curl в папку apache\php\curl\
2. туда же кинул OpenSSL 0.9.6a (которая также включает в себя два файла: libeay32.dll и libssl32.dll). Впрочем строго говоря для работы curl необходимы только libeay32.dll и ssleay32.dll. Эти два файла должны быть в папке apache.
3. убрал ; в файле php.ini в строке:
;extension=php_curl.dll
4. проверить можно, написав в файле строку:
curl_version();
Hummerstadt
Новичок
Автор оригинала: Кром
Все получилось, спасибо. Привожу пример настройки, если кому интересно:
1. установил curl в папку apache\php\curl\
2. туда же кинул OpenSSL 0.9.6a (которая также включает в себя два файла: libeay32.dll и libssl32.dll). Впрочем строго говоря для работы curl необходимы только libeay32.dll и ssleay32.dll. Эти два файла должны быть в папке apache.
3. убрал ; в файле php.ini в строке:
;extension=php_curl.dll
4. проверить можно, написав в файле строку:
curl_version();
С curl даже «старичок» парился, не то что я там.
Нет файла OpenSSL 0.9.ba в архиве. Скачал curl-7.14.0-win32-ssl-sspi.zip и curl-7.14.0.zip.
По-прежнему не могу поставить.
Все, хакнул этот сайт http://curl.haxx.se/docs/faq.html , нашел вот это
и счастливо качаю
Настройка curl php на Windows
Настройка cURL
Написанное ниже актуально для связки Windows 8.1 x64 , Windows10 x64 + Apache 2.4.12 (win32) + Open SSl 1.0.1m + PHP 5.6.11 (php-5.6.11-Win32-VC11-x86).
- Скачиваем библиотеку cURL http://winampplugins.co.uk/curl. Распаковываем в любую папку. Например, «W:\WebServers\usr\local\curl».
- В файле настроек PHP php.ini необходимо включить расширение extension=php_curl.dll.
- Пункт не обязательный, но во многих источниках его рекомендуют выполнять. У нас работает без выполнения этого пункта. Из папки где установлен PHP скопировать в папку « C:\Windows \system32» следующие библиотеки: libssh2.dll, php_curl.dll (находится в папке ext), ssleay32.dll, libeay32.dll. Дополнительно файл ssleay32.dll необходимо скопировать в «C:\Windows\SysWOW64».
- Добавить в переменные среды в переменную Path пути до папки установки curl.exe и файла php.ini. Например, «W:\WebServers\usr\local\curl;W:\WebServers\usr\local\php5». Очень порадовало то, что в windows10 (1511) появился новый интерфейс редактирования переменных сред. Стало очень удобно редактировать параметры.
Включение поддержки SSL для cURL
- Скачать файл http://curl.haxx.se/ca/cacert.pem в папку, в которой установлена библиотека curl.exe.
- Переименовать скаченный файл в curl-ca-bundle.crt
- Перезагрузить компьютер.
Проверка работы cURL
© 2004–2020 Студия Павла Филинкова в Екатеринбурге
Вся информация на сайте носит справочный характер и не является публичной офертой.
[решено] php curl https запрос как правильно
Собственно параметры CURL для работы с SSL:
CURLOPT_SSL_VERIFYPEER — если поставить его в 0, то удалённый сервер не будет проверять наш сертификат. В противном случае необходимо этот самый сертификат послать.
CURLOPT_CAINFO — указывать файл сертификата, если CURLOPT_SSL_VERIFYPEER установлен в 1.
CURLOPT_SSLVERSION — целое число, указывает версию SSL (2 или 3), обычно определяется автоматически.
CURLOPT_SSL_VERIFYHOST — будет ли производиться проверка имени удалённого сервера, указанного в сертификате. Если установить значение «2», то будет произведена ещё и проверка соответствия имени хоста. (если честно, я так и не понял что делает этот флаг)
И самый простой способ CURLOPT_SSL_VERIFYPEER поставить в 0
ПРИМЕР:
$postfields = array(‘field1’=>’value1’, ‘field2’=>’value2’);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘https://foo.com’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
// Edit: prior variable $postFields should be $postfields;
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // On dev server only!
$result = curl_exec($ch);
Значение остальных параметров:
CURLOPT_URL — это URL запроса.
CURLOPT_POST — говорим, что будем посылать POST запрос.
CURLOPT_POSTFIELDS — собственно POST переменыые.
CURLOPT_RETURNTRANSFER — вернуть результат запроса, а не выводить в браузер.
А вот что написано в хелпе: http://php.net/manual/en/function.curl-setopt.php#110457
Please everyone, stop setting CURLOPT_SSL_VERIFYPEER to false or 0. If your PHP installation doesn’t have an up-to-date CA root certificate bundle, download the one at the curl website and save it on your server:
Then set a path to it in your php.ini file, e.g. on Windows:
Turning off CURLOPT_SSL_VERIFYPEER allows man in the middle (MITM) attacks, which you don’t want!
Что означет не использовать, тот метод что я описал выше CURLOPT_SSL_VERIFYPEER, а обновить CA root certificate bundle и прописать путь к сертификату: curl.cainfo
Если вы хотите посмотреть как выглядит HTTP \ HTTPS запрос который вы отправляете в браузере, то поставьте в chrome расширение Advanced REST client
Еще небольшой пример как работать curl впринципи в php:
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
function get_web_page( $url )
<
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don’t return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => «», // handle all encodings
CURLOPT_USERAGENT => «spider», // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header[‘errno’] = $err;
$header[‘errmsg’] = $errmsg;
$header[‘content’] = $content;
return $header;
>
This sample function takes a URL argument and returns an associative array containing the server header and content. The CURL functions automatically handle DNS lookups, redirects, cookies, and file decompression.
Header values are described in the curl_getinfo() manual. Highlights include:
«url» the final page URL after redirects
«content_type» the content type (e.g. «text/html; charset=utf-8»)
«http_code» the page status code (e.g. «200» on success)
«filetime» the date stamp on the remote file
This function adds::
«errno» the CURL error number (0 on success)
«errmsg» the CURL error message for the error number
«content» the page content (e.g. HTML text, image bytes, etc.)
On success, «errno» is 0, «http_code» is 200, and «content» contains the web page.
On an error with a bad URL, unknown host, timeout, or redirect loop, «errno» has a non-zero error code and «errmsg» has an error message (see the CURL error code list).
On an error with a missing web page or insufficient permissions, «errno» is 0, «http_code» has a non-200 HTTP status code, and «content» contains the site’s error message page (see the Wikipedia List of HTTP status codes).
This function can be extended to support GET and POST for web forms, file uploads, logins, SSL for encrypted web pages, and access through proxy servers.
How To Use Curl with HTTPS Protocol and URLS?
Curl is a command line tool and library which implements protocols like HTTP, HTTPS, FTP etc. Curl also supports HTTPS protocol which is secure version of the HTTP. Using curl may create some problems. We will examine how to solve these curl HTTPS related problems.
Install Curl
We will start with the installation of the curl tool with the following command.
Ubuntu, Debian, Mint, Kali:
Fedora, CentOS, RHEL:
SSL/TLS Problems
Especial in self-signed or expired X.509 or SSL/TLS certificates may create problems. The error detail is printed to the terminal. As an example, we will try to access https://www.wikipedia.com and we will get an error like
AND we run following command.
curl SSL/TLS Problems
Allow Insecure Connections
In order to prevent this error and accept an insecure certificate, we need to provide —insecure This will accept all provided certificates without complaining about it.
Allow Insecure Connections
Provide Site HTTPS Certificate Manually
If we do not want to use web site provided certificate and provide sites HTTPS certificate manually we can use -E or —cert option with the certificate file. In this example, we will use a certificate named in wk.cert order to connect https://www.wikipedia.com.
Provide a Certificate Authority Certificate Explicitly
In some cases, we may need to use another certificate chain then internet. Certificate chains provide a trust relationship between hierarchical certificates where the leaf is the site certificate we want to navigate. Certificate Authority is the top certificate which is provided by Certification Authority firms. We can provide another certificate authority like our company local certificate authority with the —cacert option.