Авторизация на яндексе с помощью CURL

27.03.2013 10:30 Администратор PHP
Печать

Когда то давно мне необходимо было сделать скрипт управления яндекс деньгами. Который бы проверял пришедшие деньги и отправлял деньги по запросам. Данный скрипт я реализовал дня за два, но тогда воспользоваться скриптом на готовом проекте так и не удалось так как проект решили по определенным причинам закрыть. Сейчас мне понадобидлось сделать авторизацию на яндексе и я вспомнил про тот скрипт. Вытащив оттуда необходимую функцию я запстил код. Авторизация на яндексе не прошла. После изучения проблемы я понял что яндекс несколько изменил алгоритм авторизации на яндексе. Пришлось переписывать срипт.

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

Как и всегда, в скрипте ничего особо сложного и внеземного нету. Все реально и просто если знать и уметь то что вы делаете. Сообственно сам скрипт в студию:

$url = "http://passport.yandex.ru/passport?mode=auth";
$login = 'werdun'; //Логин
$passwd = '*#*4342*4$%'; //Пароль
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
$idkey = '52413643613332H_6cSGYX'; //Фиг знает что

function auth($url){
global $user_cookie_file, $idkey, $login, $passwd;
$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);
curl_setopt($ch, CURLOPT_POSTFIELDS, "from=passport&idkey=$idkey&display=page&login=$login&passwd=$passwd");
$html = curl_exec($ch);
if(!$html){
$error = curl_error($ch).'('.curl_errno($ch).')';
return "Ошибка:".$error;
}
else{
return $html;
}
curl_close($ch);
}
echo auth($url);

 Вот такой вот небольшой скрипт. В случае если вы заменили данные на свои (я имею ввиду переменную login и passwd, дле тех кто думает что я забыл стереть свои данные оговорюсь сразу в переменных ложных дынные) и яндекс не изменил алгоритм авторизации то перед вам откроется страница вашего яндекс паспорта. Как дальше использовать данный скрипт решайте сами, но спешу сообщить о том что не так уж и просто будет ходить скриптом по яндексу и собирать, отправлять нужные данные.

Вот вроде бы и все, что добавить - незнаю, спросите - расскажу.