Подскажите, пожалуйста, пытаюсь после браузера работать с http. Куки грузятся, юзерагент, язык и все остальные заголовки идентичны. Но при попытке войти через http cloudflare блочит запрос и просит решать капчу. Какие еще моменты я мог не предусмотреть чтобы залогиниться и обойти клауд?
Как из скрипта переименовать название браузера в веб интерфейсе?
-
Всем привет! Подскажите, пожалуйста, как из скрипта переименовать название браузера в веб интерфейсе? У меня запускается несколько браузеров одновременно (в разных функциях) и для каждого браузера нужно уникальное название (в соответствии функции которую он исполняет)

-
@invest193 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
Всем привет! Подскажите, пожалуйста, как из скрипта переименовать название браузера в веб интерфейсе? У меня запускается несколько браузеров одновременно (в разных функциях) и для каждого браузера нужно уникальное название (в соответствии функции которую он исполняет)
Действие "Выполнить яваскрипт в веб интерфейсе" с кодом
document.querySelector('button[data-thread-number="' + ([[THREAD_INDEX]]-1) + '"]').querySelector('span.uk-text-middle ').innerText = "hello"переименует вкладку в "hello"

Но, что бы вкладка переименовалась, она должна быть видна на странице, то есть в интерфейсе должен быть открыта страница "Inspect browsers"

Ну и последний момент, так как эта страница генерируется, то вкладка вернётся в прежнее состояние

-
Проще всего хранить названия вкладок и подгружать при генерации страницы. Для этого нужно модифицировать функцию UpdateBrowsersIds() из подключаемого файла https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2



Вариант для самых ленивых:- Заменить подключаемый файл https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2 на https://community.bablosoft.com/assets/uploads/files/1657452513241-tabs_names_extensions.js

- Использовать в BAS действие "Выполнить яваскрипт в веб интерфейсе" с кодом:
window.tabs_names[ [[THREAD_INDEX]]-1 ] = { name:"Название" }Всё! Теперь вкладки будут всегда называться именно так, как вы их назвали

-
А как зайти в browser content viewer?
-
@xiniy22281 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
А как зайти в browser content viewer?
на главной странице нажмите на кнопку "Inspect browsers"
-
@xiniy22281 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox У меня почему-то отличается от того что у Вас
А причём здесь содержание страницы, которую загрузил браузер BAS в скрипте? Речь идёт о сгенерированном веб интерфейсе
https://wiki.bablosoft.com/web-interface/#/ -
@Fox Спасибо за идею но тут есть проблема после закрытия первых потоков.
Например:
Мы запустили 3 потока, в веб-интерфейсе и имеем BrowserIds = { 1 : 4659, 2 : 5495, 3 : 5400 } в самом скрипте THREAD_INDEX = 2,3,4 соотвественно, всё нормально.
Но как только у нас заканчивает роботу первый поток и создается новый, тут появляется проблема...
В веб-интерфейсе он получает ключ "1" который освободился в обьекте BrowserIds, а вот в скрипте THREAD_INDEX становится не 2 ( как ожидалось ) а 5! То есть он идёт на увеличение от значнения последнего созданного потока. В этот момент у нас полностью расходятся их идентификаторы и невозможно нормально получить tabs_name по нужному ThreadNumber.
Может есть идея как это можно решить? В идеале было бы знать значение BrowserId внутри бас скрипта, таким образом железно привязывать по этому идентификатору.
-
@centerdevs said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox Спасибо за идею но тут есть проблема после закрытия первых потоков.
Например:
Мы запустили 3 потока, в веб-интерфейсе и имеем BrowserIds = { 1 : 4659, 2 : 5495, 3 : 5400 } в самом скрипте THREAD_INDEX = 2,3,4 соотвественно, всё нормально.
Но как только у нас заканчивает роботу первый поток и создается новый, тут появляется проблема...
В веб-интерфейсе он получает ключ "1" который освободился в обьекте BrowserIds, а вот в скрипте THREAD_INDEX становится не 2 ( как ожидалось ) а 5! То есть он идёт на увеличение от значнения последнего созданного потока. В этот момент у нас полностью расходятся их идентификаторы и невозможно нормально получить tabs_name по нужному ThreadNumber.
Может есть идея как это можно решить? В идеале было бы знать значение BrowserId внутри бас скрипта, таким образом железно привязывать по этому идентификатору.
В чём собственно проблема то? При запуске потоков из веб интерфейса вы получаете их id и по ним можете выяснить всё что нужно: https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=function-statistic
-
@Fox Работа устроена так что некоторые потоки запускаются из скрипта, и их нет в объекте который возвращает GetTasks.
А на счёт ID потока, часто бывает что в веб-интерфейсе у потока ID = 1, а в скрипте THREAD_INDEX = 5, ситуация описана выше. Получается что у меня нет точного идентификатора который имел бы одинаковое значение и там и там.
Если каким-то обазом получать BrowserId внутри скрипта - было бы идеально.
-
@centerdevs said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox Работа устроена так что некоторые потоки запускаются из скрипта, и их нет в объекте который возвращает GetTasks.
Так и было задумано, метод GetTasks() возвращает список функций запущенных из веб интерфейса, он не покажет потоки запущенные иначе.
А на счёт ID потока, часто бывает что в веб-интерфейсе у потока ID = 1, а в скрипте THREAD_INDEX = 5, ситуация описана выше. Получается что у меня нет точного идентификатора который имел бы одинаковое значение и там и там.
Какой смысл привязываться к номеру потока в принципе? Если вы создаёте потоки из скрипта, вы не получите к нему доступ через GetTasks(). Что бы открыть браузер вызванного потока, вам нужно будет прослушивать событие "browser_add" что бы в нём получить id браузера
Создавайте все потоки из веб интерфейса, зачем создавать потоки из скрипта?
Если каким-то обазом получать BrowserId внутри скрипта - было бы идеально.
Чисто технически вы можете прослушивать событие "browser_add" и сохранять данные в объекте в веб интерфейсе. Удобнее всего было бы использовать ключ
номер потока, а значениеid браузера. Так как получить данные из интерфейса внутри потока во время его работы возможно только через глобальную переменную, то при получении данных от события их можно дублировать в глобальную переменнуюApi.SetEventHandler(async function (EventType, EventData) { if (EventType == "browser_add") { var obj = await Api.GetGlobalVariable("OBJ") if(obj == "") obj = {}; obj[EventData.thread_number] = EventData.browser_id; await Api.SetGlobalVariable("OBJ", obj); }
Тестовый скрипт: 2588.xml
