Estou usando o seguinte código com base no exemplo loadspeed.js para abrir um site https: // que também requer autenticação de servidor 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();
});
}
Não está carregando a página o tempo todo. Oque pode estar errado aqui? Os sites protegidos devem ser tratados de forma diferente? O site pode ser acessado com sucesso pelo navegador.
Estou começando com o Phantom agora e acho que é bom demais para parar de brincar, mesmo que não esteja avançando com esse problema.
fonte
O problema é provavelmente devido a erros de certificado SSL. Se você iniciar o phantomjs com a opção --ignore-ssl-errors = yes , ele deve continuar a carregar a página como faria se não houvesse erros de SSL:
Eu vi alguns sites tendo problemas com a implementação incorreta de seus certificados SSL ou eles expiraram, etc. Uma lista completa de opções de linha de comando para phantomjs está disponível aqui: http://phantomjs.org/api/command-line. html . Eu espero que isso ajude.
fonte
phantomjs --ignore-ssl-errors=yes script.js
--ignore-ssl-errors=yes
opção deve vir antes do nome do script. Obrigado por apontar isto.Observe que em 16/10/2014, o padrão do PhantomJS é usar SSLv3 para abrir conexões HTTPS. Com a vulnerabilidade POODLE anunciada recentemente, muitos servidores estão desativando o suporte SSLv3.
Para contornar isso, você deve ser capaz de executar o PhantomJS com:
Esperançosamente, PhantomJS será atualizado em breve para tornar o TLSv1 o padrão em vez de SSLv3.
fonte
teve o mesmo problema ...
--ignore-ssl-errors = yes não foi o suficiente para consertar para mim, tive que fazer mais duas coisas:
1) alterar o agente do usuário
2) tentei todos os protocolos SSL, o único que funcionou foi tlsv1 para a página em questão
Espero que isso ajude ...
fonte
Eu tive o mesmo problema (casperjs 1.1.0-beta3 / phantomjs 1.9.7). Usando --ignore-ssl-errors = yes e --ssl-protocol = tlsv1 resolveu. Usar apenas uma das opções não resolveu para mim.
fonte
Eu estava recebendo
Construir da fonte consertou para mim. Não se esqueça de usar os phantomjs que você construiu. (em vez de / usr / local / bin / phantomjs se você tiver)
fonte
Se alguém estiver usando Phantomjs com Sahi, a
--ignore-ssl-errors
opção precisa ir no arquivo browser_types.xml. Funcionou para mimfonte
Sobre o quê
shebang
?Se você estiver usando shebang para executar
phantomjs
scripts, use a seguinte linha shebangUse qualquer uma das respostas acima. Eu pessoalmente gosto,
--ignore-ssl-errors=yes
pois é irrelevante validar o certificado autoassinado dos meus servidores web de loopback.fonte
Nenhuma das outras respostas aqui me ajudou; pode ser que os sites específicos com os quais eu estava trabalhando fossem muito exigentes com seus cabeçalhos HTTP. Isso é o que funcionou:
Eu descobri que o PhantomJS estava usando "Keep-Alive" (maiúsculo), e a conexão não estava sendo mantida ativa. :)
fonte
Eu estava pegando
SSL Handshake Failed
ontem. Eu tentei muitas combinações de opções phantomJS (--ignore-ssl-errors=yes
etc.), mas nenhuma delas funcionou.Atualizar para o phantomJS 2.1.1 corrigiu isso.
Usei as instruções de instalação do phantomJS em https://gist.github.com/julionc/7476620 , alterando a versão do phantomJS para 2.1.1.
fonte
Na máquina em que você está tentando executar o phantomjs para se conectar a um servidor remoto, execute "openssl ciphers". Copie e cole as cifras listadas na opção de linha de comando --ssl-ciphers = "". Isso informa ao servidor da web que está se conectando quais cifras estão disponíveis para uso na comunicação com seu cliente. Se você não definir os disponíveis em sua própria máquina, ele pode usar qualquer cifra que sua máquina não entenda que os navegadores modernos padrão fazem e que são usados para a configuração padrão.
fonte
A única coisa que funcionou para mim foi aumentar os phantomjs de 1.9x para 2.x;)
fonte