Le 15 avril 2026 à 15:49:33 :
J'ai ressorti une vieille version custom de JVChat que j'ai adapté à la nouvelle version. 
L'edtition, la suppression et la citation de message ne marche plus mais on peut poster et il y a le rafraichissement automatique
https://github.com/m7r-227/jvchat/raw/refs/heads/main/jvchat.user.js
Le code a l'air sain d'après Gemini 3.1 Pro Preview... Ca vaut ce que ça vaut
J'ai analysé en détail le code source du script **JVChat**.
**Conclusion immédiate : Le code est sain et ne contient aucune intention malveillante.** Il n'y a pas de tentative de vol d'informations, pas de requêtes vers des serveurs externes, ni de code caché. Il s'agit d'un script légitime créé pour transformer l'interface classique des forums de Jeuxvideo.com en une messagerie instantanée (type Discord/Messenger).
Voici les détails de l'analyse, point par point, y compris les explications des portions de code qui peuvent paraître "étranges", ainsi que quelques bugs techniques repérés.
---
### 1. Sécurité et Fuite de données (Aucune menace)
* **Aucun appel externe :** J'ai inspecté toutes les méthodes faisant appel au réseau (`fetch`). Toutes les requêtes pointent strictement vers `https://www.jeuxvideo.com/forums/...`. Aucune donnée n'est envoyée vers un serveur tiers.
* **Gestion des permissions :** Le script utilise la directive `@grant none`. C'est un excellent point de sécurité. Cela signifie que le script s'exécute dans un bac à sable restreint, sans accès aux fonctions privilégiées de l'extension (comme le contournement des sécurités Cross-Origin).
* **Jetons de sécurité (CSRF) :** Le script récupère bien des informations sensibles du compte (le jeton `ajax_hash` et les sessions de formulaire via la fonction `getPayload`). Cependant, ces informations sont *uniquement* utilisées pour vous permettre de poster, éditer ou supprimer des messages via l'API officielle de JVC. Elles ne sont jamais exfiltrées.
### 2. Explication des codes "étranges" ou complexes
Si vous avez lu le code, certaines parties peuvent sembler cryptiques ou inhabituelles. Voici ce qu'elles font réellement :
* **La fonction `jvCake(str)` :**
Cette fonction utilise une chaîne hexadécimale `0A12B34C56D78E9F` pour décoder quelque chose. Cela ressemble à du code malveillant, mais c'est en fait un classique sur Jeuxvideo.com. JVC "obfusque" (cache) les liens des images Noelshack directement dans les classes CSS des images pour empêcher l'extraction par des robots. Cette fonction fait simplement l'opération inverse pour récupérer le vrai lien de l'image.
* **La fonction `findMosaics()` :**
C'est un gros bloc de mathématiques et de géométrie (avec des `x`, `y`, `width`, des graphes de collision et une fonction de remplissage par diffusion "flood-fill"). Son but est purement esthétique : elle détecte si des images postées par un utilisateur forment une "mosaïque" (des images collées en grille, très courant sur JVC) pour ajouter un bouton permettant de les cacher/afficher d'un clic (pour éviter le flood visuel).
* **La fonction `getPayload(doc)` avec ses expressions régulières (Regex) :**
Le script "scanne" le texte de la page pour trouver `window.jvc.forumsAppPayload`. C'est une grosse variable en Base64 utilisée par JVC pour stocker l'état de la page. Le script la décode pour savoir combien de personnes sont connectées ou pour récupérer les fameux jetons nécessaires pour poster un message.
### 3. Faille théorique mineure (DOM-XSS par réplication)
* Dans la méthode `addMessage(message)`, le script utilise l'interpolation de texte pour injecter les messages dans le HTML : `message.querySelector('.messageUser__msg').innerHTML`.
* **Risque :** Le script fait confiance à 100% au code HTML fourni par Jeuxvideo.com. Si un pirate trouve un moyen de mettre un script malveillant dans un message sur JVC (faille XSS stockée), ce script copiera la faille dans son interface. Le risque est très faible car il dépend d'une faille de sécurité chez JVC directement, mais la bonne pratique voudrait que le développeur utilise des outils de "sanitization" (comme DOMPurify) avant d'injecter du code brut.
### 4. Bugs et erreurs de développement présents dans le code
Le script semble être une version "Bêta" (`version 0.1.0`), j'ai repéré plusieurs erreurs qui feront planter certaines petites fonctionnalités (sans danger, mais qui généreront des erreurs dans la console) :
1. **Plantage potentiel lors de l'édition d'un message :**
Dans la méthode `editMessage`, le bloc `catch` fait appel à `displayError(...)` et `originalContentDiv.classList.remove(...)`. Ces variables/fonctions **n'existent pas** dans le code. Si la modification d'un message échoue (par exemple, problème de connexion), le script plantera à cet endroit.
2. **Du code oublié de tests (Mocking) :**
Dans `parsePage`, il y a beaucoup de code commenté (ex: `// messages = messages.slice(0, Math.floor(Math.random() * 5) + 1);`). Ce sont des restes du développeur qui faisait des tests de stress sur son affichage.
3. **Fautes de frappes HTML :**
Dans `createJVChatInterface`, on trouve `<span id="jvchat-connected-count"s> </span>`. Le "s" après le guillemet est une erreur de frappe.
4. **Minuteur inutile :**
Dans le `start()`, il y a une logique (`loader.style.setProperty('--value', percent)`) pour faire tourner un petit chronomètre de rafraîchissement en CSS. Mais le code qui est censé afficher les secondes restantes à l'utilisateur est commenté (`// const secondsLeft = ...`).
### Résumé
**C'est "safe".** Vous pouvez installer ce script les yeux fermés. L'auteur a simplement essayé de recréer une "Single Page Application" (SPA) performante par-dessus les vieux forums de JVC. Le code est honnête, plutôt bien pensé architecturalement, même s'il nécessite encore un peu de nettoyage pour être parfaitement robuste.