- 4
- 0
- Версия MoonLoader
- Другое
Привет всем. Пишу скрипт для Arizona Mobile на MonetLoader. Нужно отправлять POST запросы на внешний HTTPS API и получать ответ обратно в Lua.
Что уже пробовал
ssl.https — крашит скрипт при загрузке. Видимо в окружении MoonLoader Android нет нативной SSL библиотеки.
socket_http — работает, но только HTTP. Внешний API принимает только HTTPS, возвращает 403.
lib.webviews от SADISTCORE — скрипт запускается, JS через executeJS выполняется, но fetch() падает с:
console
ERR: Failed to fetch
Предполагаю что это CORS политика — WebView загружен на about:blank, и браузер блокирует cross-origin запрос. Но не уверен.
Мой код
Вопросы
ВОПРОС 1
Нужно ли грузить реальную HTTPS страницу (например https://google.com) перед вызовом executeJS чтобы WebView имел правильный origin и не блокировал fetch? Или есть способ отключить CORS проверку в lib.webviews?
ВОПРОС 2
lib.getJSValue(id, expression) — он синхронный? Или может возвращать старое значение если вызвать сразу после executeJS? Нужна ли дополнительная задержка перед первой проверкой?
ВОПРОС 3
Кто-нибудь вообще успешно делал внешние HTTPS fetch запросы через lib.webviews от SADISTCORE на ARZMOD? Может есть другой рабочий способ HTTPS из Lua на Android MoonLoader?
ВОПРОС 4
В WebViews.jar есть метод setSetting — какие именно настройки туда можно передавать? Может есть что-то типа allowUniversalAccessFromFileURLs или mixedContentMode для обхода CORS?
Логика спизженна с скрипта browser lua
Что уже пробовал
ssl.https — крашит скрипт при загрузке. Видимо в окружении MoonLoader Android нет нативной SSL библиотеки.
socket_http — работает, но только HTTP. Внешний API принимает только HTTPS, возвращает 403.
lib.webviews от SADISTCORE — скрипт запускается, JS через executeJS выполняется, но fetch() падает с:
console
ERR: Failed to fetch
Предполагаю что это CORS политика — WebView загружен на about:blank, и браузер блокирует cross-origin запрос. Но не уверен.
Мой код
Результат: window.__rf_done становится true, window.__rf_answer = "ERR:Failed to fetch". Запрос до сервера явно не доходит.Lua — инициализация WebView
local lib = require('lib.webviews')
local WV_ID = 42
lib.createBrowser(WV_ID, 'about:blank')
lib.setPos(WV_ID, 0, 0)
lib.setSize(WV_ID, 1, 1)
lib.setVisible(WV_ID, false)
Lua — инжект данных и запуск fetch
-- Шаг 1: кладём ключ и тело в window-переменные
lib.executeJS(WV_ID,
"window.__rf_key='" .. api_key .. "';"
.. "window.__rf_body='" .. body_json .. "';"
)
-- Шаг 2: fetch читает из window
lib.executeJS(WV_ID,
"window.__rf_done=false;"
.. "fetch('https://api.groq.com/openai/v1/chat/completions',"
.. "{method:'POST',"
.. "headers:{'Content-Type':'application/json','Authorization':'Bearer '+window.__rf_key},"
.. "body:window.__rf_body})"
.. ".then(r=>r.json())"
.. ".then(d=>{window.__rf_answer=d.choices[0].message.content;window.__rf_done=true;})"
.. ".catch(e=>{window.__rf_answer='ERR:'+e.message;window.__rf_done=true;});"
)
Lua — чтение результата через getJSValue
local timeout = 15000
while timeout > 0 do
wait(300)
timeout = timeout - 300
local flag = lib.getJSValue(WV_ID, 'window.__rf_done')
if flag == 'true' then
local ans = lib.getJSValue(WV_ID, 'window.__rf_answer')
-- обработка...
break
end
end
Вопросы
ВОПРОС 1
Нужно ли грузить реальную HTTPS страницу (например https://google.com) перед вызовом executeJS чтобы WebView имел правильный origin и не блокировал fetch? Или есть способ отключить CORS проверку в lib.webviews?
ВОПРОС 2
lib.getJSValue(id, expression) — он синхронный? Или может возвращать старое значение если вызвать сразу после executeJS? Нужна ли дополнительная задержка перед первой проверкой?
ВОПРОС 3
Кто-нибудь вообще успешно делал внешние HTTPS fetch запросы через lib.webviews от SADISTCORE на ARZMOD? Может есть другой рабочий способ HTTPS из Lua на Android MoonLoader?
ВОПРОС 4
В WebViews.jar есть метод setSetting — какие именно настройки туда можно передавать? Может есть что-то типа allowUniversalAccessFromFileURLs или mixedContentMode для обхода CORS?
Логика спизженна с скрипта browser lua