【问题标题】:Windows authentication using phantomjs使用 phantomjs 的 Windows 身份验证
【发布时间】:2013-11-19 20:02:09
【问题描述】:

我正在寻找 phantomjs 作为我最新项目中 UI 自动化的可能解决方案,但我似乎无法让 Windows 身份验证正常工作。我试过设置page.settings.userNamepage.settings.password,但是下面的sn-p 总是得到一个401 并且底层堆栈没有努力解决它。我的搜索失败了,所以我来社区寻求帮助。

var page = require('webpage').create();

page.onResourceReceived = function(response) {
    phantom.exit(response.status);
};

page.open('http://bing.com');

【问题讨论】:

    标签: c# phantomjs windows-authentication


    【解决方案1】:

    有一个开放的PhantomJS Issue 正在进行讨论。 PhantomJS 似乎不支持(自动/集成)NTLM 身份验证,这意味着它不适用于需要集成 Windows 身份验证的服务器。

    【讨论】:

    • 关于这个问题的任何更新? phantomjs 现在支持 windows auth 了吗?
    • 看起来 Phantom JS 2.0 可以支持 NTLM/Kerberos 身份验证。尽管它看起来不像是开箱即用的。见 - github.com/ariya/phantomjs/issues/13262
    【解决方案2】:

    对我来说,这个案例完美无缺。 mike-rogers solution

    var _driverOptions = new PhantomJSOptions();
    var _driverService = PhantomJSDriverService.CreateDefaultService();
    _driverOptions.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
    _driver = new PhantomJSDriver(_driverService, _driverOptions);
    
    
    using (Impersonation.LogonUser(domain, login, pass, LogonType.Interactive))
    {
        using (var proxy = new NtlmProxy(new Uri("http://yoursite.com/"), options))
        {
            _driver.Navigate().GoToUrl(url);
        }
     }
    

    【讨论】:

      【解决方案3】:

      您可以将您的域凭据添加到 URL:

      var driver = new PhantomJSDriver();
      driver.Manage().Window.Size = new System.Drawing.Size(1024, 1024);
      driver.Url = "http://myusername:mypassword@localhost/myapp";
      

      我认为这可能是第 2 版的东西,我不确定。 AFAIK 不支持通过当前用户的凭据,这是一种耻辱。

      【讨论】:

        猜你喜欢
        • 2017-10-03
        • 2017-11-24
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 2015-12-07
        • 1970-01-01
        • 2010-10-05
        相关资源
        最近更新 更多