CasperJS/PhantomJS не загружает страницу https
Я знаю, что есть определенные веб-страницы, которые PhantomJS/CasperJS не может открыть, и мне было интересно, была ли эта из них одной: https://maizepages.umich.edu/. CasperJS выдает ошибку: PhantomJS не удалось открыть страницу состояния = ошибка.
Я попытался игнорировать ssl-errors и изменить свой пользовательский агент, но я не уверен, как определить, какие из них использовать.
Все, что я сейчас делаю, это базовая настройка casper.start(url, function () { ... })
где url=https://maizepages.umich.edu
;
1 ответ
Проблема может быть связана с недавним обнаружением уязвимости SSLv3 (POODLE). Владельцы сайтов были вынуждены удалить поддержку SSLv3 со своих сайтов. Поскольку PhantomJS
casperjs --ssl-protocol=tlsv1 yourScript.js
Обходным решением будет использование any
когда новые версии PhantomJS приходят вместе с другими протоколами SSL. Но это сделало бы уязвимость POODLE уязвимой на сайтах, которые еще не отключили SSLv3.
casperjs --ssl-protocol=any yourScript.js
Альтернативный метод: обновление до PhantomJS 1.9.8 или выше. Обратите внимание, что обновление до PhantomJS 1.9.8 приводит к новой ошибке, которая особенно раздражает для CasperJS.
Как проверить: добавить 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);
});
Если это действительно проблема с SSLv3, ошибка будет выглядеть примерно так:
Код ошибки: 6. Описание: сбой рукопожатия SSL
Кроме того, вы также можете запустить с --ignore-ssl-errors=true
опция командной строки, когда что-то не так с сертификатом.