PhantomJS non riesce ad aprire il sito HTTPS

Sto usando il seguente codice basato sull’esempio loadspeed.js per aprire un sito https: // che richiede anche l’autenticazione del server http.

var page = require('webpage').create(), system = require('system'), t, address; page.settings.userName = 'myusername'; page.settings.password = 'mypassword'; if (system.args.length === 1) { console.log('Usage: scrape.js '); phantom.exit(); } else { t = Date.now(); address = system.args[1]; page.open(address, function (status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() - t; console.log('Page title is ' + page.evaluate(function () { return document.title; })); console.log('Loading time ' + t + ' msec'); } phantom.exit(); }); } 

Non riesce a caricare la pagina tutto il tempo. Cosa potrebbe essere sbagliato qui? I siti protetti sono gestiti in modo diverso? Tuttavia, è ansible accedere al sito correttamente dal browser.

In questo momento sto iniziando con Phantom e trovo troppo bello smettere di giocare anche se non sto andando avanti con questo problema.

Ho provato le risposte di Fred’s e Cameron Tinker, ma solo –ssl-protocol = qualsiasi opzione sembra aiutarmi:

 phantomjs --ssl-protocol=any test.js 

Inoltre penso che dovrebbe essere più sicuro usare --ssl-protocol=any come si sta ancora usando la crittografia, ma --ignore-ssl-errors=true ignorerà (duh) tutti gli errori ssl, inclusi quelli dannosi.

Molto probabilmente il problema è dovuto a errori del certificato SSL. Se si avvia phantomjs con l’opzione –ignore-ssl-errors = yes , dovrebbe procedere a caricare la pagina come se non ci fossero errori SSL:

 phantomjs --ignore-ssl-errors=yes [phantomOptions] script.js [scriptOptions] 

Ho visto alcuni siti Web che hanno problemi con l’implementazione errata dei loro certificati SSL o sono scaduti, ecc. Un elenco completo delle opzioni della riga di comando per phantomjs è disponibile qui: http://phantomjs.org/api/command-line. html . Spero che aiuti.

Si noti che dal 2014-10-16, PhantomJS utilizza per impostazione predefinita SSLv3 per aprire le connessioni HTTPS. Con la vulnerabilità POODLE recentemente annunciata, molti server stanno disabilitando il supporto SSLv3.

Per aggirare questo, dovresti essere in grado di eseguire PhantomJS con:

 phantomjs --ssl-protocol=tlsv1 

Si spera che PhantomJS verrà presto aggiornato per rendere TLSv1 l’impostazione predefinita al posto di SSLv3.

ha avuto lo stesso problema …
–ignore-ssl-errors = yes non è stato sufficiente per risolverlo, ho dovuto fare ancora due cose:
1) cambia user-agent
2) provato tutti i protocolli ssl, l’unico che funzionava era tlsv1 per la pagina in questione
Spero che questo ti aiuti…

Ho riscontrato lo stesso problema (casperjs 1.1.0-beta3 / phantomjs 1.9.7). Usando –ignore-ssl-errors = yes e –ssl-protocol = tlsv1 l’ha risolto. L’utilizzo di una sola delle opzioni non lo ha risolto per me.

Se qualcuno usa Phantomjs con Sahi l’opzione --ignore-ssl-errors deve andare nel tuo file browser_types.xml. Ha funzionato per me.

  phantomjs PhantomJS safari.png /usr/local/Cellar/phantomjs/1.9.2/bin/phantomjs --ignore-ssl-errors=yes --debug=yes --proxy=localhost:9999 /usr/local/Cellar/phantomjs/phantom-sahi.js "PhantomJS" 100 true  

Stavo ricevendo “Errore durante la creazione del contesto SSL” da phantomJS (eseguito su CentOS 6.6)

Costruire dalla fonte lo ha risolto per me. Non dimenticare di usare i phantomjs che hai creato. (invece di / usr / local / bin / phantomjs se ce l’hai)

 sudo yum -y install gcc gcc-c++ make flex bison gperf ruby openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 2.0 ./build.sh cd bin/ ./phantomjs  

Che ne dici di shebang ?

Se stai usando shebang per eseguire script phantomjs , usa la seguente linea di shebang

 #!/usr/bin/phantomjs --ignore-ssl-errors=yes var system = require('system'); var webpage = require('webpage'); // ... rest of your script 

Utilizzare una delle risposte precedenti. personalmente mi piace --ignore-ssl-errors=yes poiché è irrilevante convalidare il certificato autofirmato del mio server web di loopback.

Nessuna delle altre risposte qui mi ha aiutato; potrebbe essere che il / i sito / i specifico / i con cui stavo lavorando fossero troppo pignoli con le loro intestazioni HTTP. Questo è ciò che ha funzionato:

 var page = webpage.create(); page.customHeaders = { "Connection": "keep-alive" }; 

Ho scoperto che PhantomJS utilizzava “Keep-Alive” (maiuscola), e la connessione non veniva mantenuta in vita. 🙂

Ieri stavo ottenendo SSL Handshake Failed . Ho provato molte combinazioni di opzioni phantomJS ( --ignore-ssl-errors=yes ecc.), Ma nessuna ha funzionato.

L’aggiornamento a phantomJS 2.1.1 lo ha risolto.

Ho usato le istruzioni di installazione di phantomJS su https://gist.github.com/julionc/7476620 , cambiando la versione di fantasmaJS in 2.1.1.