Hackeando o Chat do Terra com Greasemonkey


Atualização: troquei de computador e perdi a cópia que tinha desse script; infelizmente não adianta me pedir que não tenho de onde tirar, e não tenho o menor interesse em reescrevê-lo.

Como alguns leitores meus já sabem, eu de certa forma freqüento o chat do Terra. Sei que isso pode decepcionar muita gente, que acha que lá só tem miguxos, gente acéfala e mentirosos. Tem muito disso, mas também tem gente legal, eu mesmo comecei um relacionamento que durou quatro anos numa sala de bate-papo. Tem que saber separar o joio do trigo, isso sim. Nesse tempo usando o chat do Terra, que evoluiu bem pouco em nove ou dez anos (embora não tenha muito o que evoluir em termos de salas de bate-papo, a não ser entupir de frescuras em Flash ou Ajax), tenho identificado muitas coisas irritantes que os programadores Perl deles nunca mudariam. Na verdade, as poucas novidades ficam por conta dos captchas cada vez mais chatos (e inúteis, pois as salas vivem repletas de spam bots) e da diversidade de novas “carinhas” que podem ser enviadas para a conversa. Antigamente havia programas que eram clientes para conversar no chat do Terra, e de outros provedores, mas com minha migração para o Linux estes programas deixaram de ter utilidade para mim (havia um que fazia OCR do captcha, e abria as conversas particulares em uma janelinha individual, era um tesão), e por isso não mais me atualizei com relação a eles. As principais chatices do chat do Terra (perceberam o trocadilho? eu não sou um gênio?) para meu gosto são as seguintes.

  1. fonte horrível no chat do terraA fonte do bate-papo é horrível, uma folha de estilo no início do HTML resolveria tudo com uma facilidade extrema (ver exemplo ao lado).
  2. O sistema não filtra as salsinhas que mandam mensagens COM TODAS AS LETRAS EM MAIÚSCULO. Um saco.
  3. É comum o usuário esquecer de acionar a configuração de “reservado”, e ao enviar uma mensagem que deveria ser privada acabar queimando o filme diante de toda a galera.
  4. Se você passar muito tempo sem enviar nada para a sala, o script que alimenta o bate-papo (o frame principal) desconecta o usuário simplesmente.
  5. Se você estiver em uma sala “caçando” tem que ficar se autopromovendo de tempos em tempos (até para não ser desconectado), forçando a digitação de texto, por mais que se use o recurso de autocompletar do navegador.
  6. Aquele monte de carinhas ocupando espaço na tela só irritam.
  7. Baixa usabilidade ao enviar mensagensA caixa de texto na qual se digitam as mensagens é extremamente pequena, obrigando a ficar indo e voltando na horizontal, caso se queira escrever algo relativamente mais complexo (ver imagem ao lado).
  8. Ao ignorar uma pessoa no chat o formulário é recarregado com o verbo “fala com” selecionado, no nome da pessoa recém ignorada.

Deve ter mais coisas, mas agora ficam essas oito (numeradas aleatoriamente, apenas para facilitar a continuação do artigo). Era fato que eu tinha de resolver esses problemas de alguma forma, por mim mesmo, ou ficaria impossibilitado de curtir meu passatempo que já me rendeu tantas histórias surreais! Como eu não sou trouxa de usar qualquer navegadorzinho bosta, resolvi lançar mão do Greasemonkey (já falei bastante dele aqui, pesquise por greasemonkey que você encontra os textos) e utilizá-lo para resolver pelo menos os problemas mais simples dos acima elencados. Peguei um userscript pronto para uma outra finalidade qualquer, mantive o “esqueleto” do mesmo, e comecei a codificar. A primeira coisa seria resolver aquela fonte podre. Item 1 resolvido. Já que estava mexendo no CSS do frame superior, poderia aproveitar e resolver o problema das salsas HISTÉRICAS, formatando todo o texto daquele frame para exibição “em caixa baixa”. Item 2 resolvido. Uma simples manipulação do formulário, setando o checked do reservado para verdadeiro, e pimba! Item 3 resolvido. Já a questão do timeout requeria um pouco mais de criatividade. Resolvi colocando um timer numa caixinha de texto entre o comando “sons” e o botão “sair da sala”. A cada segundo um contador é decrementado, e ao chegar em zero o botão de submit era pressionado automaticamente. Interessante, mas às vezes o botão era acionado antes de eu ter terminado de digitar uma frase, e acabei adicionando um pouco mais de inteligência ao timer: se houver algo escrito na caixa de texto, ou seja, se ela não estiver em branco, o envio automático não ocorre. Item 4 resolvido. Com relação à autopromoção, criei internamente no script um array com frases prontas “propagandeando” minha presença. Acrescentei então à funcionalidade do timer uma outra habilidade: caso a caixa de mensagem esteja em branco, e o destinatário seja TODOS, e o timer esteja em zero, o script desmarca a opção de reservado, sorteia uma das frases do array e envia para a sala. Para não ser tão previsível, dando um pouquinho mais de sabor à propaganda, o valor inicial do contador é um número compreendido entre limites mínimo e máximo. Item 5 resolvido. Já que estava mexendo no script, resolvi também ocultar as carinhas ridículas da tela, e espichar a caixa de textos para ocupar todo o espaço que as carinhas deixaram. Aproveitei e troquei a cor da caixinha de digitação, para que ela se destacasse melhor. Itens 6 e 7 resolvidos. Restava ainda a chatice de o Terra insistir que mesmo tendo ignorado uma pessoa eu quereria continuar conversando com ela (talvez para xingá-la sem ter de incomodar-me com o revide). A única maneira de resolver este problema seria analisando o que tivesse sido enviado para o servidor na tela anterior. Só que com JavaScript é impossível de resolver isso, pois não se tem acesso aos dados enviados pelo método POST. Pesquisei um bocado, e acabei resolvendo o problema vasculhando informações antigas: lembrei que há uns nove anos atrás o Terra Chat era feito em Perl, e não importava se enviássemos os dados por POST ou por GET que os CGIs funcionavam igualmente. Fiz então o script trocar automaticamente o método de envio do formulário já no carregamento da página, Fi-lo também analisar, agora sim, graças ao GET, o último verbo enviado. Caso seja o “ignora” ele automaticamente troca o destinatário das mensagens para TODOS, reabilitando a autopromoção automaticamente. O único senão é que o método GET tem limitações, e agora não dá para escrever tanto no chat. Item 8 resolvido! Veja abaixo como ficou a tela definitiva do Terra Chat.

Terra chat hackeado Destaque para o timer em amarelinho, e a caixa de digitação, em azul, gigantesca (se comparada ao original). Na verdade, escrever o script é até mais legal do que usar o chat. É muito bom saber que eu, o usuário, tenho o controle sobre como vou conversar na Internet. Se o Terra não atualiza seu sistema de bate-papo, e continua achando que carinhas imbecis são mais importantes do que eu poder visualizar o texto inteiro que quero mandar para uma pessoa. Quase divulguei o fonte do script aqui (apesar de ter um quezinho de POG nele). Mas resolvi não fazê-lo por um motivo bem simples: o array de frases feitas pode muito bem ser substituído por algumas frases de caráter comercial, ou incentivando as pessoas a irem aonde não devem (como sites de phising). É uma ferramenta simples, mas muito poderosa, que não deve cair em mãos erradas. Se alguém quiser meu script vai ter de me enviar um e-mail dizendo para que vai usá-lo, em que salas do Chat do Terra, e o quanto está disposto a pagar por uma cópia do programa, e como vai pagar. Se todas as respostas me agradarem, envio o número da conta, ou o boleto, e assim que identificar o pagamento envio o script por e-mail. Ufa!

Compartilhe

Avalie este conteúdo!

Avaliação média: 4.58
Total de Votos: 12
Hackeando o Chat do Terra com Greasemonkey

Janio Sarmento
Administrador de sistemas, humanista, progressista, apreciador de computadores e bugigangas eletrônicas, acredita que os blogs nunca morrerão, por mais que as redes sociais pareçam cada vez mais sedutoras para as grandes massas.

Comente!

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.