使用slimerJS获取URL重定向并获取最终URL的屏幕截图

时间:2017-12-04 12:04:47

标签: javascript redirect phantomjs headless-browser slimerjs

如何在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无头?

1 个答案:

答案 0 :(得分:0)

您可以使用回调onUrlChanged()来保存重定向网址

var urls = [];
page.onUrlChanged = function(url) {
    urls.push(url);
};

此代码段可以帮助您

相关问题