Cloud Browser: бяспечная платформа аддаленага браўзера для любога AI-агента
Эталонная архітэктура аддаленага браўзера, незалежнага ад мадэлі: шлюз, воркеры, жывы прагляд праз WebRTC, пацвярджэнні, ахова ад SSRF, паўтор сесій і ўсе параметры канфігурацыі.
Агенты AI стала досыта вмешчацься ў аналіз веб-сторанак, пры тым кераванне рэальным браузерам застаецца сложнейшым, чым здаецца. Нажатые на кнопкі — гэта простая частка. Браузерны агент, на які можна пакластыся, павінен падтрымваць сесіі жывымі, справляцца з поп-апамі і перэнаправленнямі, розумець дынамічныя інтэрфейсы, кераваць завантажэннямі і аплоджэннямі, дазваляць чалавеку взяць керування, захішчаць даныя абліковання, запытваць пры здзейсненні значных дзеянняў і пасля гэтага паказваць, што на самай працоўнае адбылося.
Cloud Browser — гэта рашэнне для всіх гэтых проблем: самастоятэльная служба для запуску браузера, якая не зважае на тое, які мадэль знаходзіцца супрацоўніку.
Яго можна выкарыстоўваць як агента на рабочым столе, як памагальніка для кодавання ў рэжыме команд, як кліента MCP або як спецыяльны прылад. У самай службе зовсім немае LLM. Агент вяршыць рашэння пра тое, што трэба зрабіць, тады калі Cloud Browser адпавядае за браузер, межы безпекі, выкананне, рэальны адглед, летак доказаў і ўпорадкуванне.
Гэтыя розпады ўстановкі ёсць найзначнейшым архітэктурным рашэнням у сістэме. Змяніце агента, а платформа браузера застанецца тая ж. Апгрэйдаваючы працоўніка браузера, агенту не трэба перапісваць код. Палітыка безпекі будзе дзейсніцца аднойчы, незалежна ад таго, які кліент выкарыстоўваецца.
У наступным чытанні рассказваецца пра архітэктуру, межы довер’я, мадэль взаімадзея і інжынерскія выборы, якія ператвараюць автаматызацыю браузера на тое, што падпрыемства можа выкарыстоўваць.
Загальная картына
Агент AI керуе даўнім прыёмнікам, а чалавек можа спаглядаць працэс, втручацца, затварджваць чутлівыя дзеянні, пераглядаць скрыншоты і пазней паўтарыць заданне. Высшыя етапы працы спецыяльна выконаны проста:
User
|
v
AI agent or agent application
|
| HTTPS API or MCP
v
Cloud Browser gateway
|
v
Isolated browser worker
|
v
Website
Чалавек спаглядае і керуе працоўнікам праз падпісаны жывы відбір WebRTC.
Чаму Playwright недастатні
Playwright — гэта выдатны двыжок для автаматызаціі, але гэта не продукт браузера для калькольнікаў. Сервіс у працэйным рэжыме павінен адпавядаць на множлівасць пытанняў, якіх Playwright ніколі не ставя:
- Каму належы ці хто володзіць пэўным браузерам?
- Калькольніку якога задачы належы пэўны вікнам?
- Чы можа другі агент знов павернуцься да ідэнтыфікатора вікна, які ў яго не быў даўаны?
- Што адбываецца, калі ўдаёцца нажыць на елемент, але адпаведная відповедзь сеткі знікае?
- Як хтось можа заўважыцца без таго, каб пароль калі-небудзь дасягнуў модэлю?
- Што заважае браузеру дасягнуць канцаўак метадаў у воблаку або прыватных сетэй?
- Хто мае кантроль, калі агент і чалавек якраз падключэныя?
- Як экранавыя карабкі можна безпечна зберагчы і заваносці?
- Якія доказы застаюцца, калі адпаведная дзеянне не выйшла?
Закрыцья дварчыка ў чыста візначаных межах службы дазволяе платформе адпавядаць на всі гэтыя запытанні адносова той самы спосабом ў кожны раз.
Выконанне без планавання
Служба выконвае запытанні і ніколі не плануе. Яна сама не будзе адлягчыцца пра тое, каб пракупка была адбылася чы ўтрымана, чы паведамленне было аправлена. Гэта дапамагае ёй быць корысной для разных агентоў і чыста размежавае два наборы задач.
З боку агента:
- з’ясаваць, чаго хоча паўтаральнік
- выбраць наступны крок
- інтэрпрэтаваць тое, што зараз паказвае браузер
- запытаць паўтаральніка, калі намер не ўсё ясны
З боку Хмарнага браузера:
- пераканацца ў аўтэнтыфікацыі таго, хто выканаў запыт
- ізолаваць сесіі і вікна адзін ад другога
- выкарыстоўваць правілы браузера
- пераканацца ў правамоці кожнай цэлі
- выконваць дзеянні
Цілі і застарэлыя канкрэтнасці
Найболей прыдатныя цілі ўсё ж такі семантычныя: кнапка, поле для тэксту, прапускач, элемент меню або вузел доступнасці, якія ўжо ёсць у чынным докумэнце. Аплікацыі на базе Canvas і сільна пераскладзеныя інтэрфейсы яшчэ выкарыстоўваюць коордынаты, якія ёсць менш стабільнымі. У такім случае Cloud Browser пераглядае месца розташавання і падае дакладную інфармацыю пра той элемент, які фактычна знаходзіцца пад курсорам.
Агент таксама можа указаць ролю або відны тэкст, якія ён чакае. Калі элемент на цылі не падходзіць, дзеянне завершаецца без успеху, а не прыводзіць да неняхучага клікання.
Старонкі постаюць зменнымі ўсё час. Модальна вікно можа з’явіцца межы спостэрэнням і дзеянням, навігацыя можа заменіць весь дакумент, а пап-up можа стаць актываючым продакцэўнікам. Ёжы супрацаваць з гэтым, семантычныя апыланні прыязначаюцца да певнай версіі дакумента. Будзь-якая змена або навігацыя унэфектываюць паканальныя апыланні, а спроба вікорыстоўваць старое прыводзіць да памылкі stale_target. Рэзультатам яе ёсць безпечны цыкл:
Observe -> choose one action -> validate -> execute -> observe again
Дзе знаходзіцца політыка
Затверджэння і правілы сеткі не можаць знаходзіцца толькі ў аднай інтэрфейсе для корыстувача, інакш кантролеры іншых кліентаў змоглі бы падключыцца безпосерэдна і іх проігнораваць. Шлюз являецца автарытатным пунктом выканання правіл. Дапаможныя прыкладнікі могу дадаць болей строгія правілы, але ніхто не можа послабіць правілы самай службы.
Архітэктура сістэмы
У зразковай рэалізацыі ёсць тры галоўныя пакеты плюс калькі дапаможных служб.
Agent clients
|
+-- Desktop agent UI
+-- Claude or another MCP client
+-- Codex or another coding agent
+-- Custom application or SDK
|
v
MCP adapter or direct HTTPS client
|
v
Cloud Browser gateway
|
+-- authentication and delegated identity
+-- tenant and task isolation
+-- request validation
+-- idempotency
+-- policy and approvals
+-- session manager
+-- signed live-view service
+-- audit and observability
|
v
Worker scheduler
|
v
Browser worker
|
+-- Playwright and restricted CDP
+-- tabs and popups
+-- semantic state
+-- browser actions
+-- screenshots and artifacts
+-- downloads and uploads
+-- WebRTC video source
+-- secure form filling
|
v
Approved web destinations
Шлюз
Шлюз адмініструе версіяваны контракт HTTPS. Ён аўтэнтыфікуе запрашчыка, выканаець аналіз рэальнай ідэнтычнасці карыстальніка, пераканаецься ў прыналежнасці задачы, застосоўвае квоты, выканаець правіла і перадае команду праваму працоўніку. Команды перавозяцца ў супаўзнесенай упаковцы, якая містыць версію протаколу, ID запіта, ID задачы, неабавязковы ID сесіі, назву команды і параметры з межамі. Команды, якія зменяюць стан, таксама патрабуюць ключа ідэмпатэнтнасці.
Рэзультаты і адказы прыходзяць структураваныя. Не дазволяецца, каб внутрашняя інфармацыя прыгледвача вытэкала праз адкройтыя стэк-трысы чыстаў нештафованых падаёмнікаў.
Адаптар MCP
Агенты, які підтрымуюць MCP, підключаюцься праз спеціальній адаптэр. У ім ніколі не запускаецца Chromium, і ён не містыць жодніх правіл працы браузера. Яго едына функція — перэтворэння вікліків інструменту на запіты до шлюза: відкрытця вкладкі (browser_open_tab), зчытування стану, натыскання кнопок, створэння скрыншота чы завершэння сеансу за допомогою відповідніх інструментаў browser_*. Такім чыном кілька продуктыв-агентаў можуць корыстуватыся однім шлюзом, і жодні даныя, прытаманні конкрэтному постачальніку, не потрапляюць у робочый працэс.
URL-адрэсі з підпісом для прамого перэгляду блокуюцца адаптэром. Агент отрымуе лішэ безпечні даныя для відображэння: інформацыю про тыя, чы існуе прамій перэгляд, яку вкладку ён показуе, хто контролюе іі і колі яна закінчуецца. Лішэ надыйній інтэрфейс корыстувача отрымуе можлівісць перэгляду з підпісом.
Робочый працэс браузера
Кожны работнік керуе рэальным працэсам браузера або яго кантэкстам. Карточкі, навігацыя, выкарыстоўванне сэмантычных дадзеных, введэння, скрынышы, завантажэння, аплоады, керуванне буферам копіювання, дыялогавыя вікна і запуск змаганняў браузера — усе праходзіць праз яго. Playwright адпавядае за большую частку автаматызаціі, а кальколька операцый толькі для чытання можа актываўаць обмежаныя можлівасці CDP. Абмежаны доступ да CDP ніколі не надаецца як універсальны рэшэння.
Этыя обмежэнні важны, таму што чысты CDP можа даходзіць да кукі, сховішча, об’ектаў для дэбаггінгу, адбываць довільную евалюацыю і працаваць з внутрашняяй часткай браузера. Безпечны продукт выклікае толькі тыя можлівасці, якія неабходны для выпання задачы.
Менеджэр сесій
Менеджэр сесій керуе ланцюгам адпаведнасцяў:
tenant
-> principal
-> task
-> session
-> tab
-> operation
Незрозумелыя ідэнтыфікаторы прыналежаць толькі данай ланцугу. Ідэнтыфікатор вікна, выданы для адной задачы, не можа быць вікорыстаны іншай задачай, нават калі обеяя задачы выкарыстоўваюць адной і той жа працэс браузера. Менеджэр таксама карыстаецца механізмамі арэнды, таймаутаў для бездзейнальных вікон, керуе станам контролю, зберагае вікна, карыстаецца цыклам жыцця профіляў і ўпорадкуванням ўсіх дадзеных.
Профілі браузера і ўтрыманне дадзеных
Існуе тры тыпы профіляў. Тымчасовы профіль ствараецца для короткага сесійнага перыоду і знікае пасля завершэння задачы, што за замовчаннем забезпечвае максымальную ізоляцію. Профіль задачы існуе толькі для адной задачы і застаецца незалежным ад усіх іншых задач. Перманентны профіль дазволяе таму ж корыстніку зберагаць кукі і сесіі веб-сайтаў з адной задачы ў іншую.
Chrome дозволяе лішэ одын актывній працэс на кожну дырэкторыю профілю, тому задачы, якімі керуе одна й і сама особа, можуць дыліты одын працэс браузера, прычому кожне задачы зберыгае власні вкладкі, вібране кантэнт, актуальні кадры, стан буфера обміну і налаштування керування.
Для постыйніх профілів необхідні суворышы правіла керування:
- Дырэкторыя профілю можа буты прочытана лішэ іі власніком.
- Сервіс зберыгання даных мае шыфруваты інформацыю у спокоі.
- Корыстувачам потрыбен спосіб віходу з облікового запісу і відалення зберэжэного профілю.
- Доступ обмежуецца конкрэтнім корыстувачэм і прынцыпалом.
- Чытання історыі перэгляду вімагае прамоі згоды.
- Сістэма ніколі не перэдае сіры даныя чы токені автэнтыфікаціі трэтым особам.
Жыттэвій цыкл одніеі команды
Кожна дыя віконуецца за однаковою перэдбачуваною паслядоўнасцю:
- Корыстувач автэнтыфікуецца у сервісі.
Калі пасягаванне збываецца пасля таго, як прыгледач ужо мог ўжо выконаць якісь дзеяння, шлюз адпавядае значэннем outcome_unconfirmed. Тады кліенту неабходна ўзравняць стан прыгледача, а не слепа павтараць тую ж дзеяння. Гэта ўсё болей важліва пад час броніравання месца, адправкі формы чыраго звесткі, калі аўтаматычная павторна спроба можа прынесці дублікатныя наследкі ў рэальным свеце.
Інтэрактыўны прыглед праз WebRTC
Важка даверыць хмарнаму прыгледачу, які ніхто не можа бачыць, таму Cloud Browser аддае інтэрактыўны прыглед у рэальны час праз WebRTC. Відэа трансляюцца як медыя-трак, а подзеі паказвальніка, клавіатуры, буфера копіювання, статусу, затверджэння і перадачы інформацыі надаюцца праз аранжаваны DataChannel. HTTP выкорыстоўваецца толькі для сігналізацыі праблем і ўсунення яных, і няма дадатковага потоку звычайных канэў для адправкі зображэнняў.
Падзея скрыншотаў праз пратакол агента пастоянна будзе медленней, таму маршрут WebRTC зменшае затрымкі і дазволяе шырокамасштабную взаімадзейнасць без звычных адпаведзяў інструментаў. Коордынаты курсора адпрацоўваныя ў межах відэа, уключаючы смугі letterbox. Падзеі колеса мышы нормалізуюцца і аб’еднваюцца, скорыя клавішы падтрымліваюць платформу пераглядача, а падтверджэнняя разлічваюць запісаныя, доставленыя, змененыя, адхіленыя і ўсё яшчэ чакаючыя вхідныя даны.
Перадача кантролю туды-сюды
Пераглядач працуе ў рэжыме назірання, пакалі кантроль знаходзіцца у агента. Чалавек можа прыняць кантроль, клікнуўшы на паверхню браузера або нажмуўшы кнопку кантролю. Машына стаўяння ёсць чыста адзначальная:
Agent control
-> handoff pending
-> user control
-> release pending
-> agent control
Any state
-> finalized
Хоча корыстнік мае контроль, вхідныя даны агента заблокаваны. Контроль адзначаецца для конкрэтнага заведамення і следуе за выбраным вікнам, калі сайт ачынае новае вікно. Стары кадр відзнятага відэа не можа даць контроль, а запаздзелая паведамлення не можа тыха повернуць яго агенту, таму што гэйтвей прыме рашынку ў стацыянарным стане.
Захаванне самага пераглядача
Супакоўкі для працы з жывым відображэнням — гэта корткавечныя капасытэты, падпісаныя HMAC, якія прыязначаны для адзінаго корыстніка, прынцыпала, заведамення, сесіі і вкладкі, і яны выгарушваюцца, калі заведамення заканчываецца. Фрамуванне ўвесь час выключана. Чырабатываючы пераглядач у доверлівам аплікэцыі агента, працэс развертання паказвае кожны точны вышэйшы адказвальнік у сваёй Паліцы прымусовай безпекі контэнту; вільныя знакі, шляхі, аўтэнтыфікацыйныя даны, запіты і фрагменты адхоўваюцца як недазволеныя вышэйшыя адказвальнікі для фрамування.
Усе гэта заходзіць проты ворагоўскіх веб-сайтаў, якія можаюць убудаваць прыстрой для перагляду, падмешчаючы невядомы шар сверху і абманываючы корыстніка, ўсклекчваючы яго нажаць на такія кнопкі, як «Взяць кантроль» або «Затвердзіць».
Безпечны вход
Пароль ніколі не павінен вернуцца да модэля, парадувацца ў часовай шкале дзейснасцяў або застацца ў журнале аўдыту. Два спосабы входу дапамагаюць адпрацаваць гэта правіла.
Адны з спосабаў — ручны кантроль: агент перадае браузер корыстніку, які заходзіць у сістэму безпасна на самым сайце, а пасля кантроль знову пераходзіць да агента.
Іншы варыянт — спецыяльны запіт на безпечную аўтэнтыфікацыю. У гэтым случае працоўнік вышукае конкрэтныя відныя поля ў чынным докумэнце, а надзеяны працоўнік пакажае форму з данымі, зашчытанымі ад перагляду, у якой указваецца точны месца падачы. Тое, што вводзіць корыстнік, пераходзіць ад працоўніка безпасна да службы заповнення формы і падае ў перакананыя поля браузера. Запіт прыкрэпляецца да месца падачы, задання, сесіі і вікна, способу стварэння докумэнта, шляху рамкі, селектара, апэктыўнага тыпу поля і короткага тэрміну дзейнасці. Модэлю відны толькі дэталі статусу, якія не ўзятыя як секрэтныя.
Входзжанне за дапамогою QR-кода таксама можа вестыцца безпечна. Працоўнік фіксуе відныя знімкі QR-кода, падтверджае, што іх можна дэкадаваць, пазбавляецца дэкадаваных дадзеных і паказвае знімак толькі у безпечным рэальным працоўніку. Значэнне, якое несе QR-код, ніколі не падае да агента.
Затверджэнні пры выкананні значных дзеянняў
Дазвол на адрыс веб-сайта і дазвол на выкананне певных дзеянняў там — гэта разныя рашэнні. Дазвол агенту ачынуць сторанку рэстарана не дае права на броніраванне, а доступ да інтэрнэт-магазіна не дае права на пакупку. Cloud Browser ацэнюе рызык пры выкананні дзеяння. Для такіх падзеянняў, як:
- броніраванне стола або прыемкі
- пакупка чаго-небудзь або плата
- змена адначоўкі або прав
- выдаленне чаго-небудзь
- адрасаванне паведамленняў для карыстальніка
- зберагчэнне аутантыкацыйных даных
- залічэнне файлаў
- наданне прав браузеру
- перадача чутлівых даных
Кожна затверджэнне прыкладзваецца да адной-едзінай дзеянню, цэлі, пункту назначэння, дакумента і набору катагорыяў дадзэнняў, таму яна становіць сабе безпараднай пасля змены стораніцы або для іншага кранца. Адправка чувствяглых дадзэнняў ацэнюецца сама па сабе, незалежна ад фінальнай дзеянні. Введэнне адрэсы электронной пошты у форму трэцьяго стакана можа вымагаць затверджэння, прыкладзванага да таго пункту назначэння, прычаму перад нажатыем на кранец «Адправіць» запрашваецца аднаэтажная парадактыка. Працоўнік застаецца тым, хто затверджвае; Cloud Browser выкананае, а прыладовая аплікацыя формуе рашэнне.
Скрыншоты, артыфакты і павторнае відтворэнне
Скрыншоты дапамагаюць быстраснае разумеенне, стварэнню трывалых доказаў і дыягназаванню нештачакоў. Калі выкарыстоўваецца функцыя скрыншота, вам вяртаецца зображэнне, якое можна адразу прадараваць, а таксама ідэнтыфікатор артыфакта, і ніякі шлях да файловай сістэмы сервера не доходзіць да агента. Артыфакты належаць заданню, якое іх створыла, быстра выгаруць, у яных ёсць ліміты па размаху і колькасці, яны прыходзяць па падпісаных маршрутах, можна ўзяць толькі у настаўленых локальных каталогах, і яны запісваюцца з правамі толькі для власніка, не вымываючы існуючага файла.
Успешнае перажыванне веб-сторонніц таксама можа стварыць часовую шкалу скрыншотаў. Кожны элемент мае час падзеі, імя хоста, месца выходу, кантактную інфармацыю аб дзеянні і неабавязковы артыфакт у вобразе скрыншота. Слайдэр дазволяе корыстувачу пераглядаць паканейшы стан браузера, а выбіранне опцыі LIVE вяртае на тэкушчую сесію WebRTC.
Чутлівыя крокі практыкуюцца з асаблівым ставленнем. Уведчанне пароля ніколі не фіксуецца, а калі якая-небудзь дзеянне перадае чутлівую інфармацыю, хроналогія можа зберагчы мінімальны метаданы, намерова не паказваючы скрыншот.
Функцыя перэгляду падзейкі выходзіць за межы простае візуальна зручнасць, адколі яна дае адказы на практычныя запітанні:
- Што было на экране у агента непраздлежна да кліку?
- Чы не з’явіўся якісь попап у гэты момент?
- Могаў лі іншы элемент знаходзіцца на верху цэльвога элемента?
- Чы ўсё на сторанцы зменілася празрэзна пасля гэтага?
- Чы задача застаяла на сайце, чы спакойна чакала на затверджэнне ад корыстніка?
Попапы, перэнаправленні і незручныя сторанцы
Рэальныя рабочыя практы рэдка калі застаюцца толькі ў аднай вікні. Працэс бронівання можа ачыніць пап-up, апрант ідэнтыфікацыі можа пераходзіць між кількома джэрамі, дакумент з офісу можа прабаваць запусціць дэсктопны прыемнік, а сторанка зустрэчы можа запропанаваць як лінк да прыемніка, так і альтэрнатыўны варыянт у вебе. Cloud Browser спрацоўвае з такімі пераходамі як з прадуктамі першага класу.
Калі якая-небудзь дзеянне ачынае вікно, платформа фіксуе новую вікню, выбірае яе для выканання задачы і падключае яе да рэальнага адгляду; калі контроль пераходзіць да корыстніка, ён таксама контролюее гэтую вікню. Калі сторанка прабуе запусціць натыўны протакол, напрыклад прыемнік для зустрэчаў, браузер паведамляе, што зовнішні прыемнік недоступны, у замест на тое, каб выдаваць міф пра успешны клік. Калі на сайце ёсць безпечны альтэрнатыўны варыянт у браузеры, агент або корыстнік можа намеравана выбраць яго.
Нічыя функцыяў платформы не дазволяе айсці за межы CAPTCHаў, захоўнага тэксту браузера, паявы стэны адплатаў, трэбаў да довер’я да прыстрою чы іншых адпаведных мерах захопленасці. Калі які-небудзь з іх павыходзіць, гэта фіксуецца як абмежэнне чы перадаецца корыстніку.
Безпека сеткі і SSRF
Паколькі аддалены браузер таксама выступае як кліент сеткі, неконтрольаваная навігацыя можа зробіць яго інструментам SSRF. Канекты вырабляюцца і пераказвуюцца пры перадзеўлі на працоўнік. Па значэнню стандарту гэтыя канекты забараняюцца:
- целі тыпу loopback
- целі тыпу link-local
- сэрвіс метадаў у воблаку
- прыбутковыя дыяпазоны у стылі RFC1918
- мультыкаст чы іншы зарэзерваваны прастор
- будзь-якія схемы URL, якія не ў складзе падтрымванага набору
Спецыяльныя спіскі дазволенага чы забранага для кожнаго корыстніка могу ўжо больш забезпечыць безпеку.
Дзеяныя корпаратыўскія сэтапаванні выкорыстоўваюць роздзялены DNS або захішчаныя веб-шлюзы, якіе направляюць затверджаныя внутрашні імены хоста на прыватныя або высокаспектральныя NAT-адрэсы. Такія адзінакі должны быць чыста выразныя, вузкія, обмежаныя доверлівымі домэнамі і насталяваныя праз конфігурацыю развертвання, каб прыдатна імя хоста ніколі не стала загальным шляхам да прыватной сеткі. Перыядры, пап-апы, іфрамы, запыткі service-worker і перывязка DNS застаюцца пад адной і той жа сетавай політыкай, таму што перагляд толькі першага URL недастатковы.
Введэнне спрамтов і недоверлівы кантэнт старонкі
Рабочы процэс браузера спрыяе кантэнту старонкі як дацым, а не як інструкцыям. Старонка можа паказаць „ігнаруйце вашыя пакананні раней“ або опублікаваць опіс інструмента, у яком стверджуецца, што якая-небудзь операцыя ў безпеці, пры чым жадна з гэтых заяв не надае жадных прав.
Адміністрацыя інструментаў, якія стораніца рэкламуе праз WebMCP, залежыць ад URL стораніцы, працэсу стварэння дакумента, ідэнтыфікатора рэгістрацыі і спэктры, якая была зафіксавана; ўсе іх апісанні ніколі не лягаюць у падзею. readOnlyHint, які надае стораніца, не можа прызначыць адхоўканне атрыбута чытання без падтверджэння, якшчолькі толькі сістэма размешчэння не паведаміла пра явнае довер'е да самэй гэтай адміністрацыі з такой метай. Семантычныя кадры таксама павінны дапэўняць гэтыя правіла: аналіз контэнту адбываецца за рашэннем агента, але наданне прав браузеру — толькі гэйтвейем.
Зялежнасці, заванос і буфер копіювання
З’явіленыя файлы зберагаюцца як артыкулы, прыналежныя конкрэтнам заданню, таму не адгледжваецца шлях працоўніка. Для аплодавання неабходны выбірчык файлоў, прыяўязаны да падзеі, і шлях крыніцы ў межах настаўленага корневага каталогу для аплодавання. Сімволічныя з’ёднанні разгледваюцца і адхоўваныя, калі яны вядуць за межы затверджанага каталога, а перад тым, як задаць файлы, працоўнік пераканальваецца, чы робіць выбірчык адзін файл чы калькі.
Кожна заданне мае свой сстан кліпборду. Тэкст і бінарныя MIME-элементы можаць сінхронізавацца праз жывы праглядач; дазволы браузера надаюцца строго і пасля чаго анулююцца. У стацыонарным кантэксце браузера дазвол на кліпборд, наданный аднаму заданню, не павінен застацца актыўным для іншага.
Жыцёвы цыкл і чыстка
Працэс чысткі ўжо такі, калі агент ніколі не завершывае свою працу чыста. Сэрвіс прыме явны сігнал завершэння раунду, які разлічваў завершаныя, перарваныя, зупіненыя раунды і раунды, якія зупіненыя падчынным агентам, а запускаемая ім процедура чысткі ёсць обмежанай і ідэмпатнай. Кожны табліцы можа мець адна з трох пазнак:
- табліцы, якая працуе, і якая закрываецца пасля завершэння раунду
- рэзультат, які застаецца для корыстніка
- даныя, якія залішаюцца відкрытымі, каб корыстнік могаў продаважыць працу
Пазнакі, прызначаныя для конкрэтнага раунду, апускаюцца пасля таго, як ўсе будзе выпанаўлена, таму табліцы павінна быць спецыяльна зберагнутая знову ў наступным раундзе. Дадатковыя етапы чысткі вырабляюцца за допамогай тэрмінаў працы сесій, часу бездзейства, заканчэння тэрміну давальнасці даных, апускання забытых профіляў і павольнага завершэння працы шлюза.
Магчымасць аблікавання без вытэкання прыватных дадзеных
Логі гэтвэя фіксуюць оператыўныя здарэнні, якія включаюць стварэнне сэсій, навігацыю, рашэнні па правілах, перадачу кантролю, змяны, абяканні і чысткаванне. Запіс аўдыту павінен мячыць ідэнтыфікаторы і рэзультаты, а не кранты даступу чыраг контэнту сторанак. URL-адрэсы, калі гэта можліва, скорачваюцца да безпечных частак, а запыты, значэнні форм, паролі, токены і персональныя даны маскуюцца чыраг удаляюцца.
Корыстныя оператыўныя сігналы включаюць:
- затрымкі ў гэтвэе і ў працоўніках
- колькі існуе сэсій і прыгледачаў
- WebRTC-партнеры, якія з’яўляюцца на зв’язку
- каторыя катэгорыі адмов у прымененні правілаў выклікаюцца
- як часта цялі станавяцца застарэлымі
- рэзультаты, якія не былі паўнаста паўтараны
- працоўнікі, якія не можуць запусціцца
- чы гэткі з’язкі у рэальным часе ўспэшны
- файлы, якія былі створаны і выгорэлі
- чысткаванні, якія не ўспэшны
Праўер адмаўляе, калі відэа насправды перайшла у стан відтворэння, адтолькі тое, што створана падпісаная URL, не дазволяе ствердзіць, што корыстнік можа ўбачыць які-небудзь кантэнт.
Надзеямоснасць і тэсты на навантажэння
Найболей непрыемныя адказы браузерных автаматайзацый — гэта тые, якія не даюць жадных сігналоў: клік, які нічога не даспявае, даныя, якія адправляюцца два разы, пап-up, якого ніхто не бачыў, або дзеянне, якое павтараецца пасля таймауту. Таму серьёзны набор тэстаў выходзіць далей за простую навігацыю па стандартным маршруту. Cloud Browser пераганяе этыя аспекты:
- многі корыстнікі і сесіі адразу
- разлік межа задачамі і рэзультатамі ўжо выкананых дзеянняў
- мутацыі, якія павінны быць ідэмпатныя
- калькі зстарэлых дакументаў
- следаванне за пап-up-амі
- цэлі ўнутрь iframes і shadow roots
- павторныя падключэння WebRTC
- конкурэнцыя пад час змены кантролю
- сторункі, якія зайняты або на час заціснуты
Тэсты на навантажэнне должны адбывацца з рэальнымі працоўнікамі Chromium і адночасна з многама праграмамі WebRTC. Юнітныя тэсты добра пакрываюць логіку правілаў і пратаколаў, але проблемы з запускам браузера, стрымаваннем відэа, фокусам, выборам папупаў і доставкай даных прыходзяць уважліва толькі пад рэальным навантажэнням.
Мадэль развёртвання
Рэферэнсная архітэктура можа працаваць як адзін вузел, хоця ўсе елементы інтэрфейсаў прызначаны для большога плану керавання продакцыяй. Базовая мадэль развёртвання соедынае этыя элементы:
TLS ingress
-> Cloud Browser gateway
-> isolated browser workers
-> encrypted profile and artifact volume
Браузер павінен працаваць як адміністрацыйны неякі корыстнік пад прыдатным профілем seccomp, з обмежаным вычысквальным і памяцевым рэсурсам, а таксама з дастатковай спільной памяцю для Chromium. Контэйнеры ўтвараюць практычны пачатак, а срэдовышчы з вышэйшым рызыкам могу выбраць адну мікроVM на кожнага працоўніка браузера для аднакоўшага ізолявання.
У корпоратыўскіх развертаннях часта дадаюць:
- Метод абмовкі OIDC для самастойнай консолі
- Аўтэнтыфікацыю ад машыны да машыны для агентаў
- Ідэнтыфікатор канечнага корыстніка, які перадаецца праз надзеяныя бэкенды
- Redis, для зберагчыць распадзеленыя кантракты і ключы ідэмпотэнцыі
- PostgreSQL або спецыяльную платформу для аўдыту для фіксавання падзей
- Шыфраваныя сховішчы для артыфактав
- Планавальнік, які распадзеляе працоўнікаў
- Серверы TURN, якія выдаюць трымкія крантэджы WebRTC
- Менаджэр секрэтав з можлівасцю змены ключаў
- Рэгіональную маршрутазацыю плюс контроль за рэзідэнцыяй дадзеных
Гэты шлюз павінен быць доступны з званачыння толькі праз HTTPS. Звычны HTTP не падходзіць нідзе, кроме як для разработкі з выразным лупбэкам.
Канфігурацыя, элемент за элементам
Файл env задае сетавую ідэнтычнасць шлюза, поведанне браузера, сховышча, ізоляцію і межы правіл. Яго трэба спрыяваць як канфігурацыю развёртывання, а не як выхідны код прыемлі. Прыклад ніжэй можна показваць, таму што яго значэння ілюстратыўныя і не маюць рэальных токенаў чы секрэтных даных для падпіса:
CB_HOST=127.0.0.1
CB_PORT=8787
CB_PUBLIC_URL=http://127.0.0.1:8787
CB_TOKENS=replace-with-a-long-random-token:tenant-example:agent-service:delegate
CB_MAX_SESSIONS_PER_PRINCIPAL=8
CB_LIVEVIEW_SECRET=replace-with-a-separate-random-signing-secret
CB_LIVEVIEW_FRAME_ANCESTORS=http://localhost:8088,http://127.0.0.1:8088
CB_HEADLESS=true
CB_SERVICE_WORKERS=allow
CB_BROWSER_CHANNEL=chrome
CB_EXTENSION_PATHS=
CB_PROFILE_MODE=persistent
CB_PROFILE_DIR=./var/profiles
CB_ARTIFACT_DIR=./var/artifacts
CB_AUDIT_FILE=./var/audit.log
CB_USER_AGENT=
CB_ALLOW_ORIGINS=
CB_BLOCK_ORIGINS=
CB_TRUSTED_PRIVATE_ORIGINS=*.company.example
CB_ALLOW_CGNAT_NAVIGATION=true
CB_REQUIRE_APPROVAL=false
CB_ALLOW_LOOPBACK_NAVIGATION=true
CB_SYNTHETIC_MEDIA_DEVICES=true
CB_HOST
Гэта сеткавый інтэрфейс, на якому працюе шлюз.
CB_HOST=127.0.0.1
За дапамою 127.0.0.1 сервіс адаптаваецца толькі да локальнага камп’ютара, што ўсё ж адпаведна найбезпечнейшаму выбору пад час розработкі з інтэрфейсам агента, адаптаром MCP і шлюзам на аднам камп’ютэрэ. Кантэйнеру можа знадобіцца 0.0.0.0, каб яго сетка чыста проксі моглі з’яўіцца, але гэта не ўсё ж прычына публікаваць порт у Інтэрнэце; шлюзы для працы ў рэальным часе застаюцца за аўтэнтыфікацыйным TLS, правіламі фаервалу і автарызацыяй на рэвэлі сервісу. Таксама згадайце, што CB_HOST керуе тым, дзе працэс праслухоўвае, а не URL-адрэсамі ў лінкавых ссылках у рэжыме рэальнага часу, якімаі керуе CB_PUBLIC_URL.
CB_PORT
Гэта TCP-порт, які вікорыстоўвае шлюз.
CB_PORT=8787
Можна выкарыстоўваць любы номер ад 1 да 65535; стандартны значэнне для разработкі — 8787. О выбраным інтэрфейсе ён не павінен быць выкарыстоўваны. Калі рэверсны проксі або кантэйнер выканаляюць іншы зовнішні порт, CB_PORT застаецца внутранім портом для праслухоўвання, тады як CB_PUBLIC_URL паводзіць да адрэсы, яую бачаюць стороннія корыстувальнікі.
CB_PUBLIC_URL
Публічны базовы URL — гэта тое, што вікорыстоўвае шлюз пад час стварэння підпісаных лінкаў для жывага перагляду.
CB_PUBLIC_URL=http://127.0.0.1:8787
Гэта не простая атрыбутная метка, адынчы таму, што інтэрфейс выкарыстоўчыка отрымвае можлівасці, якія вынікаюць з яе, і таму яна павінна быць доступная з браузера, які адображае жывы відблік. Локальная разработка падтрымляе HTTP з варотам на сябе:
CB_PUBLIC_URL=http://127.0.0.1:8787
Для адміністрування з дахоўкі трэбая HTTPS-адрэса, доступная з зовнішняго каналу:
CB_PUBLIC_URL=https://browser.example.com
Не включайце ў гэты URL шляхі, запыты, імены паўназывак, паролі і іншы секрэтныя даны, а таксама завершайце працю TLS на надзеянай входной точке або самам шлюзе. Ішчэ адна падступніца: 127.0.0.1 завжды пазначае апарат, на яком вы знаходзіцеся. Падазроўваючы, што інтэрфейс агента працуе на ноутбуку, а шлюз — на серверы ў іншым месцы, лінк для перагляду, створаны з 127.0.0.1, будзе вядаць назад да ноутбука і ніколі не дасягне шлюза.
CB_TOKENS
Гэтая зменная пераказвае даны абавесці службы, якія прымеўша шлюз. Кожны элемент выкладзены ў аднам і тым жа фармаце:
<bearer-token>:<tenant-id>:<service-principal>[:scope]
Доверэныя даныя задньага каналу выглядаюць так:
CB_TOKENS=replace-with-a-long-random-token:tenant-example:agent-service:delegate
Коміркіі разлучаюць адзінэцьныя запісы. Першы поле — гэта токен носія, які прыходзіць у загалоўку HTTP Authorization; ён павінен мяць не менейшае 20 сімвалаў, яго трэба стварыць за дапамою крыптаграфічна надзеянага адбыточнага крыніцы і зберагчыць у менеджары секрэтав. ID аб’екта ёсць найзовнішэйшым межам ізоляціі, таму сесіі, задачы, прафілі, вікна і артыфакты ніколі яго не пераходзяць. Іме прынцыпала — гэта назва службы, якая зберагчыць крэдытны даныя, і без дэлегавання сесіі працуюць як гэты прынцыпал.
Необавязковы горанак delegate дазваляе надзярожнаму бэкенду апрацаваць заголовак X-Cloud-Browser-Principal, у яком указваецца рэальны канечны корыстнік. Сесія тады належыць гэтаму корыстніку, а журнал аўдыту окрамя таго фіксуе, які бэкенд дзейнуў ад яго імені. Дэлегаванне павінна быць дазволена толькі надзярожным прыемнікам на стороне сервера. Кліентам на рабочым столе чыстаўскім токенам гэта не павінна быць дазволена, адтуды ўсё можа выйсці так, што яны зможуць адобразіцца як іншы корыстнік у сістэме.
Як настроеныя, так і выданыя токены прадаюцца перад адборам у спосабе сталяга часу, што зменшвае рызык выверстання інформацыі праз дужыну токена, але не робіць выверстаны токен безпечным. Як толькі токен з’являецца на скрыншотах, у рэпазітарыях, запісах тэрмінала чыста ў запітах на падтрымку, яго трэба негайна заменіць. Таксама не трэба вярнувацца да яго як CB_LIVEVIEW_SECRET, адтуды гэтыя два параметры захоўваюць разныя функцыі і павінны генеравацца незалежна.
CB_MAX_SESSIONS_PER_PRINCIPAL
Гэта значэнне абмежвае канцэнтрычныя сесіі, якія можа выконваць адны актыўны корыстнік.
CB_MAX_SESSIONS_PER_PRINCIPAL=8
Дазволеныя значэнні належаць ад 1 да 128, пры чым стандартным значэннем ёсць 8. Гэты ліміт заходзіць ад нехтарактальных навантажэнняў на прыёмнік і неконтрольваных агентаў, а таксама не дазволяе аднаму пользоватэлям выкарыстоўваць усю глобальную прыемлівасць; ён дадаецца да загальнага ліміту сесій на вузле-шлюзе. Адпаведныя значэнні залежаць ад памяці працоўніка, CPU, рэжыма профілю і прыпускаемай канкурантнасці. Нават калі стойкі профіль дзеліць працэс прыёмніка між задачамі карыстальніка, кожная задача заўсёды спрацоўвае рэсурсы для вікна, стрымавання, артыфактав і шлюза.
CB_LIVEVIEW_SECRET
Гэта ключ HMAC, які падпісвае можлівасці жывага перагляду.
CB_LIVEVIEW_SECRET=replace-with-a-separate-random-signing-secret
Кожны элемент падчыркаванага токена (tenant, principal, task, session, tab, expiry) пакрываецца падчырком, таму змяненае значэнне робіць яго недзейным. Для развертання, доступнага з званічча, патрэбны секрэтные даны дужоў 32 або больш; на практыцы гэта значыць прынеймна 32 абыяковы байты у фармаце hex або Base64, якія завантажваюцца з менеджэра секрэтных дадзеных. Адкрыванні секрэтных дадзеных дазволіў бы зловершальніку, які мае достатню колькасць метададзей сесіі, падрабаць можлівасці пераглядача. Перамена ключа робіць недзейнымясвежападтверджаныя падчыркі, створаныя з старага ключа, таму яго трэба супадзяць з тэрміном заканчыцься сесіі жывага перагляду. Хавайце гэтыя даны далёка ад агентаў, сторонніх стораніц, пакетаў кліента, логаў і рэпазітарыёў.
CB_LIVEVIEW_FRAME_ANCESTORS
Гэты параметр вялічы, якія доверлівыя веб-застосункі могу уключыць падпісаны пераглядач у iframe.
CB_LIVEVIEW_FRAME_ANCESTORS=http://localhost:8088,http://127.0.0.1:8088
Гэтты прыемнік ператварае спіс у дырэктыва frame-ancestors з Паліцы бяспекі кантэнта праглядача. Калі значэнне ў спісе пустое, праглядач адправляе frame-ancestors 'none' і X-Frame-Options: DENY, тады стораніца працуе як самастоятэльная, але не дозволяе вбудоввання. Калі у спісе зазначэныя адмэністрацыі, толькі гэтыя саме адмэністрацыі могу ўбудавваць яе, а X-Frame-Options: DENY не вікорыстоўваецца, таму што гэты старэйшы заголовак не можа пазначыць калькі адмэністрацый і такім чынам паспелаў бы знесяць функцыю спіску дазволеных адмэністрацый.
Элементы спіса павінны быць точнымі адмэністрацыямі HTTP або HTTPS; шляхі, крантэнцыялі URL, запіты, фрагменты і вайлдкарды адхоўваны не будуць. Схема, хост і порт таксама маюць значэнне, таму следзячыя трое ўважаюцца разнымі адмэністрацыямі:
http://localhost:8088
http://127.0.0.1:8088
https://agent.example.com
Гэты настройкі не ўзначае CORS. Ён заходзіць могучую старонку пераглядача ад атак тыпу clickjacking, таму трэба перыявіць толькі тые інтарфейсы, якія практычна патрэбуюць показаць жывы пераглядач.
CB_HEADLESS
Гэты параметр кантролюе, чы робітнік запускае пераглядач без стандартнае вікно на рабочым столе.
CB_HEADLESS=true
Калі значэнне true, Chromium чыста Chrome працуе без адпрацоўчага інтэрфейса, і корыстувальнікі спаглядаюць і керуюць практычнае выкананне праз WebRTC, а не праз локальныя вікна Chrome. Серверы і кантэйнеры зазвычай прагучуць гэтага, адколькі гэта вікорыстоўвае менш рэсурсаў на рабочай станцыі і дазволяе автаматызацыі працаваць незалежна ад стандартнай сесіі дысплея. Калі значэнне false, браузер запускаецца з адпрацоўчым інтэрфейсам і патрабуе працюючага дысплея, зазвычай віртуальнага, такога як Xvfb, або образа для стрымування рабочай станцыі на Linux; на macOS ён ачынае околачны вікно браузера, калі толькі архітэктура працоўніка не іншая. Змена гэтага пазначкі ніколі не заставляе Cloud Browser перэйняць вялікі вікно Chrome, якое ўжо ачынена. Гэта паўтарае толькі спосаб прыступу да браузера, які керуецца працоўнікам.
CB_SERVICE_WORKERS
Гэта пазначка вялічы, чы можаць веб-сайты рэўіструваць і запускаць працоўнікаў службы.
CB_SERVICE_WORKERS=allow
Выберыце allow або block; block еў стацыярныя налівакі. Дзявякавыя веб-дзеўы часта завісяць ад сервісных працавакаў, таму якія дапытываюцься пры стараннай рабоце сайтаў. Аквафілія ёх не павярбяе.
CB_BROWSER_CHANNEL
ыберыце allow для прыладзі, якія трэбаваюцыя ўвязваць сервісных працавакаў, і някогда не як узвываны рэшэнцы.
CB_BROWSER_CHANNEL=chrome
Прыманы чатыры каналы: chrome, chrome-beta, chrome-dev і msedge. Якша заставіць яго пустым, каб было выкарыстоўвацца настроены экзэкютабельны файл Chromium або пакет Playwright. Справжнія версіі Chrome або Edge іноды неабходны, калі компанія пераказвае доверлівасць прыстрою, централізавана керуе браузерамі, выдвайце правілы або выдае сертыфікаты кліента. Выбор chrome не запускае звычны профіль Chrome карыстальніка, адколі профілі яшчэ прыходзяць з CB_PROFILE_MODE і CB_PROFILE_DIR, таму Cloud Browser не можа тыха прыўязацца да персональнай інтэрактывной сесіі. Канал павінен быць установлены на хосце рабочага прыстрою, а для доверлівасці прыстрою таксама можа знадобіцца правільны профіль, рэгістрацыя ОС, сертыфікаты, правілы або расшырэнняя; сама настройка не стварае доверлівасці для падпрыемства.
CB_EXTENSION_PATHS
Спісак катэгарыяў распакаваных дапамог для прыстрою прэгледча, разлучаных запятымі.
CB_EXTENSION_PATHS=
Якша заставіць яго праздным, каб не запускаліся ніякія распакаваныя расшырэння. Указаныя шляхі перэдаюцца кераванаму прыгледачу праз флагі запуску расшырэнняў, якія працуюць толькі з CB_HEADLESS=false і CB_PROFILE_MODE у значэнні task або persistent; тымчасовыя кантэксты і звычныі безпрыгледачны рэжым не можу абэрнага запускаць іх. Запуск распакаваных расшырэнняў праглядаецца для разработкі і кантролюемых тэстаў. Кампаніі, якія працуюць у прымэтнай сферэ, должны прымусова інсталаваць затверджаныя расшырэння праз правілы Chrome або Edge, фіксаваць ідэнтыфікаторы і апдэйтаваць вучоркі, а таксама пераглядаць правыя. Паколькі пашырэнне працуе з правамі прыгледача і можа спазіраваць або змянюваць актыўнасць у інтэрнэце, яго месца выканання, шлях апдэйта, правыя і власнік — усё гэта патрабуе перагляду з точкі зоры безпекі.
CB_PROFILE_MODE
Гэта параметр вялічынюе, як ізолюецца стан прыгледача і як дазго застаецца стан абмеры.
CB_PROFILE_MODE=persistent
Рэжым можа быць ephemeral, task або persistent. У рэжыме ephemeral ствараецца тымчасовы кантэкст прыглухара без дырэктарыі профілю, якая магчыма ўжываць знову; гэта найстрогейшая стандартная ізоляцыя, якая падходзіць для ананімныго працавання ў інтэрнэце або для задач, якія не павінны залішаць жадных следоў аблогавання. У рэжыме task ствараецца дырэктарыя профілю толькі для адной задачы: кукі і стан застаюцца такімі ж, калі і сама задача, а пасля ўсунення задачы профіль таксама усуваецца. У рэжыме persistent адны профіль дзеліцца межы задачамі таго ж абонента і актываўнага прынцыпала, таму кукі і сесіі веб-сайта застаюцца актуальнымі пасля стварэння новых задач і перзапуску шлюза; пры тым кожная задача зберагае аднародную прыналежнасць карточкі, выбраную карточку, буфер копіювання, працуючыя стрымы, артыфакты і параметры кантролю. Рэжым persistent ёсць найзручнейшым, але і найбольш рызыкавым; неабходна вікорыстоўваць заштыфрованае зберагачы, строгія права на дырэктарыі, чыстыя працэсы выйшчы з аблогавання і чысткі профілю, а таксама обмежыць час бездзейнаўкі.
CB_PROFILE_DIR
Корневы каталог, у яком знаходзяцца даны браузера, базаваныя на профілях.
CB_PROFILE_DIR=./var/profiles
Абсалютны пацек разв’язваецца адносна к дырэктарыі працы працэсу гейтвэю. У контэйнерах, калі профілі павінны застацца пасля замены контэйнера, тут трэба запісаць захаваны том. Гейтвэй сам стварае паддырэктарыі, прызначаныя для конкрэтных корыстнікаў і суб’ектаў, і ніколі не выкарыстовае пацекі профіліў, выбраныя агентамі. Дырэктарыі павінны быць доступныя толькі для власніка і ніколі не павінны выдавацца для завантажэння. Не налаштоввайце гэты параметр на прафіль Chrome рэальнай адзобы; копіюванне чы ўзначасованае ачынэнне жывога прафіля можа яго пашкодзіць і выказаць неканэксуальныя даны працавайчу.
CB_ARTIFACT_DIR
Тут зберагаюцца скрыншоты, завантажэнныя файлы, экспортаваны кантэнт, зображэння для перэгляду і іншыя артыфакты, якія належаць заданню.
CB_ARTIFACT_DIR=./var/artifacts
Стосавучыя шляхі знову адначыцца з рабочага каталогу шлюза. Агенты прымоюць ідэнтыфікаторы артыфактов у віглядзе незрозумелых значэнняў заместо шляхоў, і кожны запыт пераканальваецца ў правільнасці інформацыі пра аб’ект, адпаведальную адміністрацыю, задачу, тэрмін дзейнасці і власніка. Каталог павінен быць доступным толькі для акаунта службы Cloud Browser, трэба обмежыць тэрмін дзейнасці, колькасць і размер артыфактов, апчысціваць выцягнутыя файлы, зашыфраваць даныя, якія зберагаюцца, і утрымваць тымчасовыя артыфакты ў рэзервных копіях не несканчэнна. Прафілі і артыфакты маюць разныя цялі: скрыншот можа паставіцца корыстніку, тады як прафілі браузера ніколі не павінны выкорыстоўвацца як артыфакты, якія можна завантажыць.
CB_AUDIT_FILE
Шлях да логу аўдыту у фармаце JSON Lines.
CB_AUDIT_FILE=./var/audit.log
Кожная лінія ўособляе структураваны запіс пра такія подыянні, як стварэнне сесіі, выкананне каманды, адхоўлення запіту, перадача кантролю, рэзультаты з’ўязку у рэжыме рэальнага часу, знішчэнне сесіі або неудача пад час чысткі. Запісвайце, хто і шта адбылася, а не значэнні форм чы рэшту вёрсткі сторанкі, і скрыйце чы працяжыце даныя абмовкі, токены, запіты і чутлівыя даныя корыстувача. У працэйным рэжыме спрыягайце локальны JSONL як фармат для разработкі чы транспортування і надаеце запісы на стойкую платформу для аўдыту, якая забезпечвае політыку зберагачэння, кантроль даступу, захоп непараднасці, апавешчэння і расследаванні з урахоўваннем абставінаў корыстувача.
CB_USER_AGENT
Необавязковая замена для строкі User-Agent браузера.
CB_USER_AGENT=
Лепшае застаць пустым. Рабочы прыстрой стварае звычную ідэнтычнасць Chrome на адпаведным выкананні прыстроя і задае адпаведныя падказкі для кліента, тым ухілляючыся ад несувярэннасці между загаловкам запіта, navigator.userAgent і navigator.userAgentData. Адзін створаны рэчыпак можа заменіць толькі User-Agent, не ствараючы адпаведных падказак, і дзеякі прадаўцы ідэнтычнасці і дэтэктары ботаў выявляюць гэта несувярэнства. Не выкорыстоўваць яго для таго, каб прадставіць стары прыстрой як новейшы або каб адхіліцца ад правілаў безпекі сайту; выкорыстоўваць яго толькі для задоволення задокументаванага трэбавання да сумеснасці, а пасля — пераканацца ў цэлыснай ідэнтычнасці прыстроя.
CB_ALLOW_ORIGINS
Спіс дазволеных месцаў навігацыі для аб’екта-орэндніка.
CB_ALLOW_ORIGINS=
Калі спіс пусты, то дастыні HTTP і HTTPS з адкрытага сеткі праходзяць, калі толькі не втручаецца іншая правіла, а дастыні з прыватной сеткі, метаданых, локальных канэкаў, зарэзерваваныя і непадтрымваныя все равно прабываюць праз захіст сеткі. Калі ў спісе ёсць элементы, кожная навігацыя должна падходзіць прынеймна да адной правілы, напісанай як точны адрэс выходу, такі як https://portal.example.com, суфікс з маскою, такі як *.example.com, або проста назва хоста, такая як portal.example.com. Калі важны схема або порт, трэба іспользоваць точны адрэс выходу. Маска пакрывае базовую назву хоста і яе паддомены, таму старайцеся не зловжываць яймі. Наявнасць у спіску дазволеных не дае права на прыватны IP, адколькі класыфікацыя DNS і правіла доверлівага прыватнага выходу ацэнююцца окрэма.
CB_BLOCK_ORIGINS
Явны спіс забороненых направленняў для навігацыі.
CB_BLOCK_ORIGINS=
Тэкты праваў выкарытаця трых фарматаў, якія ўтэлеўвацянь у listах дозвола, і гэты list спачыкаецца першым, таму ўсе, што падпаходзяць да обабох listаў, блакяцаця. Тыповыя варыканты – гэта чутныя адэнтсефы, не падтрымаўчыяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
CB_TRUSTED_PRIVATE_ORIGINS=*.company.example
Прычына яго існавання — гэта настройкі роздзельнага DNS, калі імя хоста апраўданай компаніі рэшаліруецца адначынна ў VPN чы сяроднейшай сеткі. Правіла выкарыстоўваюць сінтаксі спісу навігацыі. Обмежыце яго толькі доменамі, якія належаць організацыі, і утрымайцеся ад дадавання загальнага вайлдкарда чы імені хоста толькі таму, што якая-небудзь аплікацыя парадзіла сабе некальканосна. Доверлівы патэнт можа дазволіць цілях RFC1918 чы CGNAT, але ніколі не лупбэк, лінк-локальныя, метаданы воблака, мультыкаст чы зарэзерваваныя адрэсы. Разглядзіце яго як асаблівы выключэнне SSRF; платформа патрабуе кантролю над DNS, выходам у інтэрнэт і прыналежнасцю кожнага доверлівага суфікса.
CB_ALLOW_CGNAT_NAVIGATION
Дазволяе навігацыю да дыяпазону NAT высокага стандарту, 100.64.0.0/10.
CB_ALLOW_CGNAT_NAVIGATION=true
По замовчанню значэнне — false. У дзеяных корпаратыўных сетках VPN або заштынены веб-шлюз выканаюць публічныя або внутршнія службы па адрэсах у прасторэ CGNAT. Увёмкненне гэтага параметра дазволяе іх выкарыстоўваць і можа абыцца з обмежэннямі браузера ў частыне доступу да локальной сеткі, якія моглі б заблакаваць доступ да сторанніцы па сінтэтычным адрэсе. Гэта ўжо шырэ, чым проста даверыць аднаму імені хоста, таму як толькі вядомыя корпаратыўныя домены патрабуюць гэтага, выкорыстоўваюце CB_TRUSTED_PRIVATE_ORIGINS. Рэнджы RFC1918, loopback, link-local, метаданыя, multicast і зарэзерваваныя дыяпазоны застаюцца закрытымі, але доступ у сетка значна расшырваецца, таму ўвёмкніце гэта толькі у контролюемай корпаратыўной асяроддзі.
CB_REQUIRE_APPROVAL
Увёмкнэ яшчэ і загальныя правіла затверджэння шлюза для каманд, якія класыфікуюцца як значныя.
CB_REQUIRE_APPROVAL=false
Калі значэнне true, команды, якія маюць наследкі, чакаюць паказання затверджэння ў точны час выканання. Калі значэнне false, блокада знімаецца, што ёсць розумным выборам, калі дапытнае прыстаўка-агент ужо застосоўвае болей строгія правіла. Аднак безпека не выключаецца. Усі вядомыя рызыкі, такія як перадача чулых даноў, ўдаленне, платэжы, броніраванні, пашыранне працоў ад імені каго-небудзь, змены абліковаўкі чы праваў, доступ да історыі і вядомства некласіфікованых старонак, як і раней, выкалікаюць патрэбу ў затверджэнні. Контроль — гэта аднае цяпло: дзеянні агента застаюцца заблокаванымі, пакуль корыстнік керуе прыемнікам. Для самастоятэльнага продукту, які выкарыстоўваюць калькі агентаў, зазвычай розумней заставіць блокаванне, таму што тады безпека не залежыць ад таго, чы кожны кліент правільна застосоўвае правіла.
CB_ALLOW_LOOPBACK_NAVIGATION
Кантроллер развітку, які дазваляе прыстрою працавальніка адвяжвацца да адрэс loopback (localhost, 127.0.0.1 або ::1).
CB_ALLOW_LOOPBACK_NAVIGATION=true
За замовчанням значэнне — false. Автаматызаваныя тэсты і локальныя веб-дапрынкі на той жа машыне, што і працоўнік, выгадваюць ад гэтага. Гэта нічога не дапамагае да таго, каб аддалены браузер змог лічыцца да ноутбука карыстальніка, таму што на аддаленай машыне 127.0.0.1 ўважаецца аддаленым сераўерам. Што бы не актываць гэта прымусова ў продакшн-сераўерах: доступ праз лупбэк можа адкрыць внутрашняе адміністрацыйнае прыёмныя, серверы разработкі, інтэрфейсы дыбаггіну і службы, створаныя на падставе прыпуску, што ненадзірваны веб-контэнт не зможа да яных дасягнуць. Нават калі гэта актываўана, імя хоста павінна рэшавацца толькі на адрэсы лупбэка, таму сумешанае DNS-адказванне не можа ператворыць гэты выключэнне на загальны спосаб абіходу.
CB_SYNTHETIC_MEDIA_DEVICES
Дае кераванаму браузеру сінтэтычны мікрафон і камеру.
CB_SYNTHETIC_MEDIA_DEVICES=true
За замовчанням таксоўка таксоўваецца як false. Браузеры без відображэння інтэрфейса часта не паказваюць прыстроі медыя, а дзеязныя сайты для перадачы зустрэчаў і адліквідацыі відэа пераканальваюцца ў наявнасці мікрафона чы ручніка пры продажу, таму стораніца выглядае так, нібы застрагла, калі іх не знайшлася. Сінтэтычныя прыстроі дазваляюць пераканальвацца: мікрафон застаецца без звуку, а ручнік паказвае тэставы узор заместа рэальнага відэа. Нічога тут не захопляе фізычны мікрафон чы ручнік каго-лібо, і гэта ніколі не трэба опісваць так. Калі працавальнік прыўяжаецца да рэальной зустрэчы, выключыце яго ручнік, калі толькі не трэба трансляваць тэставы узор. Сайт все раве можа запрашваць разрэшэнне, і яго наданне — гэта аднае рашэнне па правілах, а не запрошчанне прыстроя.
Чытанне прыкладу як аднаго размешчэння
У сукупнасці прыкладная конфігурацыя опісвае локальную настройку для разработкі:
- Шлюз прымае толькі локальныя з’ўязкі па порту
8787.
8088 пад будзь-якім іменем хоста.Эта настройка працюе як профіль локальной інтэграцыі, але не ўтварае базовага стандарту для прымення. Перш чым запускаць: пераключыце публічны URL на HTTPS, рэгулярна зміняйце всі секрэтныя даны і хавайце іх парадульна да файла, выключыце рэжым loopback, скасавайце адзінаковасць у правілах CGNAT і прыватных выключэнняў, перагляньце права доступу service-worker, увімкніце політыку затверджэння праз гейтвей, размістыце профілі і файлы на заштыфрованым кераваным сховішчы, а таксама перадважайце запісы аўдыту на надзейную платформу.
Прыўязка агента
Агент, які падтрымлеў MCP, можа запускаць адаптэр як локальны працэс і наставляць яго на гейтвей. Рэальныя аўтэнтыфікацыйныя даны не павінны знаходзіцца ў сістэме керавання кодам, таму вікорыстоўвайце такія заместнікі:
{
"mcpServers": {
"cloud-browser": {
"command": "node",
"args": ["/path/to/cloud-browser/packages/mcp/src/index.js"],
"env": {
"CB_GATEWAY_ENDPOINT": "https://browser.example.com/v1/browser",
"CB_GATEWAY_TOKEN": "retrieve-from-your-secret-manager",
"CB_DOWNLOAD_ROOTS": "/approved/output"
}
}
}
}
Тыповая адыякцыя выглядае так:
Agent: browser_open_tab(url)
Cloud Browser: tab identifier, page metadata, safe live-view metadata
Agent: browser_get_state(tab)
Cloud Browser: revision-bound semantic state
Agent: browser_click(fresh target)
Cloud Browser: confirmed receipt, updated state, evidence
User: take control through signed viewer
Cloud Browser: block agent input
User: release control
Cloud Browser: restore agent input
Agent: browser_finalize_session()
Cloud Browser: close working tabs, revoke authority, expire artifacts
Як гэта разлічаецца ад інструмента браузера ўнутрь аднаго агента
Большасць продуктама агентаў прылагаецца свой інструмент браузера. Cloud Browser задуманы як платформа браузера, якая служыць адной для багато агентаў, і яго цэннасць вынікае за сумеснай дзейнасці наступных характэрыстыкаў:
- я ёсць нейтральны ў паводзе з тым, які модэль выкарыстоўваецца
- сесіі застаюцца актыўнымі на даляжыні
- інтэрацыя ўражае як сэмантычна, так і візуальна
- WebRTC дазваляе спагляданне і кантроль
- даныя аброцаваныя безпечна
- шлюз прыменяе правіла затверджэння
- скрыншоты служаць доказамі і для павторнага адтворэння
- файлы прыналежаць конкрэтным заданням
- чыстка адбываецца па прагнозаванай схеме жыццёвага цыклу
- ідэнтычнасць, правілы і механізмы аўдыту падпрыемства ўбудованы
Сутнасць заключаецца ў гэтым:
Адзін раз паказаце працэйны лянцуг, а потым запускайце яго праз будзь-якага агента ІІ, пры чым чалавек все ўсё можа зупініць наступныя крокі.
Урокі з стварэння
Браузер — не самая складная частка; справжня сложнасць крыўчатая ў автарытэце. З дызайну выйшло шасць уроків.
Жывы адгляд — гэта не проста плеер відэа, а элемент безпекі: ў яму знаходзяцца кантролы, затверджэння, аутэнтыфікацыйныя даны і намеры корыстніка, таму яго URL, правілы фарматавання, тэрмін дзейнасці і статус кантролу трэба адмаўляць так сама, як і можыкі API.
Перадача паведамлення — гэта не тое ж сама, што завершэнне взаімадзеяння. Можа прыйсці клік, а сторанка яго проста ігнаруе, таму введэнне даных трэба падтвердзіць, пасля чаго пераканацца ў стане сторанкі, а таксама выкарыстоўваць окрэмыя пазначкі для статуса "даслано", "зменена" і "яшчэ чакаецца">.
Повторні спробі без перэвіркі ёсць рызікованімі. Там, дэ дыя браузера можа маты рэальні наслідкі, необхідна ідэмпатэнтнісць і можлівісць віправлення помілок.
Постыйні сеансі робляць продукт корыснішым, але водночас підвішчуюць рызік. Іх потрыбно ізолюваты за ідэнтыфікатором і поеднуваты з функціямі віхіду, зберэжэння історыі і керування данімі.
Вважайце вміст сторынкі і інструменты, надані нею, ненадыйнімі. Сайт можа опісуваты певну дыю, але не мае права іі схвалюваты.
Нарэшты, наявнісць чыткіх доказів полегшуе довіру до автоматызаціі. Завдзякі часовім позначкам скрыншотыв і підсумкам дый корыстувачы, розробнікі і операторы можуць легко зрозуміты прычыну помілкі.
Якое становішчэ залішаецца
Агентам патрэбны браузеры, але карпорацыі жадаюць большага, чым простае выкананне скрыптав. Яны хачуць платформу з чыстаю прыналежнасцю, тэрмінованай автантыяй, безпечным перадачам прав на выкананне задач, захішчаным працэсам аблокавання, праздзелам да затверджэння пры выкананні будзь-якіх дзеянняў, а таксама надзейным способам чысткі.
Cloud Browser ператварае Playwright і Chromium у такую платформу, раздзеляючы планаванне ад выканання, агентаў ад крантытаў, а можлівасці браузера ад прав корыстніка. Самэ гэта раздзеленне ўраджае можлівасць павтарнага выкарыстання дызайну: можна змяніць агента, мадэль чы інтэрфейс, а межы безпекі навакол браузера застаюцца незменнымі. Гэта ўсё неабходнае падстава, калі людзі хочуць справжняя довера да автаматызаціі за дапамогою браузера.