Tirando screenshots confiáveis de sites? Phantomjs e Casperjs retornam capturas de tela vazias em alguns sites

Abra uma página da web e faça uma captura de tela.

Usando ONLY phantomjs: (este é um script simples, na verdade, é o exemplo de script usado em seus documentos.http://phantomjs.org/screen-capture.html

var page = require('webpage').create();
page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});

O problema é que, para alguns sites (como o github), engraçado o suficiente detecta e não serve phantomjs e nada está sendo renderizado. O resultado égithub.png é um arquivo png branco em branco.

Substitua o github por say: "google.com" e você obterá uma captura de tela (adequada) conforme pretendido.

No começo, pensei que era um problema do Phantomjs, então tentei executá-lo no Casperjs com:

casper.start('http://www.github.com/', function() {
    this.captureSelector('github.png', 'body');
});

casper.run();

Mas eu tenho o mesmo comportamento dos Phantomjs.

Então achei que isso é provavelmente um problema do agente do usuário. Como em: Github fareja Phantomjs e decide não mostrar a página. Então eu configurei o user agent como abaixomas isso ainda não funcionou.

var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36';
page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});

Então tentei analisar a página e, aparentemente, alguns sites (novamente como o github) não parecem estar enviando nada pelo ar.

Usando casperjs, tentei imprimir o título. E para google.com volteiGoogle mas no github.com voltei bupkis. Código de exemplo:

var casper = require('casper').create();

casper.start('http://github.com/', function() {
    this.echo(this.getTitle());
});

casper.run();  

O mesmo que acima, também produz o mesmo resultado em puramente phantomjs.

Atualizar:

Isso pode ser um problema de tempo? O github é super lento? Duvido, mas vamos testar mesmo assim ..

var page = require('webpage').create();
page.open('http://github.com', function (status) {
    /* irrelevant */
   window.setTimeout(function () {
            page.render('github.png');
            phantom.exit();
        }, 3000);
});

E o resultado ainda é bupkis. Portanto, não, não é uma questão de tempo.

Como alguns sites como o github estão bloqueando os phantomjs?Como podemos tirar screenshots de TODAS as páginas da web de maneira confiável? Necessário para ser rápido e sem cabeça.

questionAnswers(1)

yourAnswerToTheQuestion