Основы парсинга на PHP #4: Работа с Curl — PROG-TIME

Основы парсинга на PHP #4: Работа с Curl

13.07.2023
Содержание:

Curl (Client URL) — это мощный инструмент для работы с сетевыми запросами в PHP. Он позволяет отправлять HTTP-запросы, получать ответы от сервера, устанавливать заголовки, работать с куками и многое другое. В этой статье мы рассмотрим основы работы с Curl в PHP и предоставим примеры кода для различных сценариев.

Установка и проверка наличия Curl в PHP

Для использования Curl в PHP необходимо убедиться, что соответствующее расширение Curl установлено и активировано. Вы можете проверить наличие расширения, добавив следующий код в свой скрипт:

// Проверка наличия расширения Curl
if (!function_exists('curl_init')) {
    die("Расширение Curl не установлено");
}

Отправка GET-запроса

Простой Curl запрос имеет функцию curl_init() для инициализации запроса, curl_setopt() для указание дополнительных параметров и правил, curl_exec() для отправки запроса и curl_close() для закрытия запроса.

// Инициализация Curl-сессии
$curl = curl_init();

// Установка URL-адреса и параметров запроса
curl_setopt($curl, CURLOPT_URL, 'https://prog-time.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// Выполнение запроса и получение ответа
$response = curl_exec($curl);

// Закрытие Curl-сессии
curl_close($curl);

// Обработка полученного ответа
echo $response;

Отправка POST-запроса

Для отправки POST запроса вам необходимо передать 2 настройки с помощью функции curl_setopt():

  • CURLOPT_POST с указанием значение true. Данный параметр указывает, что мы отправляем запрос методом POST
  • CURLOPT_POSTFIELDS с указанием массива данных которые необходимо передать
// Инициализация Curl-сессии
$curl = curl_init();

// Установка URL-адреса и других параметров запроса
curl_setopt($curl, CURLOPT_URL, 'https://prog-time.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);

// Установка данных для отправки
$data = [
    'username' => 'john',
    'password' => 'secret'
];
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

// Выполнение запроса и получение ответа
$response = curl_exec($curl);

// Закрытие Curl-сессии
curl_close($curl);

// Обработка полученного ответа
echo $response;

Установка заголовков запроса

Дополнительные заголовки передаётся в массиве и указываются в качестве значения для параметра CURLOPT_HTTPHEADER.

// Инициализация Curl-сессии
$curl = curl_init();

// Установка URL-адреса и других параметров запроса
curl_setopt($curl, CURLOPT_URL, 'https://prog-time.ru');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

// Установка заголовков запроса
$headers = [
    'Content-Type: application/json',
    'Authorization: Bearer token'
];
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

// Выполнение запроса и получение ответа
$response = curl_exec($curl);

// Закрытие Curl-сессии
curl_close($curl);

// Обработка полученного ответа
echo $response;

Обработка ответа

После выполнения Curl-запроса можно получить информацию о запросе и ответе, а также обработать ответ в соответствии с требованиями вашего приложения. Например, можно получить код состояния HTTP, заголовки ответа и тело ответа:

// Выполнение запроса и получение ответа
$response = curl_exec($curl);

// Проверка наличия ошибок
if (curl_errno($curl)) {
    $error = curl_error($curl);
    die("Ошибка Curl: " . $error);
}

// Получение кода состояния HTTP
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

// Получение заголовков ответа
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $headerSize);

// Получение тела ответа
$body = substr($response, $headerSize);

// Закрытие Curl-сессии
curl_close($curl);

// Обработка полученного ответа
echo "Код состояния: " . $httpCode . "\n";
echo "Заголовки: " . $headers . "\n";
echo "Тело ответа: " . $body;

Работа с SSL-соединениями

Curl также поддерживает работу с SSL-соединениями для безопасной передачи данных по HTTPS.

Для этого можно использовать следующую опцию:

// Включение проверки SSL-сертификата
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);

Установка опции CURLOPT_SSL_VERIFYPEER в значение true позволяет проверять SSL-сертификат сервера.

Больше информации смотрите в документации — https://www.php.net/manual/ru/function.curl-setopt.php

Curl предоставляет мощные возможности для работы с сетевыми запросами в PHP. В этой статье мы рассмотрели основы работы с Curl, включая отправку GET- и POST-запросов, установку заголовков и обработку ответа. Используйте эти примеры кода в своих проектах, чтобы осуществлять сетевые запросы и взаимодействовать с удаленными серверами с помощью Curl в PHP.

Материалы курса