Перейти к содержанию

Ярлык с токеном на несколько сценариев (Android)

Материал из Wiki yaboard
Версия от 00:35, 23 февраля 2021; Ssshiro-158295832 (обсуждение | вклад) (Новая страница: «{{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Содержание
Требуются прямые руки И вдумчивое отношение к инструкции
Мы не несём никакой ответственности за правильное или неправильное применение, или неприменение, и/или неспособность применить данное руководство.
Телефон вызова экстренных служб - 112.
Неофициальная информация Методы и программы могут перестать функционировать в любой момент
...а также повредить оборудование и/или нарушить работу систем.
Любые действия и программы вы применяете на свой собственный страх и риск.

Введение

Возникла у меня необходимость запускать несколько сценариев "по одной кнопке", например, чтобы при возвращении домой можно в одно нажатие включить свет в квартире и музыку/телевизор/кофеварку/etc. Это было бы можно объединить всё в один сценарий, но не хотелось каждый раз проделывать путь "найти приложение Яндекс->зайти в устройства->Управление->Сценарии->запуск сценария 1->запуск сценария 2->запуск сценария 3". Решения было найдено следующее, на телефон устанавливается приложение HTTP Shortcuts (Google Play, офф.сайт), настраивается отдельными сценариями получение токена и запуск сценариев, на рабочий стол выносится ярлык для запуска.

Реализация

Данная реализация, на текущий момент, основана на использовании файлов cookie из браузера, срок действия которых до конца не проверен, по мере получения новой информации статья будет обновляться.

Получение токена

  • Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
  • Переходим на https://yandex.ru/quasar?storage=1 (Вы должны быть авторизованы под своей УЗ Яндекс)
  • Видим запрос с названием "quasar?storage=1", кликаем на него ПКМ, выбираем "Copy -> Copy as curl"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Скопированное содержимое передаем любым удобным способом на телефон (например отправив в Избранное через Телеграм, не забыв экранировать содержимое символами ``` перед и после сообщения)
  • Копируем содержимое на телефоне в буфер обмена.
  • Открываем на телефоне HTTP Shortcuts
  • Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные"
  • Нажимаем + в правом нижнем углу, выбираем "Константа"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • В поле Name пишем "token" и нажимаем галочку в правом верхнем углу
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу
  • Нажимаем + в правом нижнем углу, выбираем "Из команды cURL"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу
  • В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Далее открываем раздел "Response Handling"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • И меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Переходим в раздел "писать сценарии"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Добавляем следующий код в поле посередине "Запустить при успешном выполнении":
a=JSON.parse(response.body)
token=a.storage.csrfToken2
setVariable('token',token)
showToast(token)
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу

Пример запуска сценария с полученным ранее токеном

  • Возвращаемся к браузеру на ПК
  • Открываем в браузере https://yandex.ru/quasar/iot (Вы должны быть авторизованы под своей УЗ Яндекс)
  • Переключаем вкладку сверху на "Сценарии"
  • Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
  • В блоке "Сценарии" находим который мы хотим запустить и зажимаем "Start" (треугольник справа от сценария).
  • Видим 2 запроса с названием "actions", кликаем на второй ПКМ, выбираем "Copy -> Copy as curl"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Скопированное содержимое передаем любым удобным способом на телефон (например отправив в Избранное через Телеграм, не забыв экранировать содержимое символами ``` перед и после сообщения)
  • Копируем содержимое на телефоне в буфер обмена.
  • Открываем на телефоне HTTP Shortcuts
  • Нажимаем + в правом нижнем углу, выбираем "Из команды cURL"
  • Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу
  • В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
  • Переходим в раздел "Заголовки запроса"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Открываем заголовок "x-csrf-token"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Удаляем значение и нажимаем на фигурные скобки справа
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • В открывшемся меню выбираем созданную ранее переменную "token"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Нажимаем "OK"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Далее открываем раздел "Response Handling" и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)"
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Переходим в раздел "писать сценарии" и добавляем следующий код в поле в верхнее поле "Запустить до выполнения":
wait(2000)
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу

Создание ярлыка для мультискрипта

  • Нажимаем + в правом нижнем углу, выбираем "Multi-Shortcut"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
  • Далее открываем раздел "Trigger Shortcuts" и добавляем созданные ранее скрипты
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу
  • Нажимаем и удерживаем на наш скрипт пока не всплывет меню, в меню выбираем "Разместить на главном экране"
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Запускаем ярлык с рабочего стола и наслаждаемся