В прошлом посте мы делали POST запросы, а сегодня мы будем авторизироваться в Яндексе. Помимо отправки POST формы с логином и паролем, нам необходимо будет также авторизироваться, тоесть сохранить нужные куки и отдавать их в последующих запросах.
Поставим себе следующую задачу – получать содержимое панели вебмастера с помощью PHP.
Все знают, как при помощи PHP получить содержание той или иной страницы. Но в нашей задаче есть одна загвоздка – чтобы получить страницу с сайтами определенного аккаунта, нам нужно войти под этим аккаунтом. Для этого необходимо отправить POST форму отсюда. Внимательно изучаем все поля этой формы, нам необходимо отправить Яндексу все эти поля. В ответ Яндекс даст нам куку, которую мы должны сохранить и отдавать обратно Яндексу при каждом следующем посещении страницы с инфой, доступной только авторизированным пользователям.
Вот, собственно, функция авторизации:
С авторизацией все понятно – отправили логин, пароль и прочую информацию, сохранили отданные Яндексом куки. Теперь нам необходима функция, которая будет отдавать сохраненные куки Яндексу и получать ответ, тоесть ходить по защищенным страницам как добропорядочный живой юзер с настоящего добропорядочного браузера.
Вот эта функция:
Надо также сказать, что авторизироваться достаточно один раз, а потом в течение 2х недель просто юзать функцию browser();
Думаю, вы понимаете, что описанным способом можно авторизироваться не только на Яндексе, а вообще где угодно.
Удачи.
Поставим себе следующую задачу – получать содержимое панели вебмастера с помощью PHP.
Все знают, как при помощи PHP получить содержание той или иной страницы. Но в нашей задаче есть одна загвоздка – чтобы получить страницу с сайтами определенного аккаунта, нам нужно войти под этим аккаунтом. Для этого необходимо отправить POST форму отсюда. Внимательно изучаем все поля этой формы, нам необходимо отправить Яндексу все эти поля. В ответ Яндекс даст нам куку, которую мы должны сохранить и отдавать обратно Яндексу при каждом следующем посещении страницы с инфой, доступной только авторизированным пользователям.
Вот, собственно, функция авторизации:
HTML
Текст
- php
- $url = "http://passport.yandex.ru/passport?mode=auth"; //УРЛ, куда отправлять данные
- /*
- Переменные, которые мы будет отправлять Яндексу в виде POST запроса:
- */
- $login = 'test'; //Логин
- $passwd = 'test'; //Пароль
- $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; //Полный путь до файла, где будем хранить куки
- $idkey = '3121235564020nVDfxvth2'; //Хрен знает что
- $retpath = 'http://webmaster.yandex.ru/'; //Откуда мы пришли на страницу авторизации
- $timestamp = ''; //Хрен знает что
- $twoweeks = 'yes'; //Две недели какие-то
- $In = 'Войти'; //Кнопка входа
- /*
- Функция:
- */
- function auth($url) {
- global $user_cookie_file, $idkey, $retpath, $timestamp, $login, $passwd, $twoweeks, $In; // Получаем все POST данные
- /*
- Небольшая прелюдия с инифиализацией cURL и прочей шулухой
- */
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_URL,$url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
- curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); //Куки раз
- curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); //Куки два
- curl_setopt($ch, CURLOPT_POST,1); //Будем отправлять POST запрос
- /*
- Формируем и отправляем тот самый POST запрос.
- Как видите, это простая строка, мало чем отличающаяся от GET.
- */
- curl_setopt($ch, CURLOPT_POSTFIELDS,"idkey=$idkey&retpath=$retpath×tamp=$timestamp&login=$login&passwd=$passwd&twoweeks=$twoweeks&In=$In");
- $html = curl_exec($ch);
- curl_close($ch);
- return $html; //Возвращаем ответ Яндекса
- }
- auth($url); // Авторизируемся.
- ?>
Вот эта функция:
HTML
Текст
- php
- function browser($url) {
- $user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'; //Получаем сохраненный после авторизации файл с куками.
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_URL,$url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
- curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); //Подставляем куки раз
- curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); //Подставляем куки два
- $html = curl_exec($ch);
- curl_close($ch);
- return $html; //Возвращаем ответ
- }
- echo browser('http://webmaster.yandex.ru/'); //Безпрепятственно выводим заветную инфу
- ?>
Думаю, вы понимаете, что описанным способом можно авторизироваться не только на Яндексе, а вообще где угодно.
Удачи.