105 votes

PhantomJS à défaut d'ouvrir le site en HTTPS

Je suis en utilisant le code suivant basé sur loadspeed.js exemple pour ouvrir une https:// site qui requiert l'authentification du serveur http.


 var page = require('page').créer(), system = require('system'), t, adresse;

 page.les paramètres.nom d'utilisateur = 'myusername';
 page.les paramètres.mot de passe = 'monmotdepasse';

 si (système d'.args.longueur === 1) {
 console.log ("Utilisation: scrape.js ');
phantom.exit();
 } else {
 t = Date.maintenant();
 adresse = système.args[1];
 page.ouvert(adresse, fonction (statut) {
 si (etat !== la "réussite") {
 console.log ("ÉCHEC du chargement de l'adresse');
 } else {
 t = Date.maintenant() - t;
 console.log ("titre de la Page est" + page.évaluer(function () {
 document de retour.titre;
}));
 console.log ("temps de Chargement' + t + 'ms');
}
phantom.exit();
});
 } 

Son échec du chargement de la page tout le temps. Ce qui pourrait être mal ici? Sont des sites sécurisés pour être traitées différemment? Le site peut être consulté avec succès à partir du navigateur.
Je viens juste de commencer avec Phantom dès maintenant et trouvez qu'il est trop bon pour arrêter de jouer, même si je ne suis pas aller de l'avant avec ce problème..

Merci à l'avance.

154voto

JLarky Points 1425

J'ai essayé de Fred et Cameron Bricoler des réponses, mais seulement --ssl-protocol=aucune option semblent m'aider:

phantomjs --ssl-protocol=any test.js

Je pense également qu'il devrait être plus sûr d'utiliser des --ssl-protocol=any comme vous êtes toujours à l'aide du chiffrement, mais --ignore-ssl-errors ignorent (duh) toutes les erreurs ssl, y compris les logiciels malveillants.

123voto

Cameron Tinker Points 4158

Le problème est probablement dû à un certificat SSL erreurs. Si vous commencez à phantomjs avec l' --ignore-ssl-errors=oui , passez à charger la page comme il le ferait s'il n'y avait pas des erreurs SSL:

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

J'ai vu quelques sites à avoir des problèmes avec incorrectement mise en œuvre de leurs certificats SSL ou qu'ils ont expiré, etc. Une liste complète des options de ligne de commande pour phantomjs est disponible ici: https://github.com/ariya/phantomjs/wiki/API-Reference. J'espère que cette aide.

71voto

Micah Points 5630

Notez que comme de 2014-10-16, PhantomJS par défaut à l'aide de SSLv3 pour ouvrir les connexions HTTPS. Avec le CANICHE de la vulnérabilité récemment annoncé, de nombreux serveurs sont désactiver SSLv3 de soutien.

Pour contourner cela, vous devriez être en mesure d'exécuter PhantomJS avec:

phantomjs --ssl-protocol=tlsv1

Heureusement, PhantomJS sera mis à jour bientôt à faire TLSv1 par défaut au lieu de SSLv3.

24voto

Fred Points 136

connu le même problème...
--ignore-ssl-errors=oui n'a pas suffi à résoudre le problème pour moi, eu à faire deux choses:
1) changer l'user-agent
2) j'ai essayé toutes ssl protocoles, la seule qui a fonctionné a été tlsv1 de la page en question
Espérons que cela aide...

0voto

ctasca Points 29

Si quelqu'un est à l'aide de Phantomjs avec Sahi l' --ignore-ssl-errors option doit aller dans votre browser_types.xml fichier. Il a travaillé pour moi.

<browserType>
    <name>phantomjs</name>
    <displayName>PhantomJS</displayName>
    <icon>safari.png</icon>
    <path>/usr/local/Cellar/phantomjs/1.9.2/bin/phantomjs</path>
    <options>--ignore-ssl-errors=yes --debug=yes --proxy=localhost:9999 /usr/local/Cellar/phantomjs/phantom-sahi.js</options>
    <processName>"PhantomJS"</processName>
    <capacity>100</capacity>
    <force>true</force>
</browserType>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X