Практический урок 2. Авторизация на liveinternet с помощью cURL

Практический урок 2. Авторизация на liveinternet с помощью cURL

Продолжаем писать парсер статистики посещений liveinternet. Если кто-то присоединился к нам только что, то советую начать с первого урока, где мы подключались к сервису без авторизации. Там мы научились получать контент с открытых страничек, которые не защищены паролем. Но, на самом деле, доступ к большинству сайтов закрыт, поэтому пользы от скрипта, который не умеет авторизовываться, очень мало, как вы понимаете. Но не беспокойтесь, сейчас все исправим.



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

function auth( $url ) { $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14"; $ch = curl_init( $url ); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER[‘DOCUMENT_ROOT’].’/cookie.txt’); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, "url=http://mysite.ru&password=pass"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent curl_exec ($ch); curl_close( $ch ); } Как я и упоминал выше, вся суть работы функции сводится к:

  • Отправке POST запроса, с помощью параметров CURLOPT_POST, которомы мы присваиваем значение 1, а также CURLOPT_POSTFIELDS, который содержит передаваемые параметры. Как понять, что нам нужно отправить, я расскажу чуть ниже.
  • Сохранению полученных в ответ cookieв файл. Это делается с помощью параметра CURLOPT_COOKIEJAR, значение которого — путь, куда сохранять файл.
Еще пару слов о значениях, которые мы присваиваем свойствам CURLOPT_POSTFIELDS и CURLOPT_COOKIEJAR. Начнем с первого — CURLOPT_POSTFIELDS. Это параметры, которые мы передаем в форму авторизации. Смотрите, когда мы заполняем форму на сайте, то эти данные отправляются на сервер в POST запросе. Как выглядит форма на liveinternet:



на содержит два поля: адрес сайта и пароль к статистике. Как понять, в каком виде эти данные отправляются на сервер? На самом деле, это иногда бывает достаточно сложно, но не в случае с LI, тут нам достаточно воспользоваться, например, Opera Dragonfly, о которой я уже писал здесь и с ее помощью отследить передаваемые параметры. Открываем страницу с формой авторизации и инструмент Dragonfly. Заполняем поля и нажимаем ОК. Вот что мы увидим:



Нужные нам параметры — url и password. Их и передаем в свойстве CURLOPT_POSTFIELDS.

Затем, что касается CURLOPT_COOKIEJAR, а точнее, данный, которые мы ей присваиваем.

$_SERVER[‘DOCUMENT_ROOT’] Это переменная окружения, которая содержит путь к корню, то есть, в нашем случае, к странице с парсером. Подробнее про глобальный массив $_SERVER[] можете почитать в интернете, на самом деле он очень полезный и содержит множество нужной информации, возможно, позже даже будет отдельный мини урок по этому массиву.

Что же, наша функция авторизации на сервисе статистики liveinternet готова, осталось лишь чуть исправить функцию получения страницы, которую мы использовали в прошлом уроке — get_web_page. Сюда нам нужно добавить всего один дополнительный параметр, чтобы сказать cURL, где лежит файл с cookie, который мы сохранили при авторизации. Делается это так:

curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER[‘DOCUMENT_ROOT’].’/cookie.txt’); Все, теперь перед нашим циклом, который получает странички и парсит их, достаточно авторизоваться:

$result = auth("http://www.liveinternet.ru/stat/mysite.ru/"); Готово, если все сделано правильно, то вы сможете получить статистику ключевых слов с закрытых страниц, конечно, если у вас есть от них пароль 🙂

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

← Парсер статистики Liveinternet | Содержание | Регулярные выражения →