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