Lorsque vous essayez de charger une page HTTPS à l'aide de PhantomJS/CasperJS, vous pouvez rencontrer une erreur malgré la définition de « ignore-ssl-errors » et modification des agents utilisateurs.
Ce problème pourrait provenir de la vulnérabilité SSLv3 (POODLE), incitant les propriétaires de sites Web à désactiver la prise en charge de SSLv3. Étant donné que les versions antérieures de PhantomJS utilisent par défaut SSLv3, le passage à TLSv1 ou même à « n'importe quel » protocole SSL résout le problème :
casperjs --ssl-protocol=tlsv1 yourScript.js
casperjs --ssl-protocol=any yourScript.js
Alternativement, la mise à jour vers PhantomJS 1.9.8 ou version ultérieure résout le problème, bien que cela introduit un bug distinct.
Pour vérifier si SSLv3 est la cause, implémentez un gestionnaire d'événements "resource.error" :
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); });
Si l'erreur correspond à "Code d'erreur : 6. Description : Échec de la négociation SSL", SSLv3 est probablement le coupable.
Enfin, pensez à utiliser l'option de ligne de commande "--ignore-ssl-errors=true" pour gérer les problèmes de certificat.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!