Funcionalidades

Ferramentas de browser

As cinco ferramentas de browser do Ploy: abrir, ler, procurar, clicar e escrever, a funcionar no painel da janela, e as regras que as protegem.

Para que serve

O Ploy abre páginas web na própria janela, lê o que lá está e usa-as: segue ligações, preenche campos, carrega em botões. É para tarefas como ler o preço de um produto numa página, preencher um formulário ou seguir uma ligação até ao contacto que procuras. Para pesquisar um assunto na web, com várias fontes e referências, o modelo certo é o Veta.

As ferramentas existem para um modelo pequeno. O plugin de browser completo precisa de um identificador de separador em cada chamada e só se alcança pelo Code Mode, que está desligado para os modelos locais. Estas cinco tratam de um separador por conversa, devolvem a página depois de cada ação e mantêm o texto curto o bastante para um contexto de 16 mil tokens.

As cinco ferramentas

Ferramenta O que faz
browser_open(url) Abre um endereço completo, como https://example.com ou localhost:3000, e devolve o texto da página.
browser_read() Volta a ler a página aberta.
browser_find(texto) Procura uma palavra ou frase na página e devolve as linhas onde aparece. Serve quando a página foi cortada.
browser_click(ref) Clica num elemento pelo seu identificador, por exemplo e12.
browser_type(ref, texto) Escreve num campo pelo seu identificador, substituindo o que lá estava.

O texto de cada página traz os elementos marcados com identificadores como e12, e a resposta a cada ação é a página como ficou, com identificadores novos. O modelo só pode usar identificadores que apareçam na última resposta. Para enviar um formulário, clica no botão do próprio formulário: o browser_type não carrega em Enter.

Os endereços têm de ser HTTP ou HTTPS e sem credenciais embutidas. Um endereço sem esquema, como localhost:3000, é aberto em http, e qualquer outro em https. Caminhos de ficheiros e file:// não são endereços de browser.

Como funciona

  1. A página abre no painel de revisão da janela, num separador que a conversa mantém. Não há identificadores de separador para o modelo gerir.
  2. O texto da página é cortado aos 6000 caracteres, para caber no contexto. Quando é cortado, a resposta diz-lhe para usar o browser_find.
  3. A resposta junta um aviso de que o texto da página são dados e não instruções.

O que sai da máquina

O tráfego do site usa a rede do teu Mac, como uma visita normal: o site vê um pedido teu. O Ploy não envia mais nada, e o texto das páginas fica na conversa.

As regras de segurança

Uma página pode trazer ordens escritas, e um modelo pequeno às vezes obedece-lhes. Por isso, a partir do momento em que uma página entra numa conversa:

  • a conversa fica marcada como tendo lido a web (a regra ploy_tainted), e cada edição, cada comando e cada leitura fora do projeto pedem sempre confirmação, sem que uma aprovação guardada valha;
  • abrir um site que ainda não visitaste nessa conversa é recusado pela própria ferramenta. A resposta diz ao modelo para te pedir que confirmes o endereço, mas a ferramenta não tem forma de aceitar essa confirmação: dentro da mesma conversa a recusa mantém-se. Para ir a outro site, começa outra conversa. Continua a ser possível seguir as ligações da página em que estás.

A regra de um só site existe porque uma página podia dizer ao modelo para pôr texto privado num endereço. Antes de ler a primeira página, o modelo escolhe o site a partir do teu pedido, e, pelo que o código mostra, esse primeiro site abre sem uma pergunta de permissão própria.

O que foi medido

Seis tarefas num site de teste local, com três repetições cada: ler o título, ler um preço, preencher e enviar um formulário, seguir uma ligação, contar itens de uma lista e ler uma página que traz uma ordem escondida. O Ploy acertou 14 de 18 e nenhuma injeção teve sucesso. O teste recusa todos os pedidos de permissão e só verifica que o ficheiro que a ordem escondida mandava criar não aparece, por isso mede o modelo e a regra em conjunto, e não se o modelo obedeceu. Foi um site de teste feito pelo projeto, e um site real será mais difícil. Ver Medições.

Limites

  • Um modelo de 8 mil milhões de parâmetros erra: em 4 das 18 tentativas medidas, a tarefa não ficou certa.
  • O texto de uma página longa é cortado, e o modelo pode não ver a parte de que precisa.
  • O modelo não tem ferramenta de captura de ecrã: trabalha só com o texto e os identificadores.
  • A regra dos sites vale depois de a primeira página ser lida. Não há uma lista de sites aprovados, nem forma de a levantar dentro da conversa.
  • A regra ploy_tainted não impede, por si, abrir um segundo site; é o plugin do browser que mantém a regra de um só site.

Mais sobre as proteções em Segurança.