Подтвердить что ты не робот

CasperJS/PhantomJS не загружает страницу https

Я знаю, что есть определенные веб-страницы, которые PhantomJS/CasperJS не может открыть, и мне было интересно, был ли это один из них: https://maizepages.umich.edu. CasperJS дает ошибку: PhantomJS не удалось открыть статус страницы = сбой.

Я пробовал игнорировать -ssl-ошибки и менял свой пользовательский агент, но я не уверен, как определить, какие из них использовать.

Все, что я делаю прямо сейчас, - это базовая настройка кэша с casper.start(url, function () { ... }) где url=https://maizepages.umich.edu;

4b9b3361

Ответ 1

Проблема может быть связана с недавним открытием уязвимости SSLv3 (POODLE). Владельцы веб-сайтов были вынуждены удалить поддержку SSLv3 со своих веб-сайтов. Поскольку PhantomJS < v1.9.8 использует SSLv3 по умолчанию, вы должны использовать TLSv1:

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 обработчик событий, например, в начале вашего 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);
});

Если это действительно проблема с SSLv3, ошибка будет выглядеть примерно так:

Код ошибки: 6. Описание: SSL-подтверждение не выполнено


Как и в стороне, вы также можете запустить с параметром командной строки --ignore-ssl-errors=true, если в сертификате что-то не так.