Phantomjs è un browser senza testa con script. Può essere un aiuto essenziale nel test automatizzato dei servizi web, può generare screenshot della pagina che sta visitando, stampare efficacemente il traffico durante la navigazione di una pagina, solo per citare alcune delle sue caratteristiche. Phantomjs può essere sottoposto a script in JavaScript, quindi non abbiamo bisogno di imparare un'altra lingua se la conosciamo. Purtroppo, il suo sviluppo è al momento sospeso, ma l'ultima versione stabile è disponibile per il download.
In questo tutorial installeremo phantomjs su RHEL 8 / CentOS 8 ed eseguiremo uno degli esempi forniti con il pacchetto per vedere il nostro strumento funzionante.
In questo tutorial imparerai:
- Come scaricare il pacchetto phantomjs
- Come estrarre e posizionare il binario sul percorso
- Come eseguire uno script di esempio con phantomjs

Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Phantomjs 2.1.1 |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Come installare phantomjs su RHEL 8 / CentOS 8 istruzioni passo passo
Phantomjs è davvero autonomo. Se abbiamo i pochi pacchetti necessari, non avremmo bisogno di root
accesso per installare lo strumento per noi stessi (cioè accessibile solo al nostro utente). Per garantire che ogni utente del sistema possa utilizzare questo strumento, lo collocheremo su un percorso a livello di sistema e ciò richiede un utente privilegiato.
- Per prima cosa dovremmo controllare di avere i pacchetti richiesti:
$ rpm -q glibc glibc-2.28-18.el8.x86_64 $ rpm -q fontconfig fontconfig-2.13.1-2.el8.x86_64
In caso contrario, possiamo installare i pacchetti di cui sopra con
dnf
:# dnf install glibc fontconfig
- Possiamo visitare il sito di download ufficiale per trovare l'URL di cui abbiamo bisogno. Nel nostro caso è l'indirizzo del pacchetto per Linux x86_64. Inseriamo il
/opt
directory, dove memorizzeremo il file binario, esempi e readme:# cd /opt
E scarica il pacchetto con
wget
:# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
- Successivamente estraiamo l'archivio:
# tar -xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
- Un luogo comune per i file binari e gli strumenti installati dall'utente (ovvero, non provenienti dai repository della distribuzione) è
/usr/local/bin
. Su RHEL è anche su$PATH
di tutti per impostazione predefinita. Creiamo un collegamento simbolico in questa directory e, così facendo, qualsiasi utente vecchio o nuovo lo troverà con un semplice completamento automatico di bash:# ln -s /opt/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
- Per testare abbiamo
phantomjs
sul nostro percorso, possiamo digitare il comando senza alcun percorso come qualsiasi utente del sistema:$ phantomjs --version 2.1.1
- Mentre il binario stesso è ora sul nostro percorso, gli esempi forniti con il pacchetto distribuito non lo sono. Possiamo provare il nostro strumento eseguendo questi esempi, che possono darci un inizio per scrivere i nostri script per phantomjs. L'esempio seguente,
netlog.js
stamperà tutto il traffico generato mentre phantomjs visita un sito Web, comprese le informazioni sull'intestazione e i dati binari. Nel nostro caso lo eseguiamo contro il famosoinfo.php
(phpinfo();
chiamato) servito da un server web in esecuzione localmente.$ phantomjs /opt/phantomjs-2.1.1-linux-x86_64/examples/netlog.js http://localhost/info.php
Ci vengono forniti tutti i dati richiesti e ricevuti, quindi una semplice chiamata produrrà un output lungo.
requested: { "headers": [ { "name": "Accept", "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name": "User-Agent", "value": "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1" } ], "id": 1, "method": "GET", "time": "2019-01-15T17:48:57.393Z", "url": "http://localhost/info.php" } received: { "body": "", "bodySize": 60718, "contentType": "text/html; charset=UTF-8", "headers": [ { "name": "Date", "value": "Tue, 15 Jan 2019 17:48:57 GMT" }, { "name": "Server", "value": "Apache/2.4.35 (Red Hat Enterprise Linux) mod_perl/2.0.10 Perl/v5.26.2" }, { "name": "X-Powered-By", "value": "PHP/7.2.11" }, { "name": "Keep-Alive", "value": "timeout=5, max=100" }, [...]