Cohérence et confidentialité de Worker et OffscreenCanvas
Concevoir et vérifier les flux Worker et OffscreenCanvas avec des limites claires de cycle de vie, rendu, accessibilité et confidentialité.
BotBrowser Team
Vous voulez la documentation structurée pour Plateforme ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
BotBrowser fournit une protection déterministe fondée sur le profil pour les surfaces de lecture Canvas documentées dans un parcours autorisé. Elle ne remplace pas la sécurité origin-clean ni la responsabilité d'accessibilité et ne garantit pas le même ordonnancement ou les mêmes pixels du Worker sur chaque hôte. Les Workers permettent de déplacer du JavaScript hors du thread principal. OffscreenCanvas permet d'effectuer un rendu compatible sans élément canvas visible sur ce thread. Ensemble, ils améliorent la réactivité, mais ajoutent une limite de cycle de vie et de rendu à vérifier.
Séparer les responsabilités
La page gère l'interaction, l'état visible, le contenu de secours et l'annulation. Un Worker dédié gère le calcul qui lui est attribué. OffscreenCanvas est une surface qui peut être transférée au Worker lorsque le navigateur le permet. Le transfert change la propriété ; il ne promet pas les mêmes pixels sur tous les navigateurs, systèmes, moteurs graphiques ou ensembles de polices.
Définissez les entrées, les messages, le résultat attendu, les erreurs, l'annulation et le nettoyage. Un Worker n'est pas une frontière de sécurité : le code de la même origine conserve ses autorisations et les données transmises doivent rester nécessaires à la tâche.
Tester un parcours complet et visible
Une page vide prouve seulement qu'un script a démarré. Testez le parcours pris en charge : créer le Worker, transférer ou créer la surface, envoyer des données synthétiques représentatives, attendre un message prêt ou erreur, afficher le résultat et terminer le Worker normalement. Un état textuel ou une autre alternative accessible doit rester aligné avec le rendu.
Conservez la même version d'application et de navigateur, famille de profil, viewport, échelle, route et politique de stockage lors d'une comparaison. Décrivez le résultat visible en langage simple, par exemple : « le graphique est lisible et son résumé est disponible ».
Comprendre le transfert et le cycle de vie
HTMLCanvasElement.transferControlToOffscreen() transfère le contrôle d'un canvas à un OffscreenCanvas. L'élément d'origine ne peut plus le contrôler. Le Worker reçoit l'objet via un message dont la liste de transfert l'inclut. Considérez cette remise comme unidirectionnelle et définissez le comportement d'une initialisation répétée.
Un Worker peut échouer avant le premier dessin, pendant un message ou durant l'arrêt. Gérez error, messageerror, les messages d'erreur applicatifs et l'annulation. Libérez les références et terminez le Worker à la fin. Les messages après l'arrêt doivent produire une erreur compréhensible, pas une perte silencieuse.
Aligner rendu et accessibilité
Les pixels Canvas ne remplacent ni le texte, ni les données tabulaires, ni l'interaction clavier, ni un état annoncé. Fournissez un nom, un résumé ou une vue de données accessible et mettez-la à jour lorsque le Worker signale un nouvel état. Si OffscreenCanvas est indisponible, utilisez un repli documenté : canvas sur le thread principal, image ou tableau.
Le rendu peut varier selon l'implémentation du navigateur, l'échelle, les polices, la gestion des couleurs et le backend graphique. Définissez l'acceptation par les capacités prises en charge et les résultats visibles. Ne promettez pas une identité bit à bit entre hôtes sauf si le produit la prend en charge et la vérifie.
Confidentialité et limites d'origine
Les Workers ne suppriment pas les règles d'origine. Des images ou médias cross-origin peuvent rendre un canvas non origin-clean, et le navigateur limitera alors la lecture des pixels. Expliquez cette limite plutôt que de chercher à la contourner. N'envoyez pas de pixels bruts, de données de compte ou d'identifiants stables au Worker sans nécessité métier.
BotBrowser fournit une protection déterministe fondée sur le profil pour les surfaces de lecture Canvas documentées. Elle peut aider un profil pris en charge à produire un résultat reproductible dans un parcours autorisé, mais ne remplace pas le modèle de sécurité origin-clean, ne fournit pas la solution d'accessibilité et ne garantit pas le même ordonnancement ou rendu du Worker sur chaque hôte. Un profil BotBrowser ne promet ni anonymat ni acceptation par un site.
Créez des lignes distinctes pour la version, la plateforme, le mode headless ou headed, le chemin graphique, le support Worker, le support OffscreenCanvas, le repli, le stockage et le résultat visible. Rejouez la ligne acceptée après une mise à jour du navigateur, du profil, de l'image hôte, des graphiques ou de l'application.
Si une ligne diffère, classez d'abord le résultat : capacité absente, erreur applicative, variation dans la limite documentée ou repli incomplet. Gardez le paquet accepté disponible pendant que le responsable rejoue le même parcours et note la décision.
Liste pratique
- Définissez les messages, l'annulation, les erreurs et le nettoyage du Worker.
- Testez le transfert de propriété et le repli non pris en charge.
- Synchronisez le rendu visuel et l'état accessible.
- Considérez origin-clean comme une limite de sécurité du navigateur.
- Séparez la capacité BotBrowser de la responsabilité applicative.
- Notez navigateur, profil, hôte, chemin graphique et résultat visible.
Sources publiques : WHATWG HTML Canvas, MDN Web Workers API, MDN OffscreenCanvas et protection Canvas BotBrowser.
À lire aussi : Cohérence entre realms du navigateur et confidentialité et Rôle et confidentialité de l'API Canvas.
Sources
WHATWG HTML Canvas, MDN Web Workers API, MDN OffscreenCanvas et protection 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
Protection Canvas BotBrowser : https://botbrowser.io/docs/fingerprint/canvas/
Articles Connexes
Faites passer BotBrowser de la recherche à la production
Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.