Ярлык с токеном на несколько сценариев (Android): различия между версиями
м Ark rusinov-9121383 переименовал страницу "Получение токена и запуск сценария в одно нажатие (Android)" в "[[Несколько сценар… |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
{{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }} | {{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }} | ||
__NOEDITSECTION__ | |||
__TOC__ | |||
{{Unofficial}} | {{Unofficial}} | ||
== | |||
== Проблема == | |||
Иногда возникает необходимость запуска нескольких сценариев "по одной кнопке", чтобы не множить их сходные копии и не создавать сложные схемы их взаимодействия. с другой стороны, не хочется каждый раз кликать "Найти приложение Яндекс->Зайти в устройства->Управление->Сценарии->Запуск сценария 1->Запуск сценария 2->Запуск сценария 3..." или запускать все эти сценарии голосом. | |||
== Решение == | |||
* На смартфон устанавливается приложение "HTTP Shortcuts" ([https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts Google Play], [https://http-shortcuts.rmy.ch/ оф. сайт]); | |||
* Настраивается получение токена; | |||
* Настраивается запуск сценариев; | |||
* На рабочий стол выносится ярлык для запуска всей цепочки. | |||
Текущая реализация использует cookie из браузера, срок действия которых до конца не проверен. | |||
По мере получения новой информации статья будет обновляться. | |||
== | == Получаем токен == | ||
* Открываем в браузере DevTools (CTRL+Shift+I или F12). | |||
* Открываем в браузере DevTools (CTRL+Shift+I) | * Переключаемся на вкладку Network. | ||
* | * Открываем https://yandex.ru/quasar?storage=1 (конечно, с авторизацией под аккаунтом Яндекса, которому привязан умный дом). | ||
* | * В DevToole видим запрос с названием "quasar?storage=1", кликаем правой кнопкой мыши, выбираем "Copy -> Copy as curl". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy curl quasar.png|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy curl quasar.png|500px]] }} | ||
* Скопированное содержимое передаем любым удобным способом на | * Скопированное содержимое передаем любым удобным способом на смартфон: например, через email, или "Избранное" в Телеграм (в этом случае обязательно поставьте символы ``` до и после скопированного текста, чтобы оно отправилось без искажений). | ||
* | * Полученный текст копируем в буфер обмена смартфона. | ||
* Открываем на | * Открываем (на смартфоне же) программу "[https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]". | ||
* Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные" | * Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные". | ||
* Нажимаем + в правом нижнем углу, выбираем "Константа" | * Нажимаем (+) в правом нижнем углу, выбираем "Константа". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable.jpg|500px]] }} | ||
* В поле Name пишем "token" и нажимаем галочку в правом верхнем углу | * В поле "Name" пишем "token", и нажимаем галочку в правом верхнем углу. | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable 2.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable 2.jpg|500px]] }} | ||
* Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу. | ||
* Нажимаем + в правом нижнем углу, выбираем "Из команды cURL" | * Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script create request from curl.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script create request from curl.jpg|500px]] }} | ||
* Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу | * Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу. | ||
* В открывшемся меню в поле "Название ярлыка" пишем | * В открывшемся меню в поле "Название ярлыка" пишем любое удобное нам название. | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request set name.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request set name.jpg|500px]] }} | ||
* Далее открываем раздел "Response Handling" | * Далее открываем раздел "Response Handling". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling.jpg|500px]] }} | ||
* | * Меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling 2.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling 2.jpg|500px]] }} | ||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу. | ||
* Переходим в раздел " | * Переходим в раздел "Писать сценарии". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario.jpg|500px]] }} | ||
* Добавляем следующий код в поле | * Добавляем следующий код в поле "Запустить при успешном выполнении": | ||
a=JSON.parse(response.body) | a=JSON.parse(response.body) | ||
token=a.storage.csrfToken2 | token=a.storage.csrfToken2 | ||
| Строка 47: | Строка 61: | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario 2.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario 2.jpg|500px]] }} | ||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | ||
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу | * Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу. | ||
Готово! | |||
== Пример запуска сценария с полученным ранее токеном == | |||
* Возвращаемся к браузеру на компьютере. | |||
* Возвращаемся к браузеру на | * Открываем в браузере https://yandex.ru/quasar/iot | ||
* Открываем в браузере https://yandex.ru/quasar/iot | |||
* Переключаем вкладку сверху на "Сценарии" | * Переключаем вкладку сверху на "Сценарии" | ||
* Открываем в браузере DevTools (CTRL+Shift+I), раздел Network. | * Открываем в браузере DevTools (CTRL+Shift+I), раздел Network. | ||
* В блоке "Сценарии" находим который | * В блоке "Сценарии" находим тот, который хотим запустить, и зажимаем "Start" (треугольник справа от сценария). | ||
* Видим 2 запроса с названием "actions", кликаем на второй | * Видим 2 запроса с названием "actions", кликаем правой кнопкой мыши на второй (!), выбираем "Copy -> Copy as curl". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy scenario curl.png|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy scenario curl.png|500px]] }} | ||
* Скопированное содержимое передаем | * Скопированное содержимое снова передаем на смартфон и там копируем в буфер обмена. | ||
* Снова открываем "[https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]". | |||
* | * Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL". | ||
* Нажимаем + в правом нижнем углу, выбираем "Из команды cURL" | * Вставляем содержимое из буфера, и нажимаем галочку в правом верхнем углу. | ||
* Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу | * В открывшемся меню в поле "Название ярлыка" пишем удобное нам название. | ||
* В открывшемся меню в поле "Название ярлыка" пишем | * Переходим в раздел "Заголовки запроса". | ||
* Переходим в раздел "Заголовки запроса" | |||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change headers.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change headers.jpg|500px]] }} | ||
* Открываем заголовок "x-csrf-token" | * Открываем заголовок "x-csrf-token". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token 2.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token 2.jpg|500px]] }} | ||
* Удаляем значение и нажимаем на фигурные скобки справа | * Удаляем значение и нажимаем на фигурные скобки справа. | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set value.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set value.jpg|500px]] }} | ||
* В открывшемся меню выбираем созданную ранее переменную "token" | * В открывшемся меню выбираем созданную ранее переменную "token". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable.jpg|500px]] }} | ||
* Нажимаем " | * Нажимаем "Ok". | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable 2.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable 2.jpg|500px]] }} | ||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу. | ||
* Далее открываем раздел "Response Handling" и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)" | * Далее открываем раздел "Response Handling", и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)". | ||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу. | ||
* Переходим в раздел " | * Переходим в раздел "Писать сценарии", и добавляем в верхнее поле "Запустить до выполнения" команду задержки на 2 секунды: | ||
wait(2000) | wait(2000) | ||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу. | ||
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу | * Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу. | ||
== Создание ярлыка для мультискрипта == | |||
* Нажимаем + в правом нижнем углу, выбираем "Multi-Shortcut" | * Нажимаем + в правом нижнем углу, выбираем "Multi-Shortcut" | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add multi shortcut.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add multi shortcut.jpg|500px]] }} | ||
| Строка 94: | Строка 113: | ||
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add shortcus to desktop.jpg|500px]] }} | {{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add shortcus to desktop.jpg|500px]] }} | ||
* Запускаем ярлык с рабочего стола и наслаждаемся | * Запускаем ярлык с рабочего стола и наслаждаемся | ||
[[Category:Умный дом]] | [[Category:Умный дом]] | ||
[[Category:Неофициальная информация]] | [[Category:Неофициальная информация]] | ||
Версия от 18:01, 26 февраля 2021
Неофициальная информация Методы и программы могут перестать функционировать в любой момент
...а также повредить оборудование и/или нарушить работу систем.
Любые действия и программы вы применяете на свой собственный страх и риск.
Любые действия и программы вы применяете на свой собственный страх и риск.
Проблема
Иногда возникает необходимость запуска нескольких сценариев "по одной кнопке", чтобы не множить их сходные копии и не создавать сложные схемы их взаимодействия. с другой стороны, не хочется каждый раз кликать "Найти приложение Яндекс->Зайти в устройства->Управление->Сценарии->Запуск сценария 1->Запуск сценария 2->Запуск сценария 3..." или запускать все эти сценарии голосом.
Решение
- На смартфон устанавливается приложение "HTTP Shortcuts" (Google Play, оф. сайт);
- Настраивается получение токена;
- Настраивается запуск сценариев;
- На рабочий стол выносится ярлык для запуска всей цепочки.
Текущая реализация использует cookie из браузера, срок действия которых до конца не проверен. По мере получения новой информации статья будет обновляться.
Получаем токен
- Открываем в браузере DevTools (CTRL+Shift+I или F12).
- Переключаемся на вкладку Network.
- Открываем https://yandex.ru/quasar?storage=1 (конечно, с авторизацией под аккаунтом Яндекса, которому привязан умный дом).
- В DevToole видим запрос с названием "quasar?storage=1", кликаем правой кнопкой мыши, выбираем "Copy -> Copy as curl".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
- Скопированное содержимое передаем любым удобным способом на смартфон: например, через email, или "Избранное" в Телеграм (в этом случае обязательно поставьте символы ``` до и после скопированного текста, чтобы оно отправилось без искажений).
- Полученный текст копируем в буфер обмена смартфона.
- Открываем (на смартфоне же) программу "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)".
- Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
- Переходим в раздел "Писать сценарии", и добавляем в верхнее поле "Запустить до выполнения" команду задержки на 2 секунды:
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>
- Запускаем ярлык с рабочего стола и наслаждаемся