Авторизація на liveinternet за допомогою cURL на PHP





Продовжуємо писати парсер статистики відвідувань liveinternet. Якщо хтось приєднався до нас тільки що, то раджу почати з першого уроку, де ми підключалися до сервісу без авторизації. Там ми навчилися отримувати контент з відкритих сторінок, які не захищені паролем. Але, насправді, доступ до більшості сайтів закритий, тому користі від скрипта, який не вміє авторізовиваться, дуже мало, як ви розумієте. Але не турбуйтеся, зараз все виправимо.

Насправді переробляти доведеться не багато, достатньо лише додати одну функцію, яка буде відправляти POST запит і у відповідь отримає cookie, які ми збережемо в текстовий файл. Все це зробить за нас бібліотека cURL, достатньо лише правильно попросити її про це Авторизація на liveinternet за допомогою cURL на PHP

Давайте спробуємо:

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:

Авторизація на liveinternet за допомогою cURL на PHP

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

Авторизація на liveinternet за допомогою cURL на PHP

Потрібні нам параметри — 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 за допомогою cURL на PHP

У наступному уроці ми розберемо регулярні вирази, щоб ви змогли написати власний парсер для будь-якого сайту або документа. До зустрічі!

lt; Парсер статистики Liveinternet | Зміст | Регулярні вирази gt;