Авторизация в Яндекс-Кошельке через cURL

Статус
В этой теме нельзя размещать новые ответы.

CRL

Новичок
Авторизация в Яндекс-Кошельке через cURL

Имеется скрипт, который должен периодически заходить в мой Яндекс-Кошелек и проверять его на наличие новых переводов в мой адрес.

PHP:
$cookie_box = tempnam('/tmp/serv/', 'cookie');

 // получаю куки
$common_yandex = curl_init('https://passport.yandex.ru/passport?mode=auth&msg=money');
curl_setopt($common_yandex, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($common_yandex, CURLOPT_POST, 1);
curl_setopt($common_yandex, CURLOPT_POSTFIELDS,'login=User&passwd=SimplePass');
curl_setopt($common_yandex, CURLOPT_HEADER, 1);
curl_setopt($common_yandex, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($common_yandex, CURLOPT_COOKIEJAR, $cookie_box);
curl_setopt($common_yandex, CURLOPT_FOLLOWLOCAION, 1);
$yandex_tmp = curl_exec($common_yandex);

// использую полученные куки в запросе
$common_yandex = curl_init('https://passport.yandex.ru/passport?mode=auth&msg=money');
curl_setopt($common_yandex, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($common_yandex, CURLOPT_POST, 1);
curl_setopt($common_yandex, CURLOPT_POSTFIELDS,'login=User&passwd=SimplePass');
curl_setopt($common_yandex, CURLOPT_HEADER, 1);
curl_setopt($common_yandex, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($common_yandex, CURLOPT_COOKIEFILE, $cookie_box);
curl_setopt($common_yandex, CURLOPT_FOLLOWLOCAION, 1);
print $yandex_tmp = curl_exec($common_yandex);

print "<pre>";
print_r(curl_getinfo($common_yandex));
print "</pre>";
print "Номер ошибки cURL:" .curl_errno($common_yandex)."<br>";
print "Текст сообщения об ошибке:" . curl_error($common_yandex)."<br>";

curl_close($common_yandex);
unlink($cookie_box);
Во временный файл куки прописываются, но по результатам запроса страница-информатор яндекса говорит мне, что "Произошла ошибка. Чтобы авторизация на Яндексе проходила корректно, необходимо включить куки (Cookies) в настройках вашего браузера." Т.е., он не их не видит.

Пожалуйста, подскажите в чем тут прикол.
 

Ermitazh

Новичок
попробуй использовать абсолютные пути

-~{}~ 06.12.07 13:22:

$cookie_box = tempnam('/tmp/serv/', 'cookie');
это не абсолютный путь...
 

CRL

Новичок
Автор оригинала: Ermitazh
попробуй использовать абсолютные пути

-~{}~ 06.12.07 13:22:

$cookie_box = tempnam('/tmp/serv/', 'cookie');
это не абсолютный путь...
Это абсолютный путь.
ОС ALTLinux 4.0
Более того, содержимое временных файлов проверял самолично при закомментированной функции unlink().
 

quad_4

Новичок
попробуй в обоих случаях использовать CURLOPT_COOKIEJAR
и CURLOPT_COOKIEFILE


ps CURLOPT_COOKIEJAR это какой-то устаревший параметр
в мануале его уже нет http://ru2.php.net/curl_setopt
 

Ermitazh

Новичок
curl_setopt ($common_yandex, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

попробуй добавить и это ещё :)
 

CRL

Новичок
Автор оригинала: quad_4
попробуй в обоих случаях использовать CURLOPT_COOKIEJAR
и CURLOPT_COOKIEFILE


ps CURLOPT_COOKIEJAR это какой-то устаревший параметр
в мануале его уже нет http://ru2.php.net/curl_setopt
На счет обоих случаев - первый запрос делается для того, чтобы получить куки - в рамках этого запроса я не могу использовать опцию CURLOPT_COOKIEFILE, т.к., она будет обращаться к файлу, которого еще нет. Поэтому я и разделил запрос на 2 этапа - на первом этапе я получаю куки, на втором использую их в повторном запросе к серверу.
 

CRL

Новичок
Автор оригинала: Апокалипсис
а Яндекс разве разрешает так спокойно входить в него курлом?
Честно говоря, узнать это мне не удалось - супорт у нах какой-то медленный, но публичный протокол обмена для физических лиц отсутствует точно.

-~{}~ 06.12.07 13:47:

Автор оригинала: Ermitazh
curl_setopt ($common_yandex, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

попробуй добавить и это ещё :)
Эта мера не дала ничего.
Да если разобраться, и не могла дать - не важно, под кого РНР косит, обращаясь с запросом. Проблема же не в опознавании браузера, а в прочтени сервером установленых куки, а я ему эти самые куки и без юзерагента подсовываю.
 

cDLEON

Онанист РНРСlub
Попробуйте вручную отправить эти куки.
CURLOPT_COOKIE помоему.
 

CRL

Новичок
Автор оригинала: cDLEON
Попробуйте вручную отправить эти куки.
CURLOPT_COOKIE помоему.
Безуспешно. То же самое, что и при выдергивании куков из файла - да и какая - по сути - разница, вручную я их ввел или вынул откуда-то: сущность session ID не меняется - пока я нахожусь в рамках одного сеанса, они должны срабатывать.

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

Апокалипсис

тех дир matras.ru
Давайте гадать не будем - а CRL дождись ответа саппорта?
Мне саппорт Яндекса отвечал достаточно оперативно - говорят что в течении 24 часов, а отвечали в течении 2х часов даже в праздничные и выходные дни.
 

CRL

Новичок
Автор оригинала: Апокалипсис
Давайте гадать не будем - а CRL дождись ответа саппорта?
Мне саппорт Яндекса отвечал достаточно оперативно - говорят что в течении 24 часов, а отвечали в течении 2х часов даже в праздничные и выходные дни.
По поводу того, что протокол обмена доступен только диллерам - для физлиц с их банальными желаниями его просто нет - это абсолютно точно, об этом есть сведения и на хелпе Яндекса. Но вот что касается входа курлом - действительно, остается только ждать.
 

cDLEON

Онанист РНРСlub
Эм....А какая нафиг разница? Если на яндексе нет каптчи, то авторизоваться можно в любом случае.
да и какая - по сути - разница, вручную я их ввел или вынул откуда-то: сущность session ID не меняется - пока я нахожусь в рамках одного сеанса, они должны срабатывать.
Ну...У меня когда то очень давно тоже куки не пахали через файл...Да и не нужно это...Если данные нужны всего на один запрос...
ЗЫ. Ты видил, что у тебя и в первом, и во втором случае одинаковые УРЛ + везде присутствует пост ?
 

phpdev2007

Новичок
CRL
Поставить фильтр для ie по заголовкам, и посмотреть что шлет, и как шлет браузер при аутентификации сделать также в программе.
Возможно Curl и блокируется яндексом, по тому что нет некоторых заголовков и так дальше....
Прицеп простой прога должна слать тоже что и браузер, все, есть много библиотек на php которые более гибки чем curl, но не такие быстрые.
 

Фанат

oncle terrible
Команда форума
на этой радужной ноте и прикроем тему.
действительно - пусть суппорт отвечает
 

Alexandre

PHPПенсионер
я делал вход на один из порталов,
1) использовал и парсил куки - сам
2) может еще доп. исп-ться JScript Autorization

-~{}~ 06.12.07 17:05:

Возможно Curl и блокируется яндексом, по тому что нет некоторых заголовков
+1,
смотри что шлет брауэер и что шлет curl
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху