使用phantomjs的Windows身份验证[英] Windows authentication using phantomjs

问题描述

我将phantomjs作为我最新项目中UI自动化的可能解决方案,但是我似乎无法使Windows身份验证正常工作.我已经尝试设置page.settings.userName和page.settings.password,但是下面的摘要总是得到 401 ,而基础堆栈没有努力解决它.我的搜索fu使我失败了,所以我来到社区寻求帮助.

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

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

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

推荐答案

对我来说,这种情况非常完美. 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);
    }
 }

其他推荐答案

有一个开放式 Phantomjs问题进行持续的讨论.看来phantomjs不支持(自动/集成)NTLM身份验证,这意味着它将无法与需要集成的Windows身份验证的服务器相对.

其他推荐答案

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

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

我不确定这可能是版本2的东西. AFAIK不支持通过当前用户的凭证,这真是可耻.

本文地址:https://www.itbaoku.cn/post/1739955.html