SeoLik

19 мая 2020, 21:48
242

PHP поддерживает libcurl, библиотеку, созданную Daniel Stenberg, которая даёт возможность соединяться с серверами различных типов и по разным протоколам.
libCurl в настоящее время поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap. libCurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это можно сделать также РНР-расширением ftp), загрузку на основе форм HTTP, прокси, куки и аутентификацию user+password.

 

PHP cURL - GET запрос

$timeout = 20;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

echo $data; // вывод страницы https://ma-nu.ru

 

PHP cURL - POST запрос

// массив
$post_array = array(
	'name'   => 'SeoLik',
	'password' => '01234567',
	'key' => '1',
	'any' => 'test',
);		
 

$timeout = 20;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array); 
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$dat a= curl_exec($ch);
curl_close($ch);	
 
echo $data;

 

PHP cURL - PUT запрос

$timeout = 30;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

echo $data;

 

PHP cURL - Отправка файлов на сервер. Осуществляем методом POST

$timeout = 30;
$url = 'https://ma-nu.ru';

// CURLFile curl_file_create ( string $filename [, string $mimetype [, string $postname ]] )

$curl_file = curl_file_create($_SERVER['DOCUMENT_ROOT'].'/image.jpg', 'image/jpeg' , 'post_name');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => $curl_file));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

echo $data;

 

PHP cURL - Скачивание результата в файл

$timeout = 30;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

// записываем результат в файл
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/ma-nu.html', $data);

 

PHP cURL - Работа с cookie

// Чтобы CURL сохранял куки

$timeout = 20;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);



// Чтобы CURL передал куки

$timeout = 20;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIE, 'name1=value1; name2=value2'); // если несколько значений, то обязательно между ними ; с пробелом
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

 

PHP cURL - Имитация браузера

Некоторые сайты блокируют обращения к своим страницам посредством cURL (парсинга) . Чтобы обойти эти ограничения нужно имитировать браузер:

// заголовки

$headers = array(
	'cache-control: no-store, no-cache, must-revalidate',
	'upgrade-insecure-requests: 1',
	'user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
	'sec-fetch-user: ?1',
	'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
	'pragma: no-cache',
	'sec-fetch-site: none',
	'sec-fetch-mode: navigate',
	'accept-encoding: gzip, deflate, br',
	'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,sr;q=0.6',
);
 

$timeout = 50;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
curl_setopt($ch, CURLOPT_USERAGENT, 'Рандомный Юзер Агент');
curl_setopt($ch, CURLOPT_REFERER, 'https://site.com'); // Содержимое заголовка Referer:, который будет использован в HTTP-запросе. 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
$html = curl_exec($ch);
curl_close($ch);
 
echo $html;

 

PHP cURL - Использование прокси

// Данные прокси
$ip = '000.000.000.000'; // ip
$port = 1050; // порт
$login = 'test'; // логин
$password = 'pass'; // пароль



$timeout = 30;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_PROXY, $ip.':'.$port); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $login.':'.$password);

curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

echo $data; // вывод страницы https://ma-nu.ru

 

PHP cURL - HTTP авторизация

$timeout = 20;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_USERPWD, 'login:password');

curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
curl_close($ch);

echo $data;

 

PHP cURL - HTTP код ответа сервера и дополнительная информация

$timeout = 20;
$url = 'https://ma-nu.ru';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Seo Bot'); // Можно указать заголовок USERAGENT
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // Максимально позволенное количество секунд для выполнения cURL-функций.
curl_setopt($ch, CURLOPT_HEADER, false);  // TRUE для включения заголовков в вывод. 
$data = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$cURL_info = curl_getinfo($ch);

curl_close($ch);

echo $data; // вывод страницы https://ma-nu.ru

echo $http_code; // код ответа сервера, например 200, 301, 403 и тд.

print_r($cURL_info); // все данные ответа