Согласованность и приватность Worker и OffscreenCanvas
Проектируйте и проверяйте сценарии Worker и OffscreenCanvas с ясными границами жизненного цикла, рендеринга, доступности и приватности.
BotBrowser Team
Нужна структурированная документация по теме Платформа?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
BotBrowser предоставляет основанную на профиле защиту документированных поверхностей чтения Canvas в разрешённом сценарии. Она не заменяет безопасность origin-clean и ответственность за доступность и не гарантирует одинаковое планирование или пиксели Worker на каждом хосте. Workers позволяют вынести JavaScript за пределы главного потока. OffscreenCanvas позволяет выполнять поддерживаемую отрисовку без видимого элемента canvas в этом потоке. Это помогает сохранить отзывчивость, но добавляет отдельные границы жизненного цикла и рендеринга.
Разделяйте ответственность
Страница отвечает за взаимодействие, видимое состояние, запасной контент и отмену. Выделенный Worker отвечает за назначенное вычисление. OffscreenCanvas - поверхность рисования, которую поддерживающий браузер может передать Worker. Передача меняет владельца, но не обещает одинаковые пиксели во всех браузерах, ОС, графических backend и наборах шрифтов.
Явно задайте входные данные, сообщения, ожидаемый результат, ошибки, отмену и очистку. Worker не является границей безопасности: код того же origin сохраняет свои разрешения, а передаваемые данные должны быть ограничены задачей.
Проверяйте полный видимый сценарий
Пустая страница доказывает только запуск скрипта. Проверьте весь поддерживаемый сценарий: создать Worker, передать или создать поверхность, отправить представительские синтетические данные, дождаться сообщения готовности или ошибки, показать результат и завершить Worker штатно. Текстовый статус или другая доступная альтернатива должны соответствовать визуальному результату.
При сравнении сред зафиксируйте версии приложения и браузера, семейство профиля, viewport, масштаб, маршрут и политику хранения. Описывайте видимый результат обычными словами: «диаграмма читаема, сводка доступна».
Понимайте передачу и жизненный цикл
HTMLCanvasElement.transferControlToOffscreen() передаёт управление canvas объекту OffscreenCanvas. Исходный элемент больше не может им управлять. Worker получает объект через сообщение со списком передачи. Считайте передачу однонаправленной и заранее определите поведение повторной инициализации.
Worker может завершиться с ошибкой до кадра, во время сообщения или при остановке. Обрабатывайте error, messageerror, сообщения об ошибках приложения и отмену. После завершения освобождайте ссылки и завершайте Worker. Сообщения после остановки должны давать понятную ошибку, а не теряться молча.
Согласуйте рендеринг и доступность
Пиксели Canvas не заменяют текст, табличные данные, клавиатурное управление или объявленное состояние. Дайте доступное имя, сводку или представление данных и обновляйте его при новом состоянии от Worker. Если OffscreenCanvas недоступен, используйте документированный запасной путь: обычный canvas в главном потоке, изображение или таблицу.
Рендеринг зависит от реализации браузера, масштаба, шрифтов, управления цветом и графического backend. Приёмку формулируйте через поддерживаемые возможности и видимый результат. Не обещайте побитовую идентичность между хостами без явной поддержки и проверки.
Приватность и границы origin
Worker не отменяет правила origin. Кросс-origin изображения или медиа могут сделать canvas не origin-clean, после чего браузер ограничит чтение пикселей. Объясняйте эту границу пользователю, а не пытайтесь её обходить. Не передавайте Worker необработанные пиксели, данные аккаунта или стабильные идентификаторы без необходимости.
BotBrowser предоставляет основанную на профиле детерминированную защиту документированных поверхностей чтения Canvas. Это может помочь поддерживаемому профилю получать воспроизводимый результат в разрешённом сценарии, но не заменяет модель безопасности origin-clean, не решает задачу доступности и не гарантирует одинаковое планирование или рендеринг Worker на каждом хосте. Профиль BotBrowser также не обещает анонимность или принятие сайтом.
Отдельными строками укажите версию браузера, платформу, режим headless или headed, графический путь, поддержку Worker, поддержку OffscreenCanvas, запасной путь, хранение и видимый результат. Повторяйте принятую строку после обновления браузера, профиля, образа хоста, графики или приложения.
Если строка отличается, сначала классифицируйте результат: отсутствующая возможность, ошибка приложения, допустимое различие рендеринга или незавершённый запасной путь. Сохраняйте принятый пакет, пока ответственный повторяет сценарий и фиксирует решение.
Практический список
- Определите сообщения, отмену, ошибки и очистку Worker.
- Проверьте передачу владения и запасной путь.
- Синхронизируйте визуальный результат и доступное состояние.
- Считайте origin-clean границей безопасности браузера.
- Отделяйте возможности BotBrowser от ответственности приложения.
- Записывайте браузер, профиль, хост, графический путь и видимый результат.
Публичные источники: WHATWG HTML Canvas, MDN Web Workers API, MDN OffscreenCanvas и защита Canvas BotBrowser.
Связанные материалы: Согласованность realm браузера и приватность и Назначение Canvas API и приватность.
Sources
WHATWG HTML Canvas, MDN Web Workers API, MDN OffscreenCanvas и защита Canvas BotBrowser.
WHATWG HTML Canvas: https://html.spec.whatwg.org/multipage/canvas.html
MDN Web Workers API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API
MDN OffscreenCanvas: https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas
Защита Canvas BotBrowser: https://botbrowser.io/docs/fingerprint/canvas/
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.