Vidéo et sous-titres · Boîte à outils de sous-titres
Comment un fichier de sous-titres est modifié sans quitter votre appareil : API de fichier vers Blob
· Comment ça marche
sous-titres traitement du navigateur confidentialité
Les outils de fichiers de ToolAcre lisent et écrivent des fichiers à l'intérieur de l'onglet. Cet article explique les API du navigateur qui rendent cela possible pour un fichier de sous-titres, du sélecteur de fichiers au lien de téléchargement, et comment confirmer que rien n'a été téléchargé.
La transcription est confidentielle et le convertisseur souhaite que vous la téléchargiez : le problème est résolu par le traitement côté navigateur.
Une transcription de dépôt n'est pas un fichier que vous transmettez à un service Web pour savoir si la conversion fonctionne. La plupart des convertisseurs en ligne fonctionnent en mode téléchargement et retour : les octets vont à un serveur, quelque chose se produit et un résultat revient. Pour les documents confidentiels, il s’agit d’une divulgation, et cela s’est déjà produit au moment où vous voyez le résultat.
Le traitement côté navigateur supprime la question. Le fichier est ouvert par la page plutôt que de lui être envoyé, chaque transformation s'exécute sur une copie en mémoire et le résultat est réécrit sur le disque à partir du même onglet. La revendication est testable, ce qui compte plus que la revendication, car le panneau réseau montrera si une requête contenait le contenu.
Sélection d'un fichier : l'objet File – comment le navigateur donne à la page un handle sur les octets sans les envoyer nulle part
Choisir un fichier via une entrée de fichier ne transfère rien. La page reçoit un objet File, qui est un handle : un nom, une taille, un type et une référence à partir de laquelle le navigateur peut lire. La sélection d'un fichier n'est pas un téléchargement, et rien dans le maintien de ce handle ne provoque une demande. Les octets restent là où ils sont jusqu'à ce que le code les demande.
Cette distinction est la base même du traitement local, et c'est aussi pourquoi la propriété de confidentialité est une propriété du code plutôt que du navigateur. Une page contenant un objet File est parfaitement capable de le publier quelque part. Ce qui rend un outil local, c’est qu’il ne le fait pas.
Lecture de texte localement — File.text() et TextDecoder transformant les octets en indices en mémoire
La lecture du texte appelle la méthode de texte de l'API File, qui se résout en une chaîne décodée comme UTF-8. Cette chaîne est analysée en signaux en mémoire, et chaque opération ultérieure fonctionne sur ces objets de signal : le décalage ajoute des horodatages entiers en millisecondes, le nettoyage des substituts sur le texte, la validation parcourt la liste à la recherche d'erreurs d'ordre et de durée. Rien de tout cela ne touche le fichier d'origine, qui n'est jamais écrit.
Étant donné que l'analyse produit des objets simples, le fichier sur le disque reste intact même si l'onglet est fermé en cours d'édition. Il n'y a pas de copie temporaire à nettoyer ni de sortie partiellement écrite, puisque l'écriture n'a lieu que lorsqu'un téléchargement est demandé.
Pourquoi cela s'exécute sur le thread principal plutôt que dans un Web Worker, et ce que fait réellement le plafond de taille
Le plan du classeur s'attend à ce que cette étape s'exécute dans un Web Worker, et c'est le cas pour plusieurs outils ToolAcre ; les applications CSV, image et PDF déplacent chacune leur gros travail hors du thread principal. L'application de sous-titres ne le fait délibérément pas, et la raison est enregistrée dans sa propre source : un travailleur ajouterait un deuxième ensemble et un deuxième mode d'échec pour un travail qui n'en a pas besoin, car un fichier de sous-titres d'une longueur de fonctionnalité fait quelques centaines de kilo-octets et est analysé en millisecondes.
La mise en garde honnête concerne la taille plafond. Une limite de dix mégaoctets est appliquée avant l'analyse et nommée sur la page de l'outil, mais l'outil indique que la vérification est ignorée pour tout ce qui est nommé avec une extension de sous-titre, de sorte qu'un fichier de sous-titres surdimensionné charge et bloque la page plutôt que d'être refusé. C'est une conséquence réelle de l'exécution sur le thread principal, et elle est documentée plutôt que cachée.
Réécriture : Blob et attribut de téléchargement – comment le fichier modifié atteint votre disque en tant que nouveau téléchargement
La réécriture crée un Blob à partir du texte sérialisé et le transmet au navigateur sous forme de téléchargement. Le texte est enveloppé avec un type de média explicite portant un jeu de caractères UTF-8, une URL d'objet est créée pour ce Blob, une ancre portant l'attribut de téléchargement est cliquée et l'ancre est supprimée. Le fichier arrive dans le dossier des téléchargements en tant que nouveau fichier ; l'original n'est pas modifié.
La révocation est délibérément différée plutôt qu'immédiate. La révocation synchrone de l'URL de l'objet après le clic peut annuler le téléchargement dans certains navigateurs. Il est donc planifié une macrotâche plus tard, ce qui est à la fois sûr et rapide. C’est le genre de détail qui n’apparaît que lorsque les téléchargements ne démarrent pas par intermittence.
Exemple concret : observation du panneau réseau pendant une conversion et une resynchronisation complètes – un panneau silencieux de l'ouverture du fichier à l'enregistrement du fichier
Les URL d'objet sont la partie qui fuit si personne ne regarde. La leçon est écrite dans l'assistant du référentiel : un projet audité a créé des URL d'objet à plusieurs endroits et les a révoquées exactement à zéro, de sorte que chaque aperçu conservait l'intégralité de son blob pendant toute la durée de vie de l'onglet. Sur un téléphone, une poignée de pages tramées suffisent au navigateur pour tuer l'onglet.
Le remède est structurel plutôt que disciplinaire. Rien n'appelle directement l'API du navigateur ; un assistant étendu exécute votre code avec une URL et le révoque lorsque ce code est réglé, en cas de succès, en cas de lancement et de rejet, et un handle géré offre une révocation idempotente pour les cas qui survivent à une seule fonction. Un nettoyage correct est la valeur par défaut plutôt que quelque chose que chaque site d'appel doit retenir.
Ce que cela ne couvre pas : l'outil ne peut pas protéger un fichier que vous téléchargez ultérieurement ailleurs ; la confidentialité se termine là où votre flux de travail quitte l'onglet
Pour vérifier plutôt que faire confiance, ouvrez le panneau réseau avant de sélectionner le fichier et laissez-le ouvert pendant toute la tâche. Choisissez le fichier, convertissez-le, resynchronisez-le, téléchargez le résultat. Les requêtes pour la page et ses scripts apparaissent lors du chargement de la page ; ce qui ne doit pas apparaître, c'est toute requête dont la charge utile est le fichier. Conservez le journal tout au long de la session afin que rien ne soit oublié entre les étapes.
Deux qualifications honnêtes. Une page peut charger des scripts d'analyse ou de publicité provenant d'autres origines, et ceux-ci sont visibles dans le même panneau et constituent une question distincte de savoir si votre fichier a été envoyé. Et la propriété se termine par l'onglet : un outil qui traite localement ne peut pas protéger un fichier que vous envoyez ensuite par courrier électronique, synchronisez avec le stockage cloud ou collez-le dans un autre service. Le traitement local réduit l'exposition à votre propre machine ; il ne suit pas le fichier par la suite.
À retenir : votre fichier, votre onglet, votre disque – comment la boîte à outils de sous-titres fait tout le travail localement et vous permet de le vérifier
Le chemin est le descripteur de fichier, le texte en mémoire, les signaux en mémoire, le Blob, le téléchargement, et rien dans cette séquence ne nécessite un serveur. Le fichier est lu par la page plutôt que de lui être envoyé, transformé en objets et réécrit en tant que nouveau fichier, l'original restant intact.
La raison de préférer cela pour les documents confidentiels n'est pas qu'une promesse a été faite mais que la déclaration peut être vérifiée en une minute environ. Ouvrez d'abord le panneau réseau, effectuez tout le travail et lisez le journal. Un outil qui traite localement vous montrera un panneau sans demande contenant votre relevé de notes, ce qui est une garantie plus forte que n'importe quelle politique de confidentialité.