PhantomJS - Rodando JavaScript via Terminal e Shell via JavaScript

Publicado por Marcos Oliveira em 21/03/2018

[ Hits: 7.690 ]

Blog: http://terminalroot.com.br/

 


PhantomJS - Rodando JavaScript via Terminal e Shell via JavaScript



Conceito

PhantomJS é browser baseado em scripts, sem interface gráfica, para automatizar tarefas da web. É um software de código aberto lançado sob a licença BSD.

Algumas empresas que usam o PhantomJS para automatizar suas tarefas:
  • Twitter;
  • Netflix;
  • LinkedIn;
  • Entre outras.

Foi criado por Ariya Hidayat em 2011, após vários anos de desenvolvimento.

Existem inúmeras utilidades para o PhantomJS, mas também é usado muito por hackers para automatizar ataques. :(

Um tempo depois foi criado o CasperJS por Nicolas Perriault, que é um biblioteca de funções do PhantomJS.

Instalação

git clone https://github.com/terminalrootsh/jsterminal.git
$ cd jsterminal/
$ sh jsterminal.sh


Depois saia do terminal, abra-o novamente e rode esse comando:

phantomjs --version

E também:

phantomjs --help

Se quiser rodar diretamente pelo terminal rode:

phantomjs

Uso/Vídeo:

hello-world.js

Uso básico do PhantomJS:

console.log('Hello, world!');
phantom.exit();

Depois rode o comando:

phantomjs hello-world.js

page-render.js

Renderizar uma página web em um arquivo de PNG:

var page = require('webpage').create();
page.open('http://terminalroot.com.br/', function() {
page.render('terminalroot.png');
phantom.exit();
});

Depois rode o comando:

phantomjs page-render.js

arguments.js

Identificar parâmetros pelo terminal:

use strict;
var system = require('system');
if (system.args.length === 1) {
    console.log('Try to pass some args when invoking this script!');
} else {
    system.args.forEach(function (arg, i) {
            console.log(i + ': ' + arg);
    });
}
phantom.exit();

Depois rode o comando:

phantomjs arguments.js PrimeiroParâmetro SegundoParâmetro TerceiroParâmetro

rasterize.js

Transforma uma página da internet em PDF ou outros formatos.

Primeiro baixe o código:

wget https://raw.githubusercontent.com/ariya/phantomjs/master/examples/rasterize.js

Depois rode o comando:

phantomjs rasterize.js 'https://en.wikipedia.org/wiki/PhantomJS' phantomjs.pdf

loadspeed.js

Testa a velocidade de leitura de uma página web.

Primeiro baixe o código:

wget https://raw.githubusercontent.com/ariya/phantomjs/master/examples/loadspeed.js

Exemplo de uso, ver o tempo de carregamento das páginas do Google e do Facebook:

phantomjs loadspeed.js http://google.com

e depois:

phantomjs loadspeed.js https://facebook.com

useragent.js

Detecta qual seu User Agent ao acessar páginas com o PhantomJS:

wget https://raw.githubusercontent.com/ariya/phantomjs/master/examples/useragent.js

phantomjs useragent.js

E muito mais utilidades...
  • detectsniff.js
  • server.js - Inicia um servidor web e envia uma solicitação HTTP GET
  • injectme.js - Injeta um contexto numa página web
  • Entre outros .js

Rodar Comandos Shell em JS

Quando você quiser executar comandos UNIX com Server Side. Exemplo: salvar um dado do cliente simplesmente inserido o conteúdo que ele solicitou num arquivo txt; copiar um arquivo solicitado; ...

Instalação:

Gentoo:

O portage irá instalar todas as dependências necessárias caso já não estejam instaladas, basta rodar o simples comando:

# emerge nodejs

Debian, Ubuntu, Linux Mint e derivados:

Diferentemente do Portage no Gentoo, será necessário instalar dependências juntamente com o NodeJS:

sudo apt-get install build-essential libssl-dev

Fedora, CentOS e derivados do Red Hat:

Você precisará antes adicionar o epel-release:

sudo yum install epel-release
sudo yum install nodejs

Após instalar o NodeJS, use o comando npm com o usuário normal para instalar o ShellJS.

npm install [-g] shelljs

Após instalado veja/crie esse arquivo com alguns exemplos:

var shell = require('shelljs');
shell.echo('Utilizando o comando echo com ShellJS');
shell.echo('-e', '\nUsando o parâmetro -e do echo para pular linha com o \\n \nCriando o arquivo meu-arquivo.txt com o comando touch');
shell.touch('meu-arquivo.txt');
shell.echo('Copiando o meu-arquivo.txt para novo-arquivo.txt');
shell.cp('meu-arquivo.txt', 'novo-arquivo.txt');
shell.echo('Rode esse script com o comando: node shelljs.js');
shell.echo('-e','Para mais informações acesse:\nhttps://www.npmjs.com/package/shelljs\n');

Links Úteis


Outras dicas deste autor

Como Instalar o Gentoo Linux em Dual Boot com o Ubuntu [Vídeo]

Como Instalar o FreeBSD 11.1

Como Compilar Programas no FreeBSD via Ports

Pós-Instalação do Arch + i3 + Polybar + Pywal via Shell

Como Acessar o Windows pelo Linux com Metasploit

Leitura recomendada

Alternativas ao Dropbox e outros serviços de armazenamento em nuvem

Programadores realizadores vs sonhadores - quando ação define os resultados que obtemos em software

Script Nagios + NRPE checa filas CUPS

Cursos de Programação Online Grátis

Remover o enorme banner do Live Hotmail

  

Comentários
[1] Comentário enviado por fabio em 21/03/2018 - 03:03h

Uso o PhantomJS por aqui pra automatizar algumas tarefas, ele é sensacional!

[2] Comentário enviado por wadilson em 21/03/2018 - 10:54h

Muito legal a dica, muito útil! Ótimo tutorial. TKS



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts