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