ruyiJS exécute du JavaScript depuis Python avec des composants de Firefox, un Context persistant et des API web et réseau. Le dépôt officiel cible Windows x64 et exclut la fenêtre du navigateur, la mise en page complète et le rendu. Il peut convenir au calcul d'un résultat de script. Vérifier ce qu'une personne voit demande un navigateur qui effectue le rendu.
Dans une discussion Reddit sur les agents locaux, kvyb cite l'authentification, les formulaires, la pagination et les sites riches en JavaScript. Ce sont des besoins d'automatisation, pas un avis sur ruyiJS. Plus loin, Tabbit Browser illustre une solution pour les tâches qui nécessitent un vrai navigateur et une session existante.
Cet article repose sur les documents consultés le 28 octobre 2026. Aucune installation de ruyiJS, mesure de performance ou vérification antibot n'a été réalisée. PyPI 0.1.0 date du 22 octobre ; le dépôt GitHub a été créé le 26. La création du dépôt ne marque donc pas la première publication du paquet. Le README et PyPI indiquaient alors 0.1.6.
Points à retenir
ruyiJS fournit un environnement JavaScript et API web, sans interface Firefox complète.
Le README nomme SpiderMonkey et Necko. La référence à Firefox 158 vient du projet et n'a pas été auditée ici.
Vérifiez Windows x64 et Python 3.10+ avant d'évaluer les fonctionnalités.
État persistant, ressources locales et horloge logique permettent d'étudier la reproduction de scripts.
Choisissez selon le résultat attendu : valeur calculée, page rendue ou tâche supervisée.
ruyiJS en bref
| Dimension | Comportement documenté | Limite |
|---|---|---|
| Plateforme | Windows x64, Python 3.10+ | Pas d'installation native macOS ou Linux documentée |
| JavaScript | SpiderMonkey, état conservé | Ne prouve pas une compatibilité Firefox complète |
| Réseau | Necko, fetch/XHR, proxy par Context | Dépend du réseau et du serveur |
| Page | DOM et sous-systèmes d'API web | Pas de mise en page et de rendu complets |
| Reproduction | put_resource(), horloge logique, journaux | Entrées complètes et progression explicite requises |
| Tests visuels | Pas de moteur de rendu complet | Employer un navigateur avec rendu |
Source : README. Notre guide des moteurs de navigateur distingue exécution JavaScript et rendu.
Ce que fait Context
Python pilote un processus Context isolé contenant SpiderMonkey, les API web et Necko. Les variables et fonctions restent accessibles entre appels à eval(). Python transmet des données et récupère le résultat, sans fenêtre visible.
La question posée diffère d'un test qui vérifie qu'un bouton est visible et cliquable. Le guide des navigateurs agentiques explique la couche de planification et d'interaction supplémentaire. Installer ruyiJS ne démontre pas la présence d'un planificateur LLM. DOM, API liées à Canvas, Workers et iframes restent des sous-systèmes à vérifier selon votre script. Lire le DOM ne prouve pas que la géométrie d'une page est calculée.
Commencer hors ligne
Sur Windows x64, créez un environnement Python séparé et fixez la version. Ces commandes proviennent de la documentation ; ce ne sont pas les traces d'un test effectué ici :
python -m venv .venv
.venv\Scripts\activate
python -m pip install ruyijs==0.1.6Vérifiez les exigences sur PyPI. Commencez par un calcul sans réseau :
from ruyijs import Context
with Context() as context:
context.eval("let count = 40")
print(context.eval("count += 2"))Le résultat attendu selon la documentation est 42. Ajoutez ensuite du HTML et une ressource sous votre contrôle :
from ruyijs import Context
with Context() as context:
context.put_resource("https://example.test/app.js", "window.answer = 42")
context.load_page("https://example.test/", '''
<script src="/app.js"></script><p id="message">hello</p>
''')
print(context.eval("document.querySelector('#message').textContent"))
print(context.eval("answer"))La documentation 0.1.0 donne hello puis 42. load_page(url, html) prend une adresse de base et le HTML fourni. Les chemins relatifs dépendent de cette base. Le README actuel documente séparément navigate(url) pour la navigation de premier niveau.
Gérer l'état, le temps et le réseau
Appliquez context.configure_fingerprint(profile) avant le premier script pour régler Navigator, Screen, la taille et le fuseau horaire. Cela ne garantit pas l'acceptation par un site. Créez un nouveau Context pour repartir d'un état propre. Les références JSObject et JSFunction expirent à la fermeture du Context.
L'hôte fait avancer les tâches planifiées avec advance(10), par exemple. L'horloge logique progresse explicitement ; le mode système peut attendre réellement. Une promesse réseau demande un critère d'arrêt, une échéance et la gestion des erreurs. Un bref avancement unique ne prouve pas sa résolution.
put_resource() fournit des réponses fixes pour un scénario hors ligne. Conservez le HTML, les versions des scripts, la configuration et le résultat attendu. net_log() aide à séparer erreur JavaScript et requête défaillante, comme dans notre guide de compatibilité web.
Les limites qui orientent le choix
Captures d'écran, géométrie visible et régression visuelle nécessitent le rendu. Régler le viewport n'ajoute pas de moteur. Le journal des modifications mentionne une correction Wine ; cela ne démontre pas une prise en charge Linux native. Cette recherche sous macOS n'a pas exécuté le paquet.
Les exemples antibot restent des démonstrations du mainteneur, sans taux de réussite indépendant ni garantie sur les futures réponses des sites. Aucune mesure de vitesse ou de mémoire n'est fournie ici. Les étoiles du dépôt ne valident pas la fiabilité.
Le projet indique MPL-2.0 et ajoute une demande de courtoisie concernant redistribution et usage commercial. Lisez la LICENSE et les avis actuels avant intégration ; cet article ne tranche pas leur application à votre déploiement.
Un flux avec un vrai navigateur : Tabbit
Pour ouvrir plusieurs documentations avec une session existante et produire un tableau sourcé, il faut accéder aux pages puis vérifier les résultats. Les notes Tabbit v1.13 de l'édition Chine continentale décrivent une intégration CLI permettant à Codex, Cursor ou Workbuddy de piloter le navigateur en partageant l'état de connexion de l'utilisateur.
Configurez l'intégration prise en charge par votre client. Cette consigne illustre un usage et ne prétend pas avoir été exécutée ici :
Ouvre dans Tabbit les documentations que je fournis.
Compare plateformes, installation et prise en charge du rendu.
Pour chaque affirmation, donne l'URL source et la version ou date visible.
Indique les informations inconnues. Ne soumets aucun formulaire et ne modifie aucun compte.
Les exemples de travail Tabbit et la présentation du produit donnent du contexte. Vérifiez configuration, accès et résultats. La source concerne le produit de bureau en Chine continentale ; contrôlez séparément disponibilité internationale et mobile.
Dans la discussion sur Firefox, Deep_Ad1959 décrit des sessions périmées et des fenêtres de consentement occasionnelles. C'est un retour général, pas un test de Tabbit ou ruyiJS. Partager une connexion ne supprime pas ces problèmes. Le guide des profils précise les données liées à la session.
Ce flux ne fournit pas l'API Python Context. Rien ici ne démontre que Tabbit embarque ruyiJS, reproduit ses réglages d'empreinte ou exécute ses exemples. Un processus ruyiJS n'hérite pas automatiquement des onglets ou connexions de Tabbit.
Choisir selon le résultat
| Tâche | Point de départ | Vérification |
|---|---|---|
| Script connu sur Windows | Évaluer ruyiJS avec une entrée locale | Valeur correcte, temps explicite, entrée reproductible |
| Données déjà disponibles par HTTP | Garder le client HTTP | Réponse correcte sans ajouter un navigateur |
| Capture et mise en page adaptative | Outil de navigateur avec rendu complet | Pixels, géométrie et interactions |
| Recherche avec une session existante | Flux configuré, dont Tabbit si compatible | Sources, session correcte et relecture |
| Service autonome multiplateforme | Étudier plateforme et exploitation | Hôtes compatibles, reprise et surveillance |
Notre guide de choix d'un navigateur part des tâches récurrentes. Un second navigateur permet une évaluation sans tout migrer.
ruyiJS est un candidat pour exécuter et reproduire des scripts sur sa plateforme documentée. Il n'est pas établi comme remplacement général des tests d'interface avec rendu. Commencez par votre propre entrée et un résultat connu. Pour un travail supervisé dans des pages réelles, évaluez l'intégration Tabbit et contrôlez les sources retournées.
Questions fréquentes
Qu'est-ce que ruyiJS ?
Un paquet Python pour exécuter JavaScript dans des processus isolés avec des composants Firefox et des API web. Il cible Windows x64, sans fenêtre ni rendu complet.
Quand ruyiJS a-t-il été publié ?
PyPI date 0.1.0 du 22 octobre 2026 ; le dépôt GitHub a été créé le 26. La date du dépôt ne correspond pas à la première publication du paquet. Le 28 octobre, README et PyPI indiquaient 0.1.6.
Fonctionne-t-il sous macOS ou Linux ?
Les exigences officielles précisent Windows x64 et Python 64 bits 3.10 ou ultérieur. Une correction Wine ne démontre pas de support Linux ou macOS natif. Aucune installation multiplateforme ne fut testée ici.
Remplace-t-il Playwright pour les captures et tests d'interface ?
Les documents excluent mise en page et rendu complets. Captures, régression visuelle et clics dépendant de la géométrie demandent un navigateur avec rendu. Lire le DOM ne vérifie pas une image.
Contourne-t-il tous les systèmes antibot ?
Aucune garantie universelle ne repose sur les preuves disponibles. Les exemples du dépôt dépendent du réseau et des réponses actuelles des sites. Cet article ne les a pas exécutés ni mesuré leur réussite.
Quelle différence avec Tabbit ?
Tabbit est un navigateur destiné aux utilisateurs avec des fonctions IA. Les notes v1.13 de Chine continentale décrivent une intégration CLI pour les agents partageant la connexion. Ce flux ne remplace pas l’API Python ni les composants Firefox de ruyiJS.