Я использую следующий код, основанный на примере loadpeed.js, чтобы открыть сайт https: //, который также требует аутентификации 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();
});
}
Его неспособность загружать страницу все время. Что здесь могло быть не так? Можно ли по-другому обращаться с защищенными сайтами? Однако доступ к сайту из браузера возможен.
Я только начинаю с Phantom прямо сейчас и считаю его слишком хорошим, чтобы перестать возиться, даже если я не продвигаюсь вперед с этой проблемой.
источник
Проблема, скорее всего, связана с ошибками сертификата SSL. Если вы запустите phantomjs с параметром --ignore-ssl-errors = yes , он должен продолжить загрузку страницы, как если бы не было ошибок SSL:
Я видел несколько веб-сайтов, у которых возникли проблемы с неправильной реализацией своих SSL-сертификатов или с истекшим сроком их действия и т. Д. Полный список параметров командной строки для phantomjs доступен здесь: http://phantomjs.org/api/command-line. html . Надеюсь, это поможет.
источник
phantomjs --ignore-ssl-errors=yes script.js
--ignore-ssl-errors=yes
опция должна стоять перед именем скрипта. Спасибо, что указали на это.Обратите внимание, что с 2014-10-16 PhantomJS по умолчанию использует SSLv3 для открытия HTTPS-соединений. Из- за недавно объявленной уязвимости POODLE многие серверы отключают поддержку SSLv3.
Чтобы обойти это, вы должны иметь возможность запускать PhantomJS с помощью:
Надеюсь, PhantomJS скоро будет обновлен, чтобы сделать TLSv1 по умолчанию вместо SSLv3.
источник
возникла такая же проблема ... --ignore-ssl-errors = да было недостаточно, чтобы исправить это для меня, пришлось сделать еще две вещи:
1) изменить пользовательский агент
2) перепробовал все ssl-протоколы, единственный, который работал был tlsv1 для рассматриваемой страницы
Надеюсь, это поможет ...
источник
У меня возникла та же проблема (casperjs 1.1.0-beta3 / phantomjs 1.9.7). Использование --ignore-ssl-errors = yes и --ssl-protocol = tlsv1 решило эту проблему. Использование только одного из вариантов для меня не решило.
источник
Я получал
Сборка из исходников исправила это для меня. Не забудьте использовать созданные фантомы. (вместо / usr / local / bin / phantomjs, если он у вас есть)
источник
Если кто-то использует Phantomjs с Sahi, этот
--ignore-ssl-errors
параметр необходимо указать в вашем файле browser_types.xml. У меня это сработало.источник
Что о
shebang
?Если вы используете shebang для выполнения
phantomjs
скриптов, используйте следующую строку shebangИспользуйте любой из приведенных выше ответов.
--ignore-ssl-errors=yes
Мне лично нравится, поскольку не имеет значения проверять самозаверяющий сертификат моих петлевых веб-серверов.источник
Ни один из других ответов здесь мне не помог; может случиться так, что конкретные сайты, с которыми я работал, были слишком разборчивы в своих заголовках HTTP. Вот что сработало:
Я обнаружил, что PhantomJS использует Keep-Alive (с заглавной буквы), и соединение не поддерживается. :)
источник
Получил
SSL Handshake Failed
вчера. Я перепробовал множество комбинаций параметров phantomJS (--ignore-ssl-errors=yes
и т. Д.), Но ни один из них не работал.Обновление до phantomJS 2.1.1 исправило это.
Я использовал инструкции по установке phantomJS на https://gist.github.com/julionc/7476620 , изменив версию phantomJS на 2.1.1.
источник
На машине, на которой вы пытаетесь запустить phantomjs для подключения к удаленному серверу, запустите «openssl ciphers». Скопируйте и вставьте перечисленные шифры в параметр командной строки --ssl-ciphers = "". Это сообщает подключающемуся веб-серверу, какие шифры доступны для связи с вашим клиентом. Если вы не установите те, которые доступны на вашем собственном компьютере, он может использовать любой шифр, который ваша машина не понимает, что современные браузеры по умолчанию используют, которые используются для настройки по умолчанию.
источник
Единственное, что у меня сработало, это поднять phantomjs с 1.9x до 2.x;)
источник