Skip to content
This repository has been archived by the owner on May 15, 2020. It is now read-only.

mickxolotl/aura-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aura-api

Python API для Яндекс.Аура

В разработке

Установка

Требуется Python 3, тестировалось на Python 3.7

  • Установка с помощью pip
pip3 install aura-api
  • Установка из исходников
git clone https://github.com/mickxolotl/aura-api.git
cd aura-api
python3 setup.py install

Использование

Примеры использования можно найти в каталоге examples

import aura

api = aura.API(aura.AuthSession('LOGIN', 'PASSWORD'))

Заменив строки на свои логин и пароль, выполните код. Теперь можно обращаться к методам АПИ ауры. Например, обращения к методу /api/user/interests/ или /api/post/info/<post_id>/ выполняются соответственно

api.user.interests()
# и
api.post.info[post_id]()

Параметры запроса можно указать в аргументах

api.post.edit[post_id](text='Отредактированный текст', background=19)

Результатом выполнения запроса может быть:

  • "OK" при изменении данных;
  • id сущности при ее создании;
  • объект Dummy при получении данных.

Работать с Dummy можно несколькими способами:

obj.text
obj['text']
obj.get('text', 'DEFAULT')

if 'text' in obj: pass
# для проверки наличия значения 'text' в объекте

Нюансы

Метод HTTP запроса

Для запросов с получением данных используется HTTP метод GET, а при изменении данных на сервере POST. При вызове метода API на основе названия метода и переданных аргументов автоматически выбирается используемый HTTP метод.

В случае, если метод был выбран неверно, попытка повторится с другим методом, а в логе будет сообщение Invalid HTTP method... с корректным методом. В этом случае, его можно указать при обращении к такому методу:

api.some.method('GET')
# или
api.some.method(_http_method='GET')

Способ авторизации

При инициализации объекта AuthSession каждый раз отправляется несколько запросов на passport.yandex.ru для авторизации.

Возможно, частые авторизации могут показаться подозрительными и повлечь за собой наложение ограничений на аккаунт.

Данные для использования CookieSession можно получить, вызвав метод get_cookie_session_args объекта класса AuthSession:

session = aura.AuthSession('LOGIN', 'PASSWORD')
cookies = session.get_cookie_session_args()
print(cookies)  # сохранить для последующего использования
cookie_session = aura.CookieSession(**cookies)

Настройка

Настройки содержатся в объекте aura.config.config и могут быть изменены напрямую или с помощью aura.configure до инициализации прочих объектов

aura.config.config.USER_AGENT = 'Mozilla/5.0 ...'
aura.configure(USER_AGENT='Mozilla/5.0 ...', API_DELAY=0)
  • USER_AGENT - отправляемый в каждом запросе заголовок, должен соответствовать USER_AGENT мобильного устройства и отвечать некоторым другим условиям
  • DEFAULT_APP_VERSION - отправляемая в каждом запросе версия используемого приложения
  • HTTP_TIMEOUT - лимит ожидания ответа
  • API_DELAY - задержка между повторными запросами
  • HTTP_METHOD_CORRECTION - при ошибке Invalid action пробовать с альтернативным HTTP методом, за исключением случаев, когда метод указан вручную

Доступные методы

В открытом доступе нет всех доступных методов и их аргументов. Здесь со временем будут появляться основные методы и аргументы с описанием (но особо на это рассчитывать не стоит).

Изучать необходимые вам методы можно выполняя действия и наблюдая за тем, какие HTTP запросы отправляются.

Возможные варианты:

  1. Заменяя USER AGENT в браузере отслеживать пакеты при работе с аурой во вкладке "Network" инструментов разработчика (F12 на многих браузерах)
  2. Перенаправляя пакеты с мобильного устройства на ПК используя для их анализа Charles или Fiddler или используя аналогичные инструменты на мобильном устройстве

Так же возможно выудить что-то из main.js (для перехода необходим мобильный USER AGENT)

About

Python API для Яндекс.Аура

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages