如何在slimerJS中获取所有网址重定向并将其保存到数组中,然后呈现最终网址的屏幕截图。
例如,如果我通过slimer运行red.com但是它通过php重定向到blue.com,然后通过javascript再次重定向到yellow.com,我该如何将这些重定向保存到数组中?
重定向完成后,我会截取最终网址的截图,上面例子中为yellow.com。
我使用slimer 1.0因为我想在无头模式下使用slimer。
这是我周末写的一些简化代码。
call to slimer (windows)
./slimerjs/src/slimerjs.bat --headless slimer-redirects.js http://google.com
使用下面的脚本调用google.com并没有获得重定向到google.co.uk(我在英国)。 奇怪的是,下面的代码确实检测到了javascript重定向。 下面的代码的另一个问题是它似乎没有取得多个,即> 2当它工作时重定向。
var system = require("system");
var page;
var myurl = system.args[1];
var renderPage = function(url) {
page = require('webpage').create();
page.onNavigationRequested = function(url, type, willNavigate, main) {
if (url != myurl) {
myurl = url;
// page.close(); // makes some redirects hang. google.com for example
setTimeout('renderPage(myurl)', 1);
}
};
page.open(myurl)
.then(function (status) {
if (status === "success") {
// I would then render screenshot here and exit
console.log("Final URL is: " + myurl);
slimer.exit();
}
});
};
renderPage(myurl);
获取重定向网址似乎是一项非常简单的任务,但我无法弄明白。 如果使用slimer不可能,我也想了解其他选项。无论是否有木偶操作者,Chrome无头?
答案 0 :(得分:0)
您可以使用回调onUrlChanged()来保存重定向网址
var urls = [];
page.onUrlChanged = function(url) {
urls.push(url);
};
此代码段可以帮助您