fetch не отрабатывает 302 Moved Temporarily

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
Chupakabra303
Сообщения: 22
Зарегистрирован: 24 янв 2017, 11:57

fetch не отрабатывает 302 Moved Temporarily

Сообщение Chupakabra303 » 10 окт 2019, 16:57

Балуюсь с вызовом Google script web app из mikrotik. Вот какая засада обнаружилась:

Код: Выделить всё

[[email protected]] /environment> :put ([/tool fetch url="https://script.google.com/macros/s/AKfycbw9Oi1EkmkLn8ZpVPtmg371Z8fHrC0v9RTecpiA/exec" http
-method=get output=user as-value]->"data")
failure: closing connection: <302 Moved Temporarily "https://script.googleusercontent.com/macros/echo?user_content_key=BZ-Cd6XetfH0-SzIdUO3pYcaLm
hhzmiXHdm2HZghqoinL7DZMeNS1_GfkRDXvoTUabXF8_DXVpPvNR5nV044DSHTSukBViCVm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnNxYXWarK5j6ctBh-Vm_3l2
1PJmYzjgKG0gnkldlkpcpcsJ8zbkIT-YYZpTak_o22Q&lib=MVY3OZc3c_DxqeOlS-sYP0tum8SP2t6jV"> 173.194.222.138:443 (4)
[[email protected]] /environment> 
Движок google script делает переадресацию (302), но fetch походу не умеет это делать (
Может есть какая-то возможность отловить вывод fetch или заставить его переходить по переадресации, чтобы хотя бы в скрипте url выделить?

В обычном браузере работает переадресация (скрипт возвращает строку из 7 символов) :
https://script.google.com/macros/s/AKfy ... ecpiA/exec

Chupakabra303
Сообщения: 22
Зарегистрирован: 24 янв 2017, 11:57

Re: fetch не отрабатывает 302 Moved Temporarily

Сообщение Chupakabra303 » 11 окт 2019, 12:40

Ну штош. Сам спросил, сам отвечу. Способ есть. Можно направить весь вывод fetch в файл, и далее из этого файла можно извлечь необходимый URL. Способ оригинальный, может кому пригодится в других задачах.

Код: Выделить всё

{
# Первый запрос. Moved Temporarily 302. Вывод fetch в gasfetchout.txt
:local jobid [:execute script={/tool fetch url="https://script.google.com/macros/s/AKfycbw9Oi1EkmkLn8ZpVPtmg371Z8fHrC0v9RTecpiA/exec" output=user as-value} file=gasfetchout.txt]

# Ожидание конца работы задачи
:while ([:len [/system script job find .id=$jobid ]] > 0) do={ delay 1s }

# Парсинг gasfetchout.txt, извлечение URL переадресации
:local fetchOut [/file get gasfetchout.txt contents]
:local startURL [:find $fetchOut "http" -1]
:local endURL [:find $fetchOut "\"> " startURL]
:local moveURL [:pick $fetchOut $startURL $endURL]
:global VPNBookPass2 ([/tool fetch url=$moveURL output=user as-value]->"data")
}

Ответить