-
-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add user support #22
Comments
Да, авторизации действительно не хватает для комментарией и поиска по своей ленте |
Login habr:
Мы видим, что он генерирует ссылку с параметрами state, consumer. Нам нужен state
Получаем респонс со следующим содержимым:
Если перейти по этой ссылке, то возвращается html документ:
Ну вот мы получили токен. token=a122f063b00278fcd27f482616316513 |
Комментарии к посту POST https://habr.com/json/comment/ HTTP/1.1
Ответ в виде html файла с JavaScript скриптами |
Но, допустим, я хочу изменить свою специальность - захожу в настройки аккаунта https://habr.com/ru/auth/settings/profile/ POST https://habr.com/json/settings/profile/ HTTP/1.1
По сути, всё работает через куки |
Я пользуюсь endpoint'ом Спасибо, что подсказали! |
А как его использовать то? Ни token, ни sign параметры нигде не появляются на клиенте в запросах. Есть PHPSESSID, habrsession_id, hsec_id и все они не похожи на те значения, которые выдаёт |
Да, этот токен не очень важен. Прости за мусорное расследование, но я нашел новое. Итак, авторизация.
Сервисные данные браузера
Тело POST запроса
Ответ сервера:
Теперь на основе этих данных попробуем получить данные обо мне
Сервисные данные браузера
Ответ сервера:
|
Вот здесь описан api Хабра https://github.com/Perkovec/HabrApi/blob/96413ad10c28b5b4432aefb82fc70b63b519c3b2/README.md |
Вот это уже круто! Я же нашёл значения csrf-token, _csrf и connect_sid на фронте:
Можно просить пользователей заходить в DevTools и копировать значения в приложение, но мне ой как кажется, что это дико неудобно. Ваш метод гораздо легче. Единственный вопрос - как брать client_id? Я нашёл, что UPD: смог получить те же данные из |
csrf-token берется отсюда. Вот...
Найти строку
Мне кажется, client_id нужно получить, регистрируя своё приложение, так ведь? |
От |
Ну раз это полулегально, то пусть client_id=85cab69095196f3.89453480 будет от HabraChan. |
Уже написал, жду ответа. Есть на примете ещё доки по API хабра для приложений? Потому что одних комментариев будет мало) К тому же, нигде эти пути не найти ни на мобильном, ни на десктопном сайте. |
Думаю, тебе скинут документацию по api хабра. |
Ожидаемо. |
О, привет всем! Если еще актуально, офк |
Это победа! Мне удалось сделать авторизацию через сайт мобильного API (habr.com/kek/v1/auth)! @Makentoshe , сегодня выложу код на гитхаб, если надо. Тогда ты сможешь отказаться от поддержки старой версии API. Единственный минус - все запросы для авторизации нужно делать с сервера (в том числе и получать csrf токен) |
@jarvis394 Красиво, спасибо. У меня тоже кое какие наработки есть +- рабочие, но на андройд они ложатся не нативно, а через WebView(встроенный браузер с движком), т.к. для нативной реализации нужно проходить гуглокапчу, а без доступа к приватному ключу капчи нативно это по нормальному не сделать (через гугол либу для этого). |
Т.е. гкапчу, такую же, как на сайте account.habr.com, можно сделать (скорее скопировать) в браузере? Когда я делал авторизацию, я вообще про капчу забыл :p Когда при тестах вылезала капча, я логинился на основном сайте и капча уходила. |
@jarvis394 ага, она только в браузере и работает. Юзается v2reCAPTCHA. Можно с Fiddler'ом или Wireshark'ом побуриться, я там находил и апи ключ и прочее, как это у них работает на фронте. Я особо не web-developer, поэтому сильно сказать не могу, что там конкретно есть, и насколько полезно Для андройда там нужно свой ключ отдельный генерировать и к тому же при генерации указывать application package приложения, ну т.е. вообще не вариант. Я в андройде генерировал уже готовенькую ссылку со всеми свистелками, показывал на webview дефолтную форму логина, а потом перехватывал response и вытаскивал нужные куки |
https://github.com/jarvis394/habra-auth/blob/main/src/index.ts |
Ну так то да, если в пароле не ошибаться, то капча вылезать не будет и все будет ок. Если хоть раз ошибиться, дальше сервер будет требовать g-recaptcha-response. |
Need a following codes for sending user request:
Create a page where user can paste these values from a script, that is being executed on the main
habr
page.The text was updated successfully, but these errors were encountered: