Auto Refresh

Comment ça marche

Rédigé pour la version actuellement en ligne sur le Chrome Web Store.

Les permissions, et pourquoi nous en demandons si peu

Recharger un onglet selon un minuteur ne nécessite aucun accès au site. L'extension demande au navigateur de recharger ; elle ne voit jamais la page. C'est pourquoi son installation n'affiche pas l'avertissement habituel « lire et modifier toutes vos données sur tous les sites web ».

Deux fonctions seulement ont besoin de lire la page : le compte à rebours dessiné sur la page elle-même et la surveillance par mots-clés. Elles demandent l'accès à un site à la fois, la première fois que vous les y utilisez. Tout ce qui a été accordé est listé sur la page d'options et peut être révoqué site par site.

Le paquet ne contient aucun content script déclaratif. Le code de page n'est injecté que dans les onglets que vous avez autorisés, via chrome.scripting — sur un site que vous n'avez pas autorisé, pas une ligne de notre code ne s'exécute.

Intervalles, horaires et heures exactes

L'intervalle fixe se répète toutes les N secondes. L'aléatoire tire une nouvelle valeur dans une plage à chaque cycle, utile quand un motif de requêtes rythmiquement identique n'est pas souhaitable. Le personnalisé accepte heures, minutes et secondes.

Un horaire limite une règle aux jours choisis et à une plage début–fin. Une plage dont la fin précède le début est traitée comme franchissant minuit, donc 22:00 → 02:00 se comporte comme vous l'attendez.

Les heures exactes remplacent complètement l'intervalle : indiquez 09:30 et 14:00 et la page se recharge à ces moments, en basculant au lendemain une fois qu'ils sont passés.

Le compte à rebours dessiné sur la page

L'extension peut dessiner un petit compte à rebours sur la page elle-même, pour voir le temps restant sans ouvrir la fenêtre de la barre d'outils. Déplacez-le où vous voulez ; la position est mémorisée par règle en pourcentage du viewport, elle reste donc en place quand la fenêtre est redimensionnée.

C'est le seul confort qui exige un accès en lecture à un site. Désactivez-le et les rechargements minutés continuent sans la moindre permission — d'où le choix d'en faire une option par règle plutôt qu'un réglage global.

Le mode compact supprime le texte et ne laisse que les chiffres, pour une page que vous surveillez sur un écran mural à l'autre bout de la pièce.

Syntaxe des expressions

Le texte brut correspond sans distinction de casse n'importe où dans le texte visible.

Les expressions régulières s'écrivent entre barres obliques avec des drapeaux optionnels : /\$\d+(\.\d{2})?/i. Les motifs nus préfixés par $ sont aussi acceptés quand vous collez des règles venues d'ailleurs.

Les sélecteurs CSS et XPath ciblent des éléments plutôt que des mots. XPath commence par // ou par un point.

Les expressions booléennes combinent tout le reste : (In Stock OR Available) AND NOT Sold Out. Ne mettez une phrase entre guillemets que si elle contient l'un de ces mots-clés.

Plusieurs expressions sur une même surveillance sont combinées par OR. Quand il vous faut un AND, écrivez une seule expression booléenne plutôt que de compter sur une règle implicite.

Des règles toutes prêtes

Des modèles prêts à l'emploi couvrent les situations pour lesquelles cet outil sert réellement : un article qui revient en stock, un prix qui change, une nouvelle offre d'emploi, un build qui se termine, un tableau de bord interne qui se met à renvoyer un 500.

En choisir un remplit à la fois l'expression et un intervalle sensé — trente secondes pour un réassort, dix minutes pour une page carrières — parce que le bon intervalle fait autant partie de la recette que les mots. Tout reste modifiable ensuite.

Les modèles sont livrés dans l'extension plutôt que téléchargés. Les récupérer à la demande signifierait que nous pourrions voir qui surveille quoi et quand — précisément ce que nous promettons de ne pas savoir.

Désigner un élément plutôt qu'écrire un sélecteur

Le sélecteur visuel met en évidence les éléments au passage de la souris ; un clic écrit le sélecteur pour vous. Utilisez-le partout où un sélecteur CSS est demandé — la zone surveillée, une cible de clic ou la valeur à extraire.

Il préfère une ancre stable comme id ou data-testid à un chemin positionnel du type div:nth-child(3) > span. Les chemins positionnels cassent dès qu'un site ajoute une bannière ; les ancres par attribut survivent généralement à une refonte.

Si un sélecteur casse malgré tout, la réparation par IA prend l'ancien sélecteur plus un fragment de la nouvelle page et propose un remplacement, avec un indice de confiance que vous jugez avant d'accepter.

Apparaît, disparaît, n'importe quel changement

« Apparaît » se déclenche quand une correspondance surgit. « Disparaît » se déclenche quand toutes les expressions cessent de correspondre — pratique pour attendre qu'un message « épuisé » ou de maintenance s'en aille.

« N'importe quel changement » n'a besoin d'aucun mot-clé. Il prend une empreinte du texte visible et alerte quand l'empreinte bouge. Le premier scan ne fait qu'établir une référence, une règle neuve ne se déclenche donc jamais immédiatement.

Les empreintes ignorent délibérément le HTML brut. Nonces, horodatages et scripts inline changent à presque chaque chargement : hacher le balisage alerterait en permanence.

Options de scan

Attendre avant de scanner laisse aux pages dynamiques le temps de s'afficher. Si une surveillance ne se déclenche jamais sur un site qui correspond manifestement, c'est presque toujours la raison.

Restreindre une surveillance à une zone via un sélecteur CSS écarte tout le mobilier de la page et reste le moyen le plus efficace de réduire les faux positifs.

Scanner le code HTML plutôt que le texte visible fait aussi correspondre le balisage caché. C'est une option de développeur ; elle trouvera des choses que personne ne peut voir.

Interactions avec la page

Une cible d'interaction est un sélecteur CSS avec un XPath de secours optionnel : elle sert à fermer une pop-up ou un bandeau cookies, déplier une section repliée ou basculer sur le bon onglet. Elle se déclenche soit après chaque rechargement, soit uniquement quand la surveillance se déclenche, et les cibles s'exécutent dans l'ordre.

Utilisez le sélecteur visuel plutôt que d'écrire les sélecteurs à la main — il préfère id et data-testid aux chemins positionnels, ce qui résiste bien mieux aux refontes de site.

La détection de captcha met la règle en pause et vous alerte. L'extension ne tente ni de résoudre, ni de contourner, ni de déjouer un défi de quelque façon que ce soit.

Rotation kiosque

Donnez à une règle une liste d'URL, une par ligne, et l'onglet les parcourt au rythme du minuteur au lieu de recharger la même page. C'est le mode qu'il vous faut pour un écran mural ou un moniteur d'appoint affichant plusieurs tableaux de bord tour à tour.

Le curseur de rotation vit avec l'état d'exécution de la règle : un redémarrage du navigateur ou un service worker suspendu reprennent à la bonne URL au lieu de recommencer la liste.

Les surveillances continuent de s'appliquer pendant la rotation, ce qui veut dire qu'une seule règle peut faire tourner quatre tableaux de bord et vous alerter dès que l'un d'eux affiche une erreur.

Extraire une valeur dans le temps

Désignez un prix, un stock ou un classement et chaque vérification enregistre ce qu'il affichait. Les nombres sont extraits de leur environnement — symboles monétaires et séparateurs de milliers sont retirés — si bien que 1 299,00 € devient un nombre que vous pouvez tracer et comparer.

Un seuil transforme la série en alerte : en dessous d'un chiffre, au-dessus d'un chiffre, ou une variation en pourcentage depuis le dernier relevé. Sans seuil, la série est enregistrée discrètement et n'apparaît que lorsque vous allez la consulter.

Tout est exportable en CSV. Le graphique du panneau est volontairement une ligne unique sans axes : le panneau fait 320px de large, et c'est l'export qui sert à lire précisément.

Historique des changements

Chaque fois qu'une surveillance se déclenche, l'heure, la page et le texte correspondant sont consignés. C'est ce qui rend une veille sans surveillance digne d'être laissée en marche : des heures plus tard, vous voyez exactement ce qui s'est passé et quand, au lieu de découvrir une notification manquée.

Les instantanés conservent le texte environnant au moment du déclenchement, ce qui permet de comparer avant et après au lieu de savoir seulement que quelque chose a bougé.

L'historique local est un tampon circulaire dont vous fixez la taille dans les options ; les entrées les plus anciennes disparaissent à mesure que de nouvelles arrivent. Une rétention plus longue vit dans le compte, et uniquement si vous activez la synchronisation cloud.

À quoi sert l'IA

La création de règles prend une phrase — « préviens-moi quand c'est de nouveau en stock et sous 200 $ » — et renvoie une expression, un mode et un intervalle suggéré. C'est le chemin le plus rapide pour contourner la syntaxe, pour ceux qui n'apprendront jamais les expressions régulières et n'ont pas à le faire.

Le résumé de changement prend le texte avant et après un déclenchement et dit en une ligne ce qui a réellement changé — ce qui compte sur une page où la différence utile est enfouie sous les horodatages et les publicités rotatives.

La classification de changement juge si une différence est significative ou du bruit, et la réparation de sélecteur propose un remplacement quand une refonte en casse un. Les quatre s'exécutent sur nos serveurs : il n'y a aucune clé de modèle dans le paquet de l'extension, et les requêtes transportent le fragment analysé, pas un historique de navigation.

Alertes

Dans le navigateur : une notification, un son, la mise en évidence de la correspondance sur la page, ou l'onglet ramené au premier plan.

Hors du navigateur : e-mail, webhook, Telegram, Discord ou Slack. Configurez-les dans le tableau de bord ; ils demandent un compte et un forfait Pro.

Les alertes ne sont pas réessayées. Un avis de réassort qui arrive dix minutes trop tard est pire qu'inutile : un échec d'envoi est signalé plutôt que mis en file.

Chaque canal ci-dessous a sa propre configuration dans le tableau de bord, lequel renvoie directement à ces paragraphes.

E-mail

Ajoutez l'adresse dans le tableau de bord et nous lui envoyons un unique e-mail de confirmation. Le canal reste muet tant que le lien qu'il contient n'est pas ouvert ; ce lien fonctionne une fois et expire au bout de 24 heures.

Cette double confirmation n'est pas une formalité. Sans elle, n'importe quel titulaire de compte pourrait saisir l'adresse d'un inconnu et faire livrer par notre domaine le texte de son choix — la forme même d'un relais de messagerie ouvert, et le moyen le plus rapide de perdre une réputation d'expéditeur. Le bouton Tester ne peut donc pas confirmer une adresse ; seule une adresse déjà confirmée peut être testée.

L'e-mail est le seul canal décompté d'un quota quotidien, parce que c'est le seul que nous payons. Les e-mails de confirmation ne comptent pas, mais en renvoyer un est limité en fréquence.

Webhook

Collez un endpoint https:// que vous contrôlez. Nous envoyons en POST du application/json de la forme { source, title, body, url, at } : le titre et le corps du déclenchement, la page où il a eu lieu, et un horodatage ISO.

Une tentative, huit secondes de délai, aucun réessai. Des en-têtes personnalisés peuvent être stockés avec le canal lorsqu'il vous faut un jeton d'authentification de votre côté.

L'URL doit être en https, et les hôtes qui se résolvent vers des plages privées ou link-local sont rejetés à l'ajout du canal — y compris l'adresse de métadonnées cloud. Ce contrôle existe pour que ce formulaire ne puisse pas servir à faire sonder un réseau interne par nos serveurs pour le compte de quelqu'un.

Telegram

Telegram demande deux valeurs, et le tableau de bord réclame les deux : un token de bot et un chat id. Écrivez à @BotFather, envoyez /newbot et copiez le token renvoyé. Envoyez ensuite n'importe quel message à votre nouveau bot — un bot ne peut pas ouvrir une conversation avec vous — puis lisez chat.id sur https://api.telegram.org/bot<token>/getUpdates.

Nous appelons sendMessage de la Bot API de Telegram avec votre token. Le token vit sur votre compte, ne sert à rien d'autre et n'est jamais confié à l'extension ; le révoquer dans BotFather coupe l'envoi immédiatement.

Discord

Paramètres du serveur → Intégrations → Webhooks → Nouveau webhook, choisissez le salon, puis Copier l'URL du webhook et collez-la dans le tableau de bord.

Nous envoyons en POST un embed Discord portant le titre, le texte correspondant et un lien vers la page. L'URL est elle-même l'identifiant — quiconque la détient peut publier dans ce salon — traitez-la donc comme un secret. Supprimer le webhook dans Discord le révoque instantanément, sans rien à changer chez nous.

Slack

Dans votre app Slack, sous Incoming Webhooks, activez-les, ajoutez-en un à l'espace de travail, choisissez le canal et copiez l'URL hooks.slack.com.

Nous envoyons en POST { text } avec le titre, le texte correspondant et l'URL de la page. Le webhook est lié au seul canal choisi et constitue lui-même l'identifiant ; révoquez-le dans Slack pour arrêter l'envoi.

Quand Chrome gèle un onglet en arrière-plan

L'économiseur de mémoire de Chrome supprime les onglets qu'il croit inactifs, ce qui interrompt le cycle de rechargement. L'extension repère un onglet supprimé et le recharge pour le ramener.

Garder la fenêtre visible évite complètement le problème. « Garder l'ordinateur éveillé » dans les options empêche la mise en veille du système d'avoir le même effet pendant la nuit.

Synchronisation, appareils et ce qui quitte votre machine

Sans compte, rien ne quitte votre navigateur.

Avec la synchronisation cloud activée, nous stockons les règles que vous avez écrites et les déclenchements qu'elles ont produits. Nous ne stockons pas — et n'avons aucun intérêt pour — la liste des sites que vous visitez.

La fusion se fait sur l'appareil, règle par règle, selon la date de dernière modification : modifier sur un portable n'écrase jamais ce qu'un poste fixe a mis en place. Les règles liées à un onglet ne se synchronisent jamais, car un identifiant d'onglet n'a aucun sens sur une autre machine.

La période d'essai, et ce que garde le forfait gratuit

L'essai dure sept jours avec tout débloqué, décompté en local. Il ne demande ni compte, ni carte, et il n'y a rien à annuler — à la fin, les fonctions Pro passent en lecture seule au lieu de disparaître, donc rien de ce que vous avez configuré n'est perdu.

Le palier gratuit se veut réellement utilisable plutôt qu'une démo : règles de rechargement illimitées, toutes les options de la couche de rechargement, et trois surveillances en texte brut. Les intervalles aléatoires, les sons et les notifications ne sont pas comptés, parce que facturer à l'alerte est justement ce qui rend les extensions concurrentes pénibles au quotidien.

Ce que Pro ajoute, c'est l'échelle et le cloud : surveillances illimitées, expressions avancées, planification, interactions avec la page, extraction, historique, IA et alertes qui sortent du navigateur. La formule à vie offre le même ensemble de fonctions, avec un quota d'IA réinitialisé chaque année plutôt que chaque mois — les coûts d'inférence, eux, se répètent même quand le paiement ne se répète pas.