// standalone script that spawns a web server from SlimerJS // start it with `slimerjs-0.9.6/slimerjs webserver.js` "use strict"; var nbPages = 3; var page_i = 0; var pages = []; for (var i = 0; i < nbPages; i++) { pages[i] = require("webpage").create(); pages[i].customHeaders = { "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "User-Agent":"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36", }; } var webserver = require("webserver").create(); // use your exact hostname here. Otherwise the webserver won't be accessible webserver.listen('ec2-22-173-41-22.compute-1.amazonaws.com:5000', function(request, response) { console.log('requested' + request.url); var infos = request.path.split('/'); if (infos.length === 2) { var url = infos[1]; page_i = (++page_i) % nbPages; console.log('using ' + page_i); var page = pages[page_i]; page.open(url).then(function(){ page.evaluateAsync(function(__end) { setTimeout(function() { var canvas = document.querySelector('canvas'); var body = document.querySelector('body'); body.appendChild(canvas); while ( body.firstChild.tagName !== 'CANVAS' ) body.removeChild( body.firstChild ); }, 2200); }); setTimeout(function() { var imagesrc = page.renderBase64('PNG'); response.writeHead(200, {'Content-Type': 'image/png'}); response.setEncoding('binary'); response.write(atob(imagesrc)); response.close(); }, 100 + 2200); }); } else { response.statusCode = 404; response.write('Not found'); response.close(); } }); console.log('Listening on 5000');