ruyiJS executa JavaScript a partir de Python com componentes do Firefox, um Context persistente e APIs web e de rede. O repositório oficial especifica Windows x64 e exclui janela, layout completo e renderização de páginas. Pode ser avaliado quando o resultado desejado é o valor produzido por um script. Verificar o que uma pessoa vê exige um navegador com renderização.
Em uma discussão no Reddit sobre agentes locais, kvyb lista autenticação, paginação, formulários e sites com muito JavaScript. São requisitos de automação, não uma avaliação do ruyiJS. Mais adiante, o Tabbit Browser ilustra uma opção para tarefas que precisam de um navegador real e de uma sessão existente.
Este texto usa documentação consultada em 28 de outubro de 2026. Não houve instalação do ruyiJS, benchmark nem teste de sistemas antibot. O PyPI 0.1.0 registra 22 de outubro; o repositório GitHub foi criado no dia 26. A criação do repositório não é o primeiro lançamento do pacote. O README e o PyPI atual mostravam 0.1.6.
Principais conclusões
É um ambiente JavaScript e de APIs web controlado por Python, sem interface completa do Firefox.
O README identifica SpiderMonkey e Necko. A referência ao Firefox 158 vem do projeto e não foi auditada aqui.
Confira Windows x64 e Python 3.10+ antes de avaliar recursos.
Estado persistente, recursos locais e relógio lógico permitem estudar a reprodução de scripts.
Escolha pelo resultado necessário: valor calculado, página renderizada ou tarefa supervisionada.
Visão geral do ruyiJS
| Dimensão | Documentação | Limite prático |
|---|---|---|
| Plataforma | Windows x64, Python 3.10+ | Sem instalação nativa documentada para macOS ou Linux |
| JavaScript | SpiderMonkey, estado persistente | Não comprova compatibilidade completa com Firefox |
| Rede | Necko, fetch/XHR, proxy por Context | Depende da conexão e do servidor |
| Página | DOM e subsistemas de APIs web | Não equivale a layout e renderização completos |
| Reprodução | put_resource(), relógio lógico, logs | Entradas completas e avanço explícito |
| Testes visuais | Sem renderizador completo | Use uma ferramenta que renderize páginas |
Fonte: README. O guia de motores de navegador distingue execução JavaScript e renderização.
O trabalho do Context
Python controla um processo Context isolado com SpiderMonkey, APIs web e Necko. Variáveis e funções persistem entre chamadas de eval(). Você fornece dados e recebe resultados sem abrir uma janela.
Isso responde a uma pergunta diferente de verificar se um botão está visível e pode ser clicado. A explicação sobre navegadores com agentes descreve a camada adicional de planejamento e interação. Instalar ruyiJS não comprova a presença de um planejador LLM. DOM, APIs relacionadas a Canvas, Workers e iframes precisam de validação específica; consultar o DOM não prova que a geometria completa da página seja calculada.
Comece sem rede
No Windows x64 documentado, crie um ambiente independente e fixe a versão. Estes comandos seguem a documentação; não representam uma instalação feita neste artigo:
python -m venv .venv
.venv\Scripts\activate
python -m pip install ruyijs==0.1.6Confira o PyPI. Teste primeiro uma operação simples:
from ruyijs import Context
with Context() as context:
context.eval("let count = 40")
print(context.eval("count += 2"))O resultado esperado na documentação é 42. Em seguida, use HTML e recursos sob seu controle:
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"))A documentação 0.1.0 informa hello e 42. load_page(url, html) recebe uma URL base e o HTML fornecido. Caminhos relativos usam essa base. O README atual documenta separadamente a navegação de nível superior navigate(url).
Gerencie estado, relógio e solicitações
Aplique context.configure_fingerprint(profile) antes do primeiro script para configurar Navigator, Screen, viewport e fuso horário. Isso não garante aceitação pelo site. Crie outro Context quando precisar de estado limpo. Referências JSObject e JSFunction expiram quando o Context é fechado.
O host avança tarefas agendadas, por exemplo com advance(10). O relógio lógico progride explicitamente; o relógio do sistema pode esperar tempo real. Uma promessa de rede precisa de condição de conclusão, prazo e tratamento de erros. Um único avanço curto não comprova sucesso.
put_resource() fornece respostas fixas para reprodução sem rede. Guarde HTML, versões dos scripts, configuração e resultado esperado. Use net_log() para separar falhas de rede e JavaScript, seguindo o princípio do guia de compatibilidade.
Limitações que decidem a escolha
Capturas, geometria visível e regressão visual exigem renderização. Definir viewport não acrescenta um renderizador. O histórico de alterações menciona uma correção no Wine; isso não demonstra suporte nativo ao Linux. Esta pesquisa em macOS não executou o pacote.
Os exemplos antibot são demonstrações do mantenedor. Não estabelecem uma taxa independente de sucesso nem garantem respostas futuras dos sites. Não foram medidos velocidade ou memória. Estrelas no GitHub também não validam confiabilidade.
O projeto declara MPL-2.0 e adiciona um pedido de cortesia sobre redistribuição e uso comercial. Leia a LICENSE e os avisos atuais antes de integrar. Este texto não resolve a aplicação desses termos ao seu caso.
Um fluxo com navegador real: Tabbit
Para abrir documentos em uma sessão existente e entregar uma tabela com fontes, é preciso acessar páginas e revisar os resultados. As notas do Tabbit v1.13 para a China continental documentam integração CLI para Codex, Cursor e Workbuddy operarem o navegador compartilhando o estado de login do usuário.
Configure primeiro a integração compatível com seu cliente. Esta instrução é ilustrativa; não afirma uma execução concluída nesta pesquisa:
Abra no Tabbit as documentações que eu fornecer.
Compare plataformas, requisitos de instalação e renderização.
Inclua a URL de origem e a versão ou data visível em cada afirmação.
Marque informações ausentes como desconhecidas. Não envie formulários nem altere contas.
Veja os exemplos de trabalho com Tabbit e a explicação do produto. Verifique configuração, acesso e resultado. A fonte descreve o desktop da edição da China continental; disponibilidade internacional e móvel exige confirmação separada.
Na discussão de automação do Firefox, Deep_Ad1959 relata sessões vencidas e diálogos ocasionais de consentimento. É experiência geral, não teste do Tabbit ou ruyiJS. Compartilhar login não elimina essas falhas. O guia de perfis explica os dados de sessão.
Isso não fornece a API Python Context. Nada aqui demonstra que o Tabbit incorpore ruyiJS, reproduza suas configurações de impressão digital ou execute seus exemplos. O processo isolado do ruyiJS também não herda automaticamente abas e logins do Tabbit.
Escolha pelo resultado
| Tarefa | Ponto de partida | Verificação |
|---|---|---|
| Script conhecido no Windows | Avaliar ruyiJS com entrada local | Valor correto, tempo explícito, entrada reproduzível |
| Dados já disponíveis por HTTP | Manter o cliente HTTP | Resposta correta sem acrescentar navegador |
| Capturas e layout responsivo | Ferramenta com renderização completa | Pixels, geometria e interação |
| Pesquisa com sessão existente | Fluxo configurado, incluindo Tabbit onde houver suporte | Fontes, sessão correta e revisão |
| Serviço autônomo multiplataforma | Avaliar plataforma e operação primeiro | Hosts compatíveis, recuperação e monitoramento |
O guia para escolher navegador começa pelas tarefas recorrentes. Um segundo navegador permite avaliar sem migrar tudo.
ruyiJS é um candidato para executar e reproduzir scripts na plataforma documentada. Não está estabelecido como substituto geral de automação visual. Comece com sua própria entrada e um resultado conhecido. Para tarefas supervisionadas em páginas reais, avalie a integração do Tabbit e confira as fontes retornadas.
Perguntas frequentes
O que é ruyiJS?
É um pacote Python para executar JavaScript em processos isolados com componentes Firefox e APIs web. O alvo documentado é Windows x64, sem janela nem renderização completa.
Quando foi lançado?
O PyPI registra 0.1.0 em 22 de outubro de 2026; o repositório GitHub foi criado no dia 26. A data do repositório não é o primeiro lançamento do pacote. Em 28 de outubro, README e PyPI mostravam 0.1.6.
Funciona em macOS ou Linux?
Os requisitos oficiais especificam Windows x64 e Python de 64 bits 3.10 ou posterior. Uma correção no Wine não comprova suporte nativo ao Linux ou macOS. Não foi testada instalação multiplataforma.
Substitui Playwright para capturas e testes de interface?
A documentação exclui layout e renderização completos. Capturas, regressão visual e cliques baseados em geometria exigem navegador com renderização. Consultar o DOM não verifica a aparência.
Supera automaticamente qualquer sistema antibot?
Não existe evidência para uma garantia universal. O repositório fornece exemplos específicos e informa que resultados dependem da rede e do site. Este artigo não executou esses exemplos nem mediu taxas de sucesso.
Qual a diferença para o Tabbit?
Tabbit é um navegador para usuários com recursos de IA. As notas v1.13 da China continental descrevem integração CLI para agentes com login compartilhado. Isso não substitui a API Python ou os componentes Firefox do ruyiJS.