PhantomJS - Rodando JavaScript via Terminal e Shell via JavaScript

Publicado por Marcos Oliveira em 21/03/2018

[ Hits: 6.098 ]

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

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

O que fazer após instalar o Gentoo Linux

Como Instalar o FreeBSD 11.1

Como Acessar o Windows pelo Linux com Metasploit

Como Instalar o Debian Remotamente via SSH [Vídeo]

Leitura recomendada

Servidor web simples sem instalar nada

Encurtador Goo.gl para Firefox

Google oferece sites de graça para pequenas empresas

Restaurando abas no Google Chrome

Cursos de Programação Online Grátis

  

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