ruyiJS ejecuta JavaScript desde Python con componentes de Firefox, un Context persistente y API web y de red. El repositorio oficial especifica Windows x64 y excluye la ventana del navegador, el diseño completo y el renderizado de páginas. Es una opción para obtener resultados de scripts; comprobar una interfaz visible exige otro tipo de herramienta.
En una conversación de Reddit sobre agentes locales, kvyb enumera autenticación, paginación, formularios y sitios con mucho JavaScript. Son requisitos de automatización, no una reseña de ruyiJS. Más adelante, Tabbit Browser ilustra una vía para tareas que necesitan un navegador real y una sesión existente.
Esta explicación se basa en documentación consultada el 28 de octubre de 2026. No incluye instalación, pruebas de rendimiento ni pruebas contra sistemas antibot. PyPI 0.1.0 registra el 22 de octubre; el repositorio de GitHub se creó el 26. La fecha del repositorio no es la primera publicación del paquete. El README y PyPI actual mostraban 0.1.6.
Conclusiones principales
Es un entorno de JavaScript y API web controlado por Python, sin una interfaz completa de Firefox.
El README identifica SpiderMonkey y Necko. La referencia a Firefox 158 procede del proyecto; no es una auditoría independiente.
Requiere Windows x64 y Python 3.10 o posterior.
El estado persistente, los recursos locales y el reloj lógico permiten evaluar la reproducción de scripts.
Elige según el resultado necesario: datos calculados, una página renderizada o una tarea supervisada.
ruyiJS de un vistazo
| Dimensión | Documentación | Límite práctico |
|---|---|---|
| Plataforma | Windows x64, Python 3.10+ | Sin instalación nativa documentada para macOS o Linux |
| JavaScript | SpiderMonkey, estado persistente | No demuestra compatibilidad completa con Firefox |
| Red | Necko, fetch/XHR, proxy por Context | Depende de la red y del servidor |
| Página | DOM y subsistemas de API web | No equivale a diseño y renderizado completos |
| Reproducción | put_resource(), reloj lógico, registros | Requiere entradas completas y avance explícito |
| Pruebas visuales | Sin renderizador completo | Usa un navegador que renderice |
Fuente: README. La guía de motores de navegador distingue JavaScript y renderizado.
Qué hace Context
Python controla un proceso Context aislado con SpiderMonkey, API web y Necko. Las variables y funciones persisten entre llamadas a eval(). Puedes enviar datos y recuperar el valor de una función sin abrir una ventana.
Eso comprueba algo distinto de la visibilidad de un botón. Nuestra explicación de los navegadores con agentes describe la capa adicional de planificación e interacción. Instalar ruyiJS no acredita que incluya un planificador LLM. Las API de DOM, Canvas, Workers e iframes citadas en el README necesitan pruebas de comportamiento específicas; consultar el DOM no demuestra que se calcule la geometría completa.
Empieza con un ejemplo sin conexión
En el entorno Windows compatible, crea un entorno independiente y fija la versión. Son instrucciones derivadas de la documentación, no un registro de instalación:
python -m venv .venv
.venv\Scripts\activate
python -m pip install ruyijs==0.1.6Comprueba los requisitos en PyPI. Valida primero el paso entre Python y JavaScript:
from ruyijs import Context
with Context() as context:
context.eval("let count = 40")
print(context.eval("count += 2"))El resultado esperado según la documentación es 42. Después, carga recursos que controles:
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 documentación de 0.1.0 indica hello y 42. load_page(url, html) recibe la dirección base y el HTML suministrado. No es lo mismo que la navegación superior navigate(url) del README actual. Las rutas relativas se resuelven contra esa base.
Gestiona estado, tiempo y solicitudes
Aplica context.configure_fingerprint(profile) antes del primer script para configurar Navigator, Screen, tamaño y zona horaria. Eso no garantiza que un sitio acepte la sesión. Usa un Context nuevo cuando necesites estado limpio; las referencias JSObject y JSFunction dejan de ser válidas al cerrar su Context.
El host avanza las tareas programadas con operaciones como advance(10). El reloj lógico avanza explícitamente; el reloj del sistema puede esperar tiempo real. Una promesa de red exige condición de finalización, plazo y manejo de errores, no un único avance breve.
put_resource() sirve respuestas controladas para una prueba sin conexión. Guarda HTML, versiones de scripts, configuración y resultado esperado. Usa net_log() para separar fallos de red y de JavaScript, como explica la guía de compatibilidad web.
Límites que deciden la elección
Las capturas, las posiciones visibles y la regresión visual requieren renderizado. Configurar un viewport no añade un renderizador. El registro de cambios menciona una corrección para Wine; no demuestra soporte nativo de Linux. Esta investigación en macOS no ejecutó el paquete.
Los ejemplos antibot son demostraciones del mantenedor. No prueban una tasa universal de éxito, ni garantizan las respuestas futuras de los sitios. Tampoco se midieron velocidad o memoria. Las estrellas no sustituyen estas pruebas.
El proyecto declara MPL-2.0 y añade una petición de cortesía sobre redistribución y uso comercial. Consulta la LICENSE y los avisos actuales antes de integrar el paquete; aquí no se resuelve su aplicación a un despliegue concreto.
Un flujo con un navegador real: Tabbit
Para abrir documentación en una sesión existente y producir una tabla con fuentes, necesitas acceso a páginas y revisión del resultado. Las notas de Tabbit v1.13 para China continental documentan una integración CLI para que Codex, Cursor y Workbuddy operen el navegador compartiendo el inicio de sesión del usuario.
Configura primero la integración compatible con tu cliente. Esta instrucción es ilustrativa; no afirma que se haya ejecutado en esta investigación:
Abre en Tabbit las páginas de documentación que te proporcione.
Compara plataformas, requisitos de instalación y renderizado.
Incluye URL de origen y versión o fecha visible para cada afirmación.
Marca los datos ausentes como desconocidos. No envíes formularios ni cambies ajustes de cuenta.
Consulta los ejemplos de trabajo con Tabbit y la explicación del producto. Comprueba configuración, acceso y resultados. La fuente corresponde al escritorio de la edición de China continental; verifica por separado la edición internacional y los clientes móviles.
En la discusión sobre automatización de Firefox, Deep_Ad1959 describe sesiones caducadas y diálogos de consentimiento inesperados. Es una experiencia general, no una prueba de Tabbit o ruyiJS. Compartir una sesión no elimina esos fallos. La guía de perfiles aclara qué datos pertenecen a ella.
Tabbit no ofrece por ello la API Context de ruyiJS. No hay evidencia aquí de integración interna, controles de huella idénticos o ejecución de sus ejemplos. Tampoco ruyiJS hereda automáticamente las pestañas o la autenticación de Tabbit.
Elige por el resultado
| Tarea | Punto de partida | Comprobación |
|---|---|---|
| Ejecutar un script conocido en Windows | Evaluar ruyiJS con una prueba local | Valor correcto, tiempo explícito, entrada reproducible |
| Obtener datos ya accesibles por HTTP | Mantener el cliente HTTP | Respuesta correcta sin añadir un navegador |
| Capturas y diseño adaptable | Herramienta con renderizado completo | Píxeles, geometría e interacción |
| Investigar con una sesión existente | Flujo configurado, incluido Tabbit donde se admita | Fuentes, sesión correcta y revisión |
| Servicio desatendido multiplataforma | Evaluar plataforma y operación primero | Hosts compatibles, recuperación y monitorización |
La guía para elegir navegador parte de tareas repetidas. Un segundo navegador permite evaluar sin migrar todo.
ruyiJS es un candidato para ejecución y reproducción de scripts en su plataforma documentada. No está acreditado como sustituto general de la automatización visual. Empieza con una entrada propia y un resultado conocido; para tareas supervisadas en páginas reales, evalúa la integración de Tabbit y revisa las fuentes devueltas.
Preguntas frecuentes
¿Qué es ruyiJS?
Es un paquete Python para ejecutar JavaScript en procesos aislados con componentes Firefox y API web. La plataforma documentada es Windows x64, sin ventana ni renderizado completo.
¿Cuándo se publicó ruyiJS?
PyPI registra 0.1.0 el 22 de octubre de 2026 y el repositorio GitHub se creó el 26. La fecha del repositorio no es el primer lanzamiento. El 28 de octubre, README y PyPI mostraban 0.1.6.
¿Funciona en macOS o Linux?
Los requisitos oficiales indican Windows x64 y Python de 64 bits 3.10 o posterior. Una corrección para Wine no demuestra soporte nativo de Linux o macOS. No se probó instalación multiplataforma.
¿Sustituye a Playwright para capturas y pruebas de interfaz?
La documentación excluye diseño y renderizado completos. Las capturas, la regresión visual y los clics dependientes de geometría requieren un navegador que renderice. Consultar el DOM no comprueba la apariencia.
¿Supera automáticamente cualquier sistema antibot?
No hay evidencia de éxito universal. El repositorio aporta ejemplos concretos y advierte que los resultados dependen de la red y del sitio. Este artículo no ejecutó esos ejemplos ni midió tasas de éxito.
¿En qué se diferencia Tabbit?
Tabbit es un navegador con funciones de IA para usuarios. Sus notas v1.13 de China continental documentan integración CLI para agentes con estado de inicio de sesión compartido. Eso no sustituye la API Python de ruyiJS ni sus componentes Firefox.