2014-10-16 20 views
23

So che ci sono alcune pagine Web che PhantomJS/CasperJS non possono aprire e mi chiedevo se questo era uno di loro: https://maizepages.umich.edu. CasperJS restituisce un errore: PhantomJS non è riuscito ad aprire lo stato della pagina = fallire.CasperJS/PhantomJS non carica la pagina https

Ho provato a ignorare-ssl-errors e cambiare il mio agente utente, ma non sono sicuro di come determinare quali utilizzare.

Tutto quello che sto facendo in questo momento è la configurazione di base casper con casper.start(url, function() { ... }) dove url=https://maizepages.umich.edu;

+0

possibile duplicato di [PhantomJS che non riesce ad aprire il sito HTTPS] (http://stackoverflow.com/questions/12021578/phantomjs-failing-to-open-https-site) –

risposta

65

Il problema potrebbe essere correlato alla recente scoperta di una vulnerabilità SSLv3 (POODLE). I proprietari dei siti Web sono stati costretti a rimuovere il supporto SSLv3 dai loro siti web. Dal momento che PhantomJS < v1.9.8 utilizza SSLv3 da default, è consigliabile utilizzare TLSv1:

casperjs --ssl-protocol=tlsv1 yourScript.js 

La soluzione catchall sarebbe quella di utilizzare any per quando più recenti versioni PhantomJS vieni con altri protocolli SSL. Ma questo renderebbe la vulnerabilità di POODLE sfruttabile su siti che non hanno ancora disabilitato SSLv3.

casperjs --ssl-protocol=any yourScript.js 

Metodo alternativo: aggiornamento a PhantomJS 1.9.8 o versione successiva. Nota che l'aggiornamento a PhantomJS 1.9.8 porta a un new bug, che è particolarmente fastidioso per CasperJS.

Come verificare: aggiungere un gestore di resource.error evento come questo, all'inizio dello script:

casper.on("resource.error", function(resourceError){ 
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); 
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); 
}); 

Se è davvero un problema con SSLv3 l'errore sarà qualcosa del tipo:

Error code: 6. Description: SSL handshake failed


Come parte, potresti anche voler eseguire con l'opzione della riga di comando --ignore-ssl-errors=true, quando c'è così mething sbagliato con il certificato.

+0

Sfortunatamente anche con TLSv1 ottengo lo stesso errore. Esistono altri protocolli SSL comuni accettati da CasperJS? –

+0

Questo è strano dal momento che [questo] (https://gist.github.com/artjomb/d837bad756bd74735f33) produce un vero e proprio [screenshot] (http://i.imgur.com/fK4hHfk.png) per me. Se stai usando una versione PhantomJS precedente alla 1.9.7, dovresti probabilmente aggiornarla. –

+0

Questo mi dà speranza! Ho controllato la mia versione installata usando 'phantomjs --version' e mi ha dato 1.8.2, ma quando ho fatto' brew info phantomjs 'ha detto 1.9.7. Non sono sicuro di come fare per trovare dove è installata la versione 1.8.2. Indagherò se riesco ad aggiornare PhantomJS dalla riga di comando. My Casper è 1.0.4. Come nota a margine, sai come formattare il file cookies.json per PhantomJS/CasperJS da usare? –

Problemi correlati