Skip to content

Instantly share code, notes, and snippets.

@bjrmatos
Last active August 29, 2015 14:07
Show Gist options
  • Save bjrmatos/d192e455ca91803d4783 to your computer and use it in GitHub Desktop.
Save bjrmatos/d192e455ca91803d4783 to your computer and use it in GitHub Desktop.
redirects for phantomjs
var system = require('system'),
webpage = require('webpage'),
t,
mainUrl,
address;
if (system.args.length === 1) {
console.log('Usage: loadspeed.js <some URL>');
phantom.exit();
}
t = Date.now();
mainUrl = address = system.args[1];
renderPage(address);
function renderPage(urlToLoad) {
var page = webpage.create(),
redirectURL = null;
console.log('..LOADING ' + urlToLoad + '..');
// METHOD 1 FOR HANDLE REDIRECTS
page.onNavigationRequested = function(url, type, willNavigate, main) {
console.log('ON NAVIGATION REQUESTED: ' + url);
if (main && url !== address) {
address = url;
console.log('..REDIRECTING FROM ' + urlToLoad + ' TO '+ url + '..');
page.close();
renderPage(url);
}
};
console.log('..OPENING ' + urlToLoad + '..');
page.open(urlToLoad, function(status) {
var exportedImgName = 'images/' +parseInt(Math.random() * 1000, 10) + parseInt(Math.random() * 1000, 10) + '.png';
if (redirectURL) {
console.log('..The ' + urlToLoad + ' are redirecting to ' + redirectURL + '..');
return renderPage(redirectURL);
} else if (status === 'success') {
t = Date.now() - t;
console.log('-------------------------------------');
console.log('Original requested url: ' + mainUrl);
console.log('Url loaded: ' + urlToLoad);
console.log('Loading time: ' + t + ' msec');
page.render(exportedImgName);
console.log('Snapshot saved to ' + exportedImgName);
console.log('-------------------------------------');
} else {
console.log('-------------------------------------');
console.log('FAIL to load the address: ' + status);
console.log('-------------------------------------');
}
console.log('..EXIT..');
phantom.exit();
});
}
function renderPage(url) {
var page = require('webpage').create();
var redirectURL = null;
page.onResourceReceived = function(resource) {
if (url == resource.url && resource.redirectURL) {
redirectURL = resource.redirectURL;
}
};
page.open(url, function(status) {
if (redirectURL) {
renderPage(redirectURL);
} else if (status == 'success') {
// ...
} else {
// ...
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment