Сейчас мы с вами научимся работать с сессиями и куками, а также выполнять автоматическую авторизацию на сайтах.

Перед изучением данного урока изучите работу с сессиями и куками в PHP.

Отправка куки на сервер

Предположим у вас уже есть название куки и ее значение. В этом случае ее можно отправить на сервер с помощью опции CURLOPT_COOKIE.

Давайте установим куку с именем name и значением 'Дима':

curl_setopt($curl, CURLOPT_COOKIE, 'name=Дима');

Несколько куки разделяются точкой с запятой с последующим пробелом, например, 'name=Дима; login=admin'.

Автоматическая запись и получение кук

Уже имеющиеся куки, это хорошо, но бывает очень редко. Чаще всего нам нужно автоматически принимать и отправлять куки. Это делается с помощью двух опций: CURLOPT_COOKIEFILE командует принимать и сохранять куки в файл, а CURLOPT_COOKIEJAR командует отправлять сохраненные куки на сервер:

curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFileFullPath);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFileFullPath);

Параметром эти опции принимают путь к файлу в который будут писаться куки.

Учтите нюанс: автоматическая отправка куки CURLOPT_COOKIEJAR работает только при включенной опции CURLOPT_COOKIEFILE.

Работа с сессией

Зачем нам нужно уметь работать с сессиями через CURL? Затем, что авторизация на сайтах реализуется с помощью сессий. Соответственно, умея работать с сессиями, можно реализовать автоматическую авторизацию и парсить контент, доступный только авторизованному пользователю.

Сессии в PHP работают на основе кук. При старте сессии в куку пишется переменная sessionid, которая будет иметь что-то вроде такого значения 27za9c2lel3tk4zhhm7lmtzt6bbm3atj. Поэтому, для работы сессий всего лишь необходимо получать и отправлять куки на сайт, что мы и разобрали чуть выше.

Автоматическая авторизация

Допустим, вы хотите парсить страницы, доступные только авторизованному пользователю.

В этом случае алгоритм действий такой: первый запрос отправляется на страницу авторизации сразу с POST данными, при этом автоматически сессионные куки пишутся в файл, а все остальные запросы отправляются на страницы, которые вы хотите парсить.

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

Учтите только, что сессия живет около 20 минут, если не обращаться к сайту. То есть, если после последнего обращения к сайту пройдет больше времени, то нужно авторизовываться заново.

Работа с заголовками

CURLOPT_REFERER //curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');//представляемся CURLOPT_HTTPHEADER Массив устанавливаемых HTTP-заголовков, в формате ['Content-type: text/plain', 'Content-length: 100']