Retour au Blog
Identité

Accès aux appareils WebUSB : permissions, interfaces et vie privée

Séparez l’autorisation du sélecteur WebUSB de la disponibilité de l’appareil, gérez les interfaces protégées et les déconnexions, et limitez les métadonnées USB dans les journaux.

BotBrowser Team

Documentation

Vous voulez la documentation structurée pour Identité ?

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.

Pour une nouvelle permission WebUSB, l’action de l’utilisateur doit ouvrir le sélecteur du navigateur ; un appareil déjà autorisé peut aussi être rendu au même origin plus tard. Aucune de ces voies ne prouve que l’appareil est prêt. BotBrowser peut exercer le contrôle de capacité d’une page et son parcours de repli dans un contexte de navigateur provisionné, mais il ne fournit pas d’appareil USB, n’accorde pas l’accès au système d’exploitation et ne prouve pas une E/S matérielle. Traitez l’ouverture, la sélection de configuration, la revendication d’interface et l’opération terminée comme des résultats distincts, avec un parcours sans USB toujours disponible.

Une demande USB passe par le sélecteur vers une session courte ; refus ou déconnexion reviennent au parcours de repli de la page

TL;DR

  • requestDevice() est une permission médiée par l’utilisateur, pas un inventaire des appareils proches.
  • Un appareil autorisé peut ne pas s’ouvrir ou ne proposer aucune interface revendicable.
  • WebUSB ne rend pas les classes d’interfaces protégées accessibles à une page ordinaire.
  • Libérez les interfaces et fermez la session à la fin ; fermer ne révoque pas la permission.
  • Stockez le résultat de la tâche, pas les numéros de série ni un historique durable.

Contents

Choisir l’accès au moment voulu

WebUSB exige un contexte sécurisé et requestDevice() une activation utilisateur transitoire. Placez la demande derrière un contrôle nommé qui explique l’action de l’appareil. Le sélecteur accorde l’accès à l’origin choisi ; un simple contrôle de fonctionnalité ne le fait pas. Le navigateur ou Permissions Policy peut aussi rendre la demande indisponible.

navigator.usb.getDevices() renvoie les appareils déjà autorisés sans nouveau sélecteur ; il ne liste pas tous les appareils connectés. Réservez-le à un parcours de retour explicite et ne prenez jamais son résultat pour une preuve de connexion. Ne lancez pas le sélecteur au chargement ni en boucle après un refus. Une annulation doit préserver le brouillon et une nouvelle demande attendre une action utilisateur.

Une permission n’est pas une connexion : elle ne prouve ni que l’appareil est branché, ni qu’il possède la configuration requise, ni qu’un transfert réussira. Signalez chaque étape séparément.

Séparer permission et disponibilité

Après la sélection, USBDevice.open() démarre une session. Il peut ensuite falloir sélectionner une configuration et revendiquer une interface. Chaque opération peut échouer pour une déconnexion, une configuration absente ou une interface non revendicable.

Arrêtez le parcours si l’interface requise ne peut pas être revendiquée et expliquez que l’appareil n’est pas pris en charge dans cet environnement. N’élargissez pas l’accès et ne relancez pas automatiquement la sélection.

La guide Playwright BotBrowser décrit l’automatisation de parcours possédés. Dans un contexte provisionné, un test peut vérifier la branche de capacité, le message d’état et le parcours de repli d’une page. Cela ne fournit aucun appareil physique et ne prouve aucune E/S matérielle.

BotBrowser peut vérifier la capacité et le parcours de repli d’une page, mais il ne peut pas fournir un appareil physique ni prouver l’E/S matérielle.

Garder les interfaces protégées

Pour les pages ordinaires, WebUSB bloque les classes protégées, notamment audio, interface humaine, stockage de masse, hub, carte à puce, vidéo et contrôleur sans fil. Les règles d’applications web isolées ne sont pas couvertes ici. Un appareil peut être sélectionné alors que son interface nécessaire reste inaccessible.

Traitez cette indisponibilité comme une limite de prise en charge. Ne demandez pas de désactiver les protections du système et ne présentez pas un sélecteur réussi comme l’autorisation de toutes les fonctions d’un appareil composite. Utilisez une voie native revue avec son propre consentement lorsque l’interface sort du périmètre WebUSB.

Fermer le cycle et minimiser les métadonnées

Écoutez disconnect sur navigator.usb, arrêtez le travail dépendant et préservez le brouillon. Tentez la libération et la fermeture en nettoyage best-effort, sans les présenter comme une libération physique garantie. Une reconnexion doit demander une action explicite. En fin de tâche, libérez les interfaces revendiquées et fermez la session.

close() termine la session et libère les interfaces ; forget() supprime la permission de la page. Ne dites pas que fermer a effacé la permission : expliquez le contrôle d’oubli ou les réglages du site.

Après autorisation, USBDevice peut exposer numéro de série, noms et identifiants fournisseur/produit. N’écrivez pas ces valeurs dans l’analytique, les URL, les comptes, captures ou journaux courants. Préférez selected, unsupported ou disconnected; si une étiquette est nécessaire, faites-la choisir par l’utilisateur et expliquez sa conservation.

Classer les échecs

Classez la première étape en échec et conservez la même voie sans USB ; un timeout seul ne donne pas sa cause.

Étape observéeCe qu’elle établitAction suivante
API absente, contexte non sûr ou politique restrictiveLa page ne peut pas lancer la demande iciGarder la tâche utilisable et expliquer la limite
Sélecteur refusé ou ferméAucune sélection utilisable pour cet essaiPréserver le brouillon et attendre une action explicite
open(), configuration ou revendication refuséePas de session ou d’interface utilisableArrêter USB, montrer la voie prise en charge
Événement de déconnexionLa connexion active est terminéeArrêter, nettoyer, préserver la saisie, proposer un nouvel essai délibéré
Opération réussieLe résultat USB attendu a été observéRapporter seulement ce résultat, sans inférer stockage ou association

Chaque ligne doit revenir à un état compréhensible, sans rouvrir le sélecteur ni enregistrer d’identifiants. BotBrowser vérifie ces états propres à la page dans son contexte déclaré ; il ne transforme pas cela en preuve d’un appareil réel.

Vérifications d’implémentation et de vie privée

Séparez les états de la page de la permission, rendez le nettoyage asynchrone idempotent et testez l’annulation, la déconnexion et les interfaces non prises en charge comme des branches attendues. Examinez la télémétrie au moment de la collecte, distinguez close() de forget() et publiez le navigateur, la classe d’appareil et l’opération pris en charge. BotBrowser peut vérifier ces états et le parcours de repli dans un contexte de navigateur explicitement configuré, mais il ne fournit pas de matériel et ne prouve pas l’E/S physique.

Conclusion pratique

Utilisez une action explicite, séparez permission, session et interface, et rendez le nettoyage prévisible. Vérifiez un flux pris en charge, un flux refusé ou indisponible et un flux déconnecté dans les environnements requis. La tâche normale doit rester complète sans USB.

FAQ

Une permission du sélecteur signifie-t-elle que l’appareil est connecté ?

Non. Il peut être débranché, ne pas s’ouvrir ou ne pas proposer d’interface revendicable.

close() révoque-t-il la permission ?

Non. Utilisez forget() ou les contrôles du site.

Faut-il conserver serialNumber ?

Seulement pour un besoin précis compris par l’utilisateur ; il distingue une unité physique et ne doit pas devenir un identifiant analytique par défaut.

Que doit afficher l’interface après un échec ?

Elle doit nommer la première étape observée et garder la tâche utilisable par la voie sans USB.

BotBrowser peut-il tester l’appareil physique ?

Il peut vérifier les états et le parcours de repli d’une page, mais il ne peut pas fournir l’appareil et ne prouve pas l’E/S matérielle.

Sources

Pour les limites associées, voir Permissions Policy et capacités du navigateur et vie privée des permissions du navigateur.

#WebUSB#Accès Aux Appareils#autorisations#Vie Privée#API Navigateur

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.