J'utilise le code suivant basé sur l'exemple loadspeed.js pour ouvrir un site https: // qui nécessite également une authentification du serveur 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 <some URL>');
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();
});
}
Son échec de charger la page tout le temps. Qu'est-ce qui ne va pas ici? Les sites sécurisés doivent-ils être traités différemment? Le site est cependant accessible avec succès à partir du navigateur.
Je ne fais que commencer avec Phantom en ce moment et je trouve que c'est trop beau pour arrêter de jouer même si je ne vais pas de l'avant avec ce problème.
la source
Le problème est probablement dû à des erreurs de certificat SSL. Si vous démarrez phantomjs avec l' option --ignore-ssl-errors = yes , il devrait procéder au chargement de la page comme il le ferait s'il n'y avait pas d'erreurs SSL:
J'ai vu quelques sites Web ayant des problèmes avec la mise en œuvre incorrecte de leurs certificats SSL ou ils ont expiré, etc. Une liste complète des options de ligne de commande pour phantomjs est disponible ici: http://phantomjs.org/api/command-line. html . J'espère que ça aide.
la source
phantomjs --ignore-ssl-errors=yes script.js
--ignore-ssl-errors=yes
option doit venir avant le nom du script. Merci de l'avoir signalé.Notez qu'à partir du 16/10/2014, PhantomJS utilise par défaut SSLv3 pour ouvrir les connexions HTTPS. Avec la vulnérabilité POODLE récemment annoncée, de nombreux serveurs désactivent la prise en charge de SSLv3.
Pour contourner cela, vous devriez pouvoir exécuter PhantomJS avec:
Espérons que PhantomJS sera bientôt mis à jour pour faire de TLSv1 la valeur par défaut au lieu de SSLv3.
la source
rencontré le même problème ...
--ignore-ssl-errors = yes n'était pas suffisant pour le réparer pour moi, j'ai dû faire deux autres choses:
1) changer l'agent utilisateur
2) essayé tous les protocoles ssl, le seul qui fonctionnait était tlsv1 pour la page en question
J'espère que cela aide ...
la source
J'ai rencontré le même problème (casperjs 1.1.0-beta3 / phantomjs 1.9.7). L'utilisation de --ignore-ssl-errors = yes et --ssl-protocol = tlsv1 a résolu le problème. L'utilisation d'une seule des options ne m'a pas permis de résoudre le problème.
la source
Je recevais
Construire à partir de la source l'a corrigé pour moi. N'oubliez pas d'utiliser les phantomjs que vous avez créés. (au lieu de / usr / local / bin / phantomjs si vous l'avez)
la source
Si quelqu'un utilise Phantomjs avec Sahi, l'
--ignore-ssl-errors
option doit aller dans votre fichier browser_types.xml. Cela a fonctionné pour moi.la source
Et quoi
shebang
?Si vous utilisez shebang pour exécuter des
phantomjs
scripts, utilisez la ligne shebang suivanteUtilisez l'une des réponses ci-dessus. J'aime personnellement
--ignore-ssl-errors=yes
car il n'est pas pertinent de valider le certificat auto-signé de mes serveurs Web de bouclage.la source
Aucune des autres réponses ici ne m'a aidé; il se peut que le ou les sites spécifiques avec lesquels je travaillais soient trop pointilleux avec leurs en-têtes HTTP. C'est ce qui a fonctionné:
J'ai découvert que PhantomJS utilisait "Keep-Alive" (en majuscule) et que la connexion n'était pas maintenue en vie. :)
la source
Je recevais
SSL Handshake Failed
hier. J'ai essayé de nombreuses combinaisons d'options phantomJS (--ignore-ssl-errors=yes
etc.), mais aucune d'elles n'a fonctionné.La mise à niveau vers phantomJS 2.1.1 l'a corrigé.
J'ai utilisé les instructions d'installation de phantomJS sur https://gist.github.com/julionc/7476620 , en changeant la version phantomJS en 2.1.1.
la source
Sur la machine sur laquelle vous essayez d'exécuter phantomjs pour vous connecter à un serveur distant, exécutez «openssl ciphers». Copiez et collez les chiffrements répertoriés dans l'option de ligne de commande --ssl-ciphers = "". Cela indique au serveur Web de connexion quels chiffrements sont disponibles pour communiquer avec votre client. Si vous ne définissez pas ceux disponibles sur votre propre ordinateur, il peut utiliser n'importe quel chiffrement que votre ordinateur ne comprend pas que les navigateurs modernes par défaut font qui sont utilisés pour le paramètre par défaut.
la source
La seule chose qui a fonctionné pour moi a été de faire passer les phantomjs de 1.9x à 2.x;)
la source