Перейти к содержанию

▍Как без ошибок получить страницу через CURL в PHP

$url = "https://example.ru/";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); //TRUE для следования любому заголовку "Location: ", отправленному сервером в своем ответе (учтите, что это происходит рекурсивно, PHP будет следовать за всеми посылаемыми заголовками "Location: ", за исключением случая, когда установлена константа CURLOPT_MAXREDIRS).  
$error = curl_error($curl);

$response_string = curl_exec($curl);
print_r(curl_getinfo($curl, CURLINFO_REDIRECT_COUNT)); // Количество редиректов. Если 0, значит не было. Если не 0, то выведет количество редиректов.

print_r(curl_getinfo($curl, CURLINFO_EFFECTIVE_URL)); // Получаем url перенаправления
curl_close($curl);

print_r($response_string); // Выводим страницу. 

Вывести информацию о файле

curl -I https://daffin.ru/images/bg.jpg
HTTP/2 200 
accept-ranges: bytes
cache-control: max-age=2592000
content-type: image/jpeg
date: Thu, 10 Nov 2022 13:06:59 GMT
etag: "635e65d6-66aef"
expires: Sat, 10 Dec 2022 13:06:59 GMT
last-modified: Sun, 30 Oct 2022 11:53:58 GMT
server: Blackbox
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-powered-by: Blackbox
x-xss-protection: 1; mode=block
content-length: 420591

Сохранить с именем из URL (bg.jpg)

curl https://daffin.ru/images/bg.jpg -O

Проверка на наличие текста в URL (вариант IF-THEN)

curl -s google.com |fgrep -ci "301 moved" > /dev/null && echo "True" || echo "False"

Смотрим заголовки CORS

curl -v --request OPTIONS 'https://pihole.example.ru/admin/api.php' -H 'Origin: https://dashboard.example.ru' -H 'Access-Control-Request-Method: GET'
К началу