Миру - мир. А Вам - пломбир!
Доброго времени суток!

В наличии php 5.4, apache 2.4, мой личный аккаунт на hh.ru.

Задача: получить доступ к страницам hh.ru из-под авторизованного пользователя. Никакого взлома или чужих аккаунтов не нужны – авторизация под своим собственным аккаунтом.

Пробовал решить так:
Смотреть код

Однако, вижу страницу для авторизации.
Доступ к кукам есть:
$ sudo chmod 1777 cookie.txt
В них есть несколько токенов и строка с "hhrole anonymous", что не ест гут.

В какую сторону копать? Почему cURL не может авторизоваться и как это исправить?

Спасибо.

@темы: PHP

Комментарии
27.03.2014 в 14:35

alhames.ru
Если просто получить доступ - куки можно скопировать из браузера, по идеи.
Или нужно именно авторизацию делать?
Я через файлик когда-то давно пытался куки сохранять - но почему-то счел это неудобным.
Вообщем, если до вечера проблема не решится - гляну что можно сделать )
27.03.2014 в 14:43

Миру - мир. А Вам - пломбир!
alhames, копипаст печенек не работает для конкретно hh.ru, увы. Там защита посложнее. Иначе бы и этот скрипт справился (:
Так как какие-то хэши в куках меняются, то нужно делать авторизацию. Плюс, доступ нужен к странице, доступа к которой гостю нет.

Я рассмотрел hh.ru из инкогнито-вкладки хрома и примерно представил алгоритм:
1. При любом посещении сайта ставится печенька с hhtoken и hhuid (в дальнейшем используются везде, и, вроде бы, в течении сессии не меняются)
2. Теперь можно авторизоваться. Шлю на /login.do пост с нужными данными
3. Происходит непонятный редирект
4. Около 3-5 перекидываний разными хэшами клиента с сервером

По шагам 3 и 4 курл, вроде, ходит, но, видимо, не так как нужно или шлёт невалидные данные – и авторизации не происходит. Этот момент я сам не понимаю поэтому и спросил сообщество.
Можно, конечно, делать 100500 редиректов руками: формировать и слать заголовки вручную, руками их парсить и т.п. Такой пошаговый реверсинжениринг. Но хотелось бы обойтись малой кровью и благами автоматизации (:
30.03.2014 в 19:21

alhames.ru
Ну, вообщем, что я вижу:
у них есть отдельный домен для кроссдоменной авторизации (наверное, иначе зачем он им) - hhid.ru
На нем ставятся id и token, как-то валидируюся, перебрасывают на hh.ru, проставляются там, потом меня почему-то опять кинуло на hhid.ru, а потом назад на форму авторизации без пометок об ошибке.
Видимо мы что-то упустили..
07.04.2014 в 11:15

Не знаю ,как это на hh, но обычно для авторизации используется протокол hhtps. Может курл по http ломится и его посылают?
07.04.2014 в 11:23

alhames.ru
kyokata, не, curl поддерживает https - с этим все норм.
07.04.2014 в 11:27

Миру - мир. А Вам - пломбир!
kyokata, отнюдь (: Увы, парсер дайров даже с pre-тегом съел ссылки. Если посмотрите блок с комментом "Do auth", то увидите, что ссылка в CURLOPT_URL содержит именно https-ссылку. cURL поддерживает ssl из коробки и с учётом CURLOPT_FOLLOWLOCATION умеет автоматически переходить с http на https и обратно – по желанию сервера (точнее, по заголовку location в ответе от сервера).
07.04.2014 в 11:36

Нда, парсер весьма парсер.
action, кстати, там не "Войти в личный кабинет", а просто "Войти". У меня, по крайней мере.
07.04.2014 в 11:49

Миру - мир. А Вам - пломбир!
Возможно, смотря откуда прийти к кнопке авторизации? Я использую данные из Network (Chrome DevTools) в приватном режиме и с отрубленным js.
В скрипте поменял на "Войти", а затем вообще убрал этот параметр – результаты не изменились ):

07.04.2014 в 11:52

ну вот.... теперь мне эта задачка покоя не даёт... мммм.... Нет, надо работать, а вечером, если хорошо поработаю, можно разрешить себе заняться ею %)
07.04.2014 в 11:57

Миру - мир. А Вам - пломбир!
Был бы благодарен за любые возможные идеи! Сам я здесь совсем застрял ):
Пробовал обрабатывать заголовки вручную – запоролся на втором обмене данными (после hh.ru/login.do) ибо не понимаю откуда берётся дико длинный хэш "memo".
02.02.2016 в 17:59

Привет.
Вы решили проблему авторизации на hh? Если да, то подскажите пожалуйста куда смотреть?
02.02.2016 в 21:59

Миру - мир. А Вам - пломбир!
kuznetsovsite, сейчас я бы рекомендовал смотреть в сторону hh.ru API и реализации сервиса/провайдера для какой-нибудь популярной клиентской OAuth2 библиотеки.