¿Toma capturas de pantalla confiables de sitios web? Phantomjs y Casperjs devuelven capturas de pantalla vacías en algunos sitios web

Abra una página web y tome una captura de pantalla.

Usando SOLAMENTE phantomjs: (este es un script simple, de hecho es el script de ejemplo utilizado en sus documentos.http://phantomjs.org/screen-capture.html

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

El problema es que, para algunos sitios web (como github), lo suficientemente divertido es detectar de alguna manera y no servir phantomjs y no se procesa nada. El resultado esgithub.png es un archivo png blanco en blanco.

Reemplace github con say: "google.com" y obtendrá una captura de pantalla agradable (adecuada) como se pretende.

Al principio pensé que esto era un problema de Phantomjs, así que intenté ejecutarlo a través de Casperjs con:

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

casper.run();

Pero tengo el mismo comportamiento que con Phantomjs.

Entonces pensé que esto es muy probable que sea un problema de agente de usuario. Como en: Github olfatea Phantomjs y decide no mostrar la página. Así que configuré el agente de usuario como a continuaciónPero eso todavía no funcionó.

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();
});

Entonces traté de analizar la página y aparentemente algunos sitios (nuevamente como github) no parecen estar enviando nada por el cable.

Usando casperjs intenté imprimir el título. Y para google.com volvíGoogle pero para github.com volví bupkis. Código de ejemplo:

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

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

casper.run();  

Lo mismo que arriba también produce el mismo resultado en phantomjs puramente.

Actualizar:

¿Podría ser esto un problema de tiempo? ¿Github es súper lento? Lo dudo pero vamos a probar de todos modos ...

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

Y el resultado sigue siendo bupkis. Entonces no, no es un problema de tiempo.

¿Cómo algunos sitios como github bloquean phantomjs?¿Cómo podemos tomar capturas de pantalla de forma confiable de TODAS las páginas web? Se requiere que sea rápido y sin cabeza.

Respuestas a la pregunta(1)

Su respuesta a la pregunta