Авторизация в Яндекс

Тема в разделе "PHP", создана пользователем krobol, 15 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    Пишу скрипт для получения информации из Яндекс.Вебмастер.
    Никак не удаётся корректно авторизоваться.

    С Яндексом общаюсь с помощью библиотеки Snoopy

    Прохожу авторизацию в Яндекс такими шагами:

    шаг 1:
    passport.yandex.ru/passport?mode=auth&retpath=http://webmaster.yandex.ru
    получаю idkey, куки и ссылку на авторизацию для шага2

    шаг2:
    passport.yandex.ru/passport?mode=auth
    сюда отправляю idkey, логин, пароль, timestamp
    и получаю /Location: (.*?)$/m - линк куда редиректится

    шаг2->редирект1:
    passport-ckicheck.yandex.ru
    здесь получаю /Location: (.*?)$/m - линк куда редиректится дальше

    шаг2->редирект2:
    pass.yandex.ru
    ...и вот тут у меня ничего не получается.
    На этой странице выдаётся редирект на конечную страницу вида:
    webmaster.yandex.ru/?ncrnd=9518
    + выдаётся куки Session_id
    Так происходит, если логинюсь и смотрю HttpFox - лог того, что отправляется/получается от сервера.
    А скрипт получает пустую страницу :confused: Почему, никак не могу понять???

    Если вместо шаг2->редирект2 (pass.yandex.ru) сразу запрашивать
    webmaster.yandex.ru без ncrnd и без Session_id, выданной страницей pass.yandex.ru, то всё нормально логинится. Можно на этом и остановиться, но что то тут не так. Шаг pass.yandex.ru оказывается пропущен.

    Помогите разобраться, почему я не могу скриптом получить ответ от pass.yandex.ru, а получаю пустую страницу?
     
    FidaSa нравится это.
  2. Abliganto

    Abliganto Постоялец

    Регистр.:
    30 ноя 2009
    Сообщения:
    111
    Симпатии:
    46
    Авторизация проходит через https, возможно из-за этого у Вас пустая страница.

    Анализируйте заголовки. Советую использовать Fiddler, он же может работать через https со своим сертификатом и использоваться в качестве прокси-сервера для Вашего скрипта.
     
  3. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    Сделал с помощью curl с применением CURLOPT_FOLLOWLOCATION=TRUE

    Всё работает нормально.

    Видимо, проблема в Snoopy. Жаль, придётся переписывать скрипт со Snoopy на curl.
     
Статус темы:
Закрыта.