Created
May 29, 2016 16:16
-
-
Save xAlstrat/17c90cf3c6dabfd711c45d66b019ab0c to your computer and use it in GitHub Desktop.
CasperJS WebServer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//PhantomJS server for scraping | |
//define ip and port to web service | |
var ip_server = 'my_ip:8585'; | |
//includes web server modules | |
var server = require('webserver').create(); | |
var service; | |
var casperreq = require('casper'); | |
//Save login an other cookies | |
function saveCookies(){ | |
var fs = require('fs'); | |
var cookies = JSON.stringify(phantom.cookies); | |
fs.write('cookies.txt', cookies, 644); | |
} | |
//Load saved cookies | |
function loadCookies(){ | |
var fs = require('fs'); | |
var data = fs.read('cookies.txt'); | |
phantom.cookies = JSON.parse(data); | |
} | |
//Gets the specified paramameter from the url | |
function getParameterByName(name, url) { | |
name = name.replace(/[\[\]]/g, "\\$&"); | |
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), | |
results = regex.exec(url); | |
if (!results) return null; | |
if (!results[2]) return ''; | |
return decodeURIComponent(results[2].replace(/\+/g, " ")); | |
} | |
//Processes a client request | |
function process_request(request, response){ | |
if(filterRequest(request)){ | |
response.write('Access denied.'); | |
response.close(); | |
return; | |
} | |
console.log('Accepted request.'); | |
var url; | |
if(request.method == 'POST'){ | |
url = request.post.url; | |
} | |
else{ | |
url = decodeURIComponent(getParameterByName('url', request.url)); | |
} | |
if(!url || url.length === 0){ | |
response.write(JSON.stringify({status:'error', message:'No url specified'})); | |
response.close(); | |
} | |
console.log('Trying to open: '+url); | |
var casper = casperreq.create({ | |
pageSettings: { | |
loadImages: false, | |
loadPlugins: false, | |
userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' | |
} | |
}); | |
//Reloads cookies | |
loadCookies(); | |
//Deactivates javascript for efficiency | |
casper.options.pageSettings.javascriptEnabled = false; | |
//Starts casper | |
casper.start(); | |
//Opens the specified url | |
casper.thenOpen(url, function(){ | |
}); | |
casper.run(function(){ | |
var html = this.getHTML(); | |
var resp = {status: 'ok', content:html}; | |
response.write(html); | |
response.close(); | |
}); | |
} | |
service = server.listen(ip_server, process_request); | |
console.log('Server started at http://'+ip_server); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment