Попросили меня (за практически спасибо) написать модуль для авторизации и постинга постов на ярушку (ya.ru).
Быстренько накидал через свои компоненты, а что сложного-то? GET my.ya.ru далее получаем форму для авторизации через passport.yandex.ru заполняем поля и далее через n редиректов в идеале попадаем на my.ya.ru уже авторизованными.
В чем сложность №1. Понятно что авторизация не совсем обычная (не через тривиальные куки) - и понятно что яндекс(домен) свои куки не отдает даже домену ya.ru.
Первый и быстро написаный код не работал - вернее он явно авторизовал на passport.yandex.ru (видно было по выдаче), но на my.ya.ru был редирект без кук и сессий.
Ломал над этим голову долго, причем этот код замечательно работал для mail.yandex.ru и webmaster.yandex.ru - на это и понятно - это один и тот-же домен.
Перебрал все, установил сниффер - вижу что при первичной загрузке my.ya.ru в браузере срабатывает редирерт, на my.ya.ru/pass где получают куки и возвращают опять же редиректом на my.ya.ru.
С точки зрения пользователя ничего не происходит он вбивает my.ya.ru и видит страницу авторизации.
Но в моем случае этого не было! Было просто загрузка формы логина, без редиректа и без принятия кук.
Оказалось что я не передавал в хедере HTTP тэг accept = html/text и прочее.
И именно из-за этого my.ya.ru не делал редирект и не подсовывал кук.
Как только начал указывать - все получилось.
В кратце:
GET my.ya.ru -> my.ya.ru/pass -> my.ya.ru
Заполняем форму
POST passport.ya.ru -> ... -> pass.yandex.ru -> my.ya.ru -> pass.yandex.ru -> my.ya.ru
Мы авторизованы! (В предпоследнем ya.ru передается сессия, а в последнем уже авторизованные куки для ya.ru)
Подписаться на:
Комментарии к сообщению (Atom)
Так а где сама программа? :)
ОтветитьУдалитьСама программка досталась автору и заказчику :)
ОтветитьУдалитьА вообще если есть интерес, то во сколько бы оценеили программку, которая может
а) заполнять блоги на ya.ru и LJ заданными постами (с тэгами)
б) в LJ френдить кучу народу (с поиском по интересам)
в) возможностью автоматического комментирования своих блогов, своими другими аккаунтами
г) с прокси само-собой (но только HTTP)
... и многое другое
?
Сложно сказать :) Не занимался оцениванием.
ОтветитьУдалитьСтараюсь всегда пользоваться бесплатными программами :)
А я как бы из другого лагеря :) программист. Получаю деньги за создание платных программ :)
ОтветитьУдалитьДа, я понял :)
ОтветитьУдалитьСпасибо!