【问题标题】:How to use HTTP basic auth in SpookyJS如何在 SpookyJS 中使用 HTTP 基本身份验证
【发布时间】:2015-06-17 17:00:04
【问题描述】:

我写了一点代码来使用带有 htaccess 保护的 CasperJS 访问我的 Wordpress 页面。该脚本应该登录然后更新插件。此时我可以登录并从应该更新的插件创建屏幕截图。 (CasperJS 也可以正常工作)

现在我希望这个 sn-p 在服务器上工作。所以我用

express,幽灵,节点

我找到了this spookysn-p 并尝试将我的 CasperJS 代码插入其中。但现在我无法用 SpookyJS 克服 htaccess 保护。有什么想法吗?

下面的这段代码应该可以在带有幽灵的nodejs服务器上运行

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug',
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
    pageSettings: {
        loadImages:  false,         
        loadPlugins: false        
    },
    viewportSize: {
        width: 1900,
        height: 1200
    }

});
var x = require('casper').selectXPath;
var user_email = '<login-name>';
var user_pass = '<login-password';
var selector = '.update-link';

casper.start();

casper.setHttpAuth('<username>', '<password>');

casper.thenOpen('<wordpress url with htaccess', function() {

});

// wordpress login
casper.then(function() {
    this.page.evaluate(function(a,b) {
        document.querySelector("input[name='log']").value = a
        document.querySelector("input[name='pwd']").value = b;
        document.querySelector("#wp-submit").submit(); //nothing happened
    }, user_email, user_pass);
}).then(function(){

});

casper.thenClick(x('//*[@id="wp-submit"]'), function () {
    console.log("clicked login")
});

// An example to mark all plugins to update
casper.thenOpen('<wordpress site>/wp-admin/plugins.php', function() {
    this.waitForSelector(selector, function then() {
        this.evaluate(function (sel) {
            var x =document.querySelectorAll(sel);

            for (i = 0; i < x.length; i++) {
                x[i].style.backgroundColor = "red";
            }
        }, selector);
    });
});



casper.then(function () {
    casper.capture('update_me.png');
})

casper.run();

【问题讨论】:

    标签: javascript node.js casperjs basic-authentication spookyjs


    【解决方案1】:

    SpookyJS 似乎没有提供与 CasperJS 的 setHttpAuth() 等效的功能,但您仍然可以在创建过程中通过 pageSettings 属性传递用户名和密码:

    var spooky = new Spooky({
        child: {
            transport: 'http'
        },
        casper: {
            logLevel: 'debug',
            verbose: true,
            pageSettings: {
                userName: 'some username',
                password: 'some password'
            }
        }
    }, function (err) {
        // your script here
    });
    

    【讨论】:

    • 谢谢!这行得通,但你有一个小错误 userName 而不是 username :)
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2011-11-12
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    相关资源
    最近更新 更多