web-dev-qa-db-fra.com

CasperJS / PhantomJS ne charge pas la page https

Je sais qu'il y a certaines pages Web que PhantomJS/CasperJS ne peut pas ouvrir, et je me demandais si celle-ci en faisait partie: https://maizepages.umich.ed . CasperJS donne une erreur: PhantomJS n'a pas réussi à ouvrir l'état de la page = échec.

J'ai essayé d'ignorer les erreurs ssl et de changer mon agent utilisateur, mais je ne sais pas comment déterminer lesquels utiliser.

Tout ce que je fais en ce moment, c'est la configuration de base du casper avec casper.start(url, function () { ... })url=https://maizepages.umich.edu;

24
Vishaal Kalwani

Le problème peut être lié à la découverte récente d'une vulnérabilité SSLv3 (POODLE). Les propriétaires de sites Web ont été contraints de supprimer la prise en charge SSLv3 de leurs sites Web. Puisque PhantomJS <v1.9.8 utilise SSLv3 par par défaut , vous devez utiliser TLSv1:

casperjs --ssl-protocol=tlsv1 yourScript.js

La solution catchall serait d'utiliser any lorsque les nouvelles versions de PhantomJS sont livrées avec d'autres protocoles SSL. Mais cela rendrait la vulnérabilité POODLE exploitable sur des sites qui n'ont pas encore désactivé SSLv3.

casperjs --ssl-protocol=any yourScript.js

Méthode alternative: mise à jour vers PhantomJS 1.9.8 ou supérieur. Notez que la mise à jour vers PhantomJS 1.9.8 conduit à un nouveau bogue , ce qui est particulièrement gênant pour CasperJS.

Comment vérifier: Ajoutez un resource.error gestionnaire d'événements comme celui-ci au début de votre 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);
});

S'il s'agit bien d'un problème avec SSLv3, l'erreur sera quelque chose comme:

Code d'erreur: 6. Description: la négociation SSL a échoué


En passant, vous voudrez peut-être également exécuter le --ignore-ssl-errors=true option de ligne de commande, en cas de problème avec le certificat.

65
Artjom B.