Firefox: Criando um script para o Greasemonkey
Ainda está prometido que farei um artigo só sobre extensões, mas neste vou falar um pouco sobre a melhor delas na minha opinião: a Greasemonkey. Com ela é possível inserir código Javascript personalizado nas páginas que você desejar, a nível de cliente. Funciona assim: quando você faz acessa uma página qualquer, uma requisição HTTP é feita pelo seu navegador. A resposta a ela é o próprio documento HTML que será renderizado pelo seu navegador, normalmente.

Quando a requisição chega ao servidor, é possível que vários procedimentos sejam executados por ele, e que a montagem do código HTML que será devolvido aconteça dinamicamente. Quando isso termina, o documento HTML é transferido para o cliente. Nesse ponto é onde o Greasemonkey entra. Antes do navegador renderizar a página, o Greasemonkey pode carregar um programa escrito em Javascript seu e agregá-lo à página! Dessa forma é possível fazer praticamente qualquer coisa em qualquer site, ou sites!
A motivação para este post na verdade, foi o fato de um amigo estar com um problema na navegação e ter me perguntando como mudar uma determinada característica nas páginas que ele acessa. Indique essa grande extensão e o livro on-line Dive Into Greasemonkey, para que ele aprendesse a criar um “userscript”, resolvendo o problema. Fora isso, é preciso saber Javascript, que foi o que o complicou. Resolvi então dar uma ajuda e postar aqui os procedimentos e ferramentas que usei para criar este pequeno script, para que servisse de referência para outras pessoas. Vamos ao problema.
Muitos serviços na Internet hoje estão utilizando-se de redirecionamentos para conseguir informações do cliente e conseguir fazer algo com elas. Os objetivos são os mais variados, mas normalmente são monetização e propaganda. Você identifica que isso está acontecendo quando ao clicar em um link, primeiro você vai para um site depois é redirecionado para outro, que era o que você desejava no início. Aqui na minha conexão isso faz diferença, pois ela é bem ruim (Secrel Predial, Fortaleza), principalmente a resolução DNS. Com um pouco mais de atenção aos links que clicamos, podemos que eles tem a seguinte forma:
http://www.sitequevocenaoconhece.com?url=http://www.destinodinal.com.br
Esse formato que dizer, simplificando, que você ia para o destino final, mas foi mandando para o site que você não conhece, enviando uma variável chamada “url” que contém em seu conteúdo o endereço de um site. A aplicação que está rodando no servidor do site que você não conhece captura essa variável, juntamente com todas as suas informações que estão disponíveis, depois redireciona você para o site que iria desde o início.
Esse fato é até normal, mas alguns serviços realmente abusam do recurso, como ao invés de apenas redirecionar, colocam uma imensa página de propaganda, que às vezes até maximiza seu navegador, e te força a ficar procurando o link que queria no meio de vários anúncios. Para piorar, existem ainda os redirecionamentos múltiplos, onde você cai em um site desses e ele te manda para outro, que te manda para outro…
Nesse último caso é possível identificar na URL a presença de várias variáveis que são enviadas para estes sites, um a um. Para resolver o problema, bastaria fazer uma checagem em todos os links procurando pela expressão “url=” no nosso caso, e reescrevendo o link com a url com o restante da string que está à direita da última ocorrência desse padrão. Fazer esta manipulação em elementos do documento HTML é bastante simples em Javascript, mas é preciso saber Javascript!
Também é interessante que seu código seja executado apenas quando toda a página for carregada. Isso elimina o problema de não avaliar os links de sites “montados” por páginas internas (iframes), pois algumas irão demorar mais para carregar. Há uma discussão interessante sobre como fazer isso de forma correta em Javascript aqui. Recomendo a leitura.
Outro ponto que é preciso tomar cuidado é com a alteração dos links, pois, dependendo do seu padrão de busca, pode ser que acabe alterando erronamente referências para âncoras internas à própria página. Como diferenciar um de outro?
Podemos utilizar o suporte do Firefox à XPath para resolver o problema. o XPath é uma especificação de linguagem de consulta à informações contidas em documentos XML. No final, o userscript ficou assim: Userscript para eliminar redirecionamentos. No final do arquivo tem um comentário mostrando como seria feito o mesmo procedimento sem a utilização de XPath. É claro que é necessário estar com o Greasemonkey instalado no seu Firefox para instalar este userscript nele.
Uma interessante ferramenta que utilizei para testar o código antes de escrever o aplicativo foi um shell Javascript interativo na forma de um bookmarklet que abre no contexto da página que você está visitando. Mais ou menos como o irb do Ruby. Excelente ferramenta.
Espero que este artigo tenha sido elucidativo e ajude a quem interessar a dar os primeiros passos nessa extensão extremamente poderosa que é o Greasemonkey.
Artigos Relacionados:
Sobre este artigo
You’re currently reading “Firefox: Criando um script para o Greasemonkey,” an entry on Hypercast
- Published:
- 07.20.07 / 11am
- Category:
- Desenvolvimento
2 Comments
Jump to comment form | comments rss [?] | trackback uri [?]