@UserTrue он из браузера их не всегда берет. А потом если сервер ответ по set-cookies шлет он их ставит сам убирать их.
аа не знал что он не записывает, я через прокси сервер все делаю он точнее показывает что там шлет. Но все равно то что он не умеет br сильно подмораживает на ноду got перешел
Как записать видео работы скрипта в режиме запуска?
-
Подскажите как записать видео работы браузера в скрипте баса в режиме запуска?
Конечно же можно тыкнуть "отобразить браузер" и записывать экран любой софтиной типа camtasia\faststone. таким образом мы будем видеть что происходит в раскрытом браузере и в логе.
Но если выполнится кубик сброс то браузер конечно же исчезнет и потом если в скрипте браузер снова открывается, то он откроется в свёрнутом режиме и захват экрана уже не будет видеть "движуху" в браузере.
Самое простое Что приходит в - это костыль с помощью autohotkey который будет постоянно тыкать раскрывая браузер , но опять же это костыль(((
есть ещё такой модуль как snapshot, но он делает скрины и только на конкретных местах.
Может кто-то знает более простой вариант? мне нужно именно чтобы браузер всегда был раскрыт в режиме запуска.

-
@Nikolas Сам не пробовал, но может этот способ более норм.
Нужен автокликер с определением скриншотов (этот нашёл, но не пробовал, может есть и альтернативы).
https://github.com/fckguapp/AutoImageClicker
Если на экране будет виден этот скриншот,

то кликер сделает по нему клик. Заодно можно сделать и разворачивание браузера на весь экран.Ну, может ещё пригодится расширение для записи видео
https://chromewebstore.google.com/detail/screen-recorder/hniebljpgcogalllopnjokppmgbhadenА можно попросить разработчика сделать какой-нибудь код для запуска скрипта с развёрнутым браузером.
-
в общем Решил проблему написав autohotkeyscript. вот он . может кому-то тоже будет полезно
требует autohotkey версии v1.1.37.02
горячие клавиши запуска\паузы:
Ctrl+Alt+Pвместо :
BasPidStatic := 10696поставьте свой номер процесса из Диспетчера задач:

вместо:
BasTitleKey := "instagram_5.2"поставьте текст без разрыва на латинице который присутствует в заголовке окна вашего процесса

; ========================================================== ; BAS Keep Browser Visible — bind by PID, multi-monitor ready ; AHK v1.1.37.02 — держит окно "Браузер" раскрытым ; ========================================================== #NoEnv #SingleInstance, Force SetBatchLines, -1 SetTitleMatchMode, 2 SendMode, Input CoordMode, Mouse, Window CoordMode, Pixel, Window DetectHiddenWindows, Off ; Включаем DPI-awareness (пер-монитор). Если нет Shcore — откатываемся. DllCall("Shcore\SetProcessDpiAwareness", "Int", 2, "Int") if (ErrorLevel) DllCall("SetProcessDPIAware") ; ------------------- КОНФИГ ------------------- BasPidStatic := 10696 ; <-- твой текущий PID BAS BasTitleKey := "instagram_5.2" ; ASCII-фолбэк, если PID не найден BasWinClass := "Qt5QWindowIcon" BasExe := "BrowserAutomationStudio.exe" BrowserWinClass := "WorkerWindowClass" BrowserExe := "Worker.exe" BrowserWinTitle := "Браузер" ; файл должен быть UTF-8 with BOM TimerMs := 700 ; Координаты "Показать браузер" (клиентская область BAS) ShowLinkX := 56 ShowLinkY := 292 ; ---- Мониторы ---- ; Куда класть окно "Браузер": 0 = не трогать, 1/2/3 = номер монитора BrowserOnMonitor := 2 ; Куда переместить окно BAS: 0 = не трогать, 1/2/3 = номер монитора BasOnMonitor := 0 ; Отступы и размер "Браузер" внутри выбранного монитора (рабочая область) BrowserMarginX := 40 BrowserMarginY := 80 BrowserWidth := 520 BrowserHeight := 900 ; ----------------- /КОНФИГ -------------------- ; Глобальные gBasHwnd := "" gBasPid := 0 gBrowserHwnd := "" gOn := 0 ; --------- ГОРЯЧИЕ КЛАВИШИ ---------- ; Ctrl+Alt+P — старт/пауза мониторинга ^!p:: gOn := !gOn SetTimer, WatchLoop, % (gOn ? TimerMs : "Off") TrayTip, BAS Watcher, % (gOn ? "Мониторинг включен" : "Мониторинг выключен"), 1500, 1 return ; Ctrl+Alt+Q — выход ^!q::ExitApp ; Ctrl+Alt+C — калибровка координат "Показать браузер" (клиент BAS) ^!c:: GetBasSpec(basSpec) if (!WinExist(basSpec)) return WinActivate, %basSpec% Sleep, 120 MouseGetPos, mx, my Clipboard := mx "," my TrayTip, BAS Watcher, % "Координаты (отн. BAS): " mx "," my " скопированы", 1500, 1 return ; Ctrl+Alt+B — привязать к активному окну BAS (если PID сменился) ^!b:: WinGetClass, c, A WinGet, pname, ProcessName, A if (c = BasWinClass && pname = BasExe) { gBasHwnd := WinExist("A") WinGet, gBasPid, PID, ahk_id %gBasHwnd% BasPidStatic := gBasPid gBrowserHwnd := "" WinGetTitle, t, ahk_id %gBasHwnd% TrayTip, BAS Watcher, % "Привязан к BAS PID " gBasPid " | " t, 2000, 1 if (BasOnMonitor) MoveWindowToMonitor(gBasHwnd, BasOnMonitor) } else { TrayTip, BAS Watcher, "Активное окно не BAS", 1500, 1 } return ; Ctrl+Alt+I — показать статус ^!i:: WinGetTitle, t, ahk_id %gBasHwnd% MsgBox, 64, BAS Watcher , % "BAS PID: " gBasPid " (static=" BasPidStatic ")\nBAS HWND: " gBasHwnd "`nTitle: " t "`nBrowser HWND: " gBrowserHwnd "`nМониторинг: " (gOn ? "ON" : "OFF") return ; --------- АВТОСТАРТ ---------- Initialize() if (BasOnMonitor && IsWindowValid(gBasHwnd)) MoveWindowToMonitor(gBasHwnd, BasOnMonitor) gOn := 1 SetTimer, WatchLoop, %TimerMs% TrayTip, BAS Watcher, "Мониторинг включен (автостарт)", 1500, 1 return ; ================= ФУНКЦИИ ================= Initialize() { global BasPidStatic, BasTitleKey, BasWinClass, BasExe, gBasHwnd, gBasPid if (BasPidStatic > 0) { spec := "ahk_pid " . BasPidStatic . " ahk_class " . BasWinClass . " ahk_exe " . BasExe if (WinExist(spec)) { gBasHwnd := WinExist(spec) gBasPid := BasPidStatic return } } spec2 := BasTitleKey . " ahk_class " . BasWinClass . " ahk_exe " . BasExe if (WinExist(spec2)) { gBasHwnd := WinExist(spec2) WinGet, gBasPid, PID, ahk_id %gBasHwnd% } } GetBasSpec(ByRef out) { global gBasHwnd, BasPidStatic, BasWinClass, BasExe, BasTitleKey if (IsWindowValid(gBasHwnd)) { out := "ahk_id " . gBasHwnd return } if (BasPidStatic > 0) { out := "ahk_pid " . BasPidStatic . " ahk_class " . BasWinClass . " ahk_exe " . BasExe } else { out := BasTitleKey . " ahk_class " . BasWinClass . " ahk_exe " . BasExe } } GetParentPid(pid) { wmi := ComObjGet("winmgmts:") for p in wmi.ExecQuery("SELECT ParentProcessId FROM Win32_Process WHERE ProcessId=" pid) return p.ParentProcessId + 0 return 0 } IsWindowValid(hwnd) { if (!hwnd) return false WinGet, out, ID, ahk_id %hwnd% return (out = hwnd) } ; Рабочая область монитора N (без панели задач) GetMonitorWorkArea(idx, ByRef l, ByRef t, ByRef r, ByRef b) { SysGet, c, MonitorCount if (idx < 1 || idx > c) { l := t := r := b := "" return false } SysGet, Mon, MonitorWorkArea, %idx% l := MonLeft, t := MonTop, r := MonRight, b := MonBottom return true } ; Переместить окно в рабочую область монитора N MoveWindowToMonitor(hwnd, idx) { global BrowserMarginX, BrowserMarginY, BrowserWidth, BrowserHeight if (!IsWindowValid(hwnd)) return if (!GetMonitorWorkArea(idx, l, t, r, b)) return x := l + BrowserMarginX y := t + BrowserMarginY w := BrowserWidth h := BrowserHeight WinMove, ahk_id %hwnd%, , %x%, %y%, %w%, %h% } FindBrowserForThisBas() { global gBasPid, BrowserWinClass, BrowserExe, BrowserWinTitle if (!gBasPid) return "" ; 1) По классу+exe и ParentPID WinGet, list, List, ahk_class %BrowserWinClass% ahk_exe %BrowserExe% Loop, %list% { thisH := list%A_Index% WinGet, thisPid, PID, ahk_id %thisH% ppid := GetParentPid(thisPid) if (ppid = gBasPid) return thisH } ; 2) Фолбэк — по заголовку "Браузер" WinGet, list2, List, %BrowserWinTitle% Loop, %list2% { thisH := list2%A_Index% WinGet, thisPid, PID, ahk_id %thisH% ppid := GetParentPid(thisPid) if (ppid = gBasPid) return thisH } return "" } ClickShowInBas() { global ShowLinkX, ShowLinkY GetBasSpec(basSpec) if (!WinExist(basSpec)) return WinGet, bstate, MinMax, %basSpec% if (bstate = -1) WinRestore, %basSpec% WinActivate, %basSpec% Sleep, 120 ControlClick, x%ShowLinkX% y%ShowLinkY%, %basSpec%, , , NA } TendBrowser(hwnd) { global AlwaysOnTopOn, BrowserOnMonitor if (!hwnd) return WinGet, st, MinMax, ahk_id %hwnd% if (st = -1) WinRestore, ahk_id %hwnd% if (AlwaysOnTopOn) WinSet, AlwaysOnTop, On, ahk_id %hwnd% if (BrowserOnMonitor) MoveWindowToMonitor(hwnd, BrowserOnMonitor) } ; ================= ОСНОВНОЙ ЦИКЛ ================= WatchLoop: { global gBasHwnd, gBasPid, gBrowserHwnd, BasOnMonitor GetBasSpec(basSpec) if (!WinExist(basSpec)) { Initialize() return } if (!IsWindowValid(gBasHwnd)) gBasHwnd := WinExist(basSpec) if (!gBasPid) { WinGet, gBasPid, PID, ahk_id %gBasHwnd% if (!gBasPid) return } if (BasOnMonitor && IsWindowValid(gBasHwnd)) MoveWindowToMonitor(gBasHwnd, BasOnMonitor) if (IsWindowValid(gBrowserHwnd)) { TendBrowser(gBrowserHwnd) return } gBrowserHwnd := FindBrowserForThisBas() if (gBrowserHwnd) { TendBrowser(gBrowserHwnd) return } ClickShowInBas() Loop, 5 { Sleep, 300 gBrowserHwnd := FindBrowserForThisBas() if (gBrowserHwnd) { TendBrowser(gBrowserHwnd) break } } } return