Скиллы Новичок Разное

chrome

Скачать ZIP
14
Предупреждение о рисках!

Установка скиллов и плагинов OpenClaw осуществляется на ваш страх и риск. Все файлы были получены из открытых источников и предоставляются «как есть». Мы не гарантируем их корректную работу, безопасность или совместимость с вашей системой. Перед установкой настоятельно рекомендуется ознакомиться с содержимым кода и убедиться, что вы понимаете, какие изменения будут внесены в вашу систему.

Chrome DevTools Protocol (CDP), Manifest V3 и практики отладки, которые помогают избежать типичных ошибок при автоматизации.

Chrome DevTools Protocol (CDP)

  • Сначала получайте WebSocket URL вкладки: не подключайтесь напрямую к ws://localhost:9222/devtools/browser. Вместо этого запрашивайте http://localhost:9222/json/list и используйте webSocketDebuggerUrl активной вкладки.
  • Включайте домены перед использованием: обязательно вызывайте Runtime.enable и Page.enable перед выполнением Runtime.evaluate или Page.navigate.
  • CDP работает асинхронно: дождитесь ответа перед отправкой следующей команды. Используйте обёртку на промисах с отслеживанием ID ответа.
  • Скриншоты на Retina / HiDPI: добавляйте fromSurface: true и scale: 2 в параметры Page.captureScreenshot.
  • Тело ответа нужно получать отдельно: событие Network.responseReceived не содержит body. Используйте Network.getResponseBody после завершения запроса.

Chrome Extension (Manifest V3)

  • Разделение разрешений: используйте permissions для API и host_permissions для URL. Не применяйте http://*/*.
  • Service Worker не постоянен: состояние не сохраняется. Используйте chrome.storage.local вместо глобальных переменных.
  • Заменяйте setInterval: используйте chrome.alarms для периодических задач.
  • Изоляция content scripts: они не имеют доступа к глобальным переменным страницы. Для выполнения в контексте страницы используйте chrome.scripting.executeScript.
  • Коммуникация: применяйте window.postMessage для связи между content script и страницей.
  • Асинхронное хранилище: chrome.storage.local.get() возвращает Promise — не забывайте await.
  • Обработка квот: учитывайте ошибки QUOTA_EXCEEDED.

Определение контекста

  • Определение Chrome (не Edge/Brave): проверяйте window.chrome и navigator.vendor === "Google Inc.", исключая Opera и Edge.
  • Тип контекста расширения:
    • chrome.runtime.id — content script
    • chrome.runtime.getManifest — popup/background/options
    • chrome.loadTimes без runtime — обычная веб-страница
  • Проверка версии Manifest: оборачивайте chrome.runtime.getManifest() в try-catch.
  • API различия: используйте chrome.action для V3 и chrome.browserAction для V2.

Отладка производительности

  • Memory API: проверяйте наличие performance.memory перед использованием.
  • Performance marks: применяйте performance.mark() и performance.measure() для измерений.
  • Очистка меток: удаляйте их, чтобы избежать утечек памяти.
  • Поиск layout thrashing: используйте PerformanceObserver с типами measure, paint, largest-contentful-paint.
  • Порог: отмечайте операции дольше 16.67 мс.

Отладка сети

  • Блокировка до навигации: вызывайте Network.setBlockedURLs перед Page.navigate.
  • Перехват запросов: используйте Network.setRequestInterception с requestStage: "Request".
  • Блокировка: возвращайте errorReason: "BlockedByClient".

Контексты безопасности

  • Смешанный контент: HTTPS-страницы не могут загружать HTTP-ресурсы. Проверяйте location.protocol.
  • CORS ошибки: TypeError при fetch часто означает проблему CORS. Проверяйте вкладку Network в DevTools.
  • Требования secure context: API (File System Access, Clipboard) требуют window.isSecureContext === true и действия пользователя.

Эти практики помогают избежать типичных ошибок при работе с Chrome, автоматизации через CDP и разработке расширений на Manifest V3.


Файл из источника

10812_chrome-1.0.0.zip