iis - 带有phantomjs的cntlm代理

标签 iis proxy phantomjs windows-authentication ntlm

我正在尝试在我的 Windows 机器上使用 cntlm 代理与 IIS 上的本地 Web 应用程序对话,该应用程序使用来自 PhantomJS 的 Windows 身份验证。要创建代理,我正在做:cntlm -v -u username@domain -p password -l 1456 localhost:80
我的应用程序位于 localhost/myapp
为了测试这是否有效,我尝试浏览到 localhost:1456/myapp 但我总是遇到身份验证挑战,并且似乎没有合理的用户名/密码组合有效。关于为什么此设置可能无法按预期工作的任何想法?

当我在浏览器中点击代理端点时,这是来自 cntlm 的输出:

http://pastebin.com/xvvmfsGV

最佳答案

在与这个概念搏斗了一段时间后,我终于想出了如何进行设置。

安装 cntlm 后,我从命令提示符运行以下命令:

"c:\Program Files (x86)\Cntlm\cntlm.exe" -u <user_name> -d <domain_name> -H

这会询问您的密码并吐出三个哈希值以在配置文件中使用。

我在 cntlm.ini 中减少了所需的配置到:
Username    <user_name>
Domain      <domain_name>

PassLM          <LM_hash>
PassNT          <NT_hash>
PassNTLMv2      <NTLMv2_hash>

Proxy       192.168.7.1:80 #random proxy
NoProxy *

Listen      3133 # unused port

cntlm 强制您指定一个顶级代理,即使您不需要或有一个,因此该选项的任何有效数字都可以。设置 NoProxy*确保任何请求永远不会传递到指定的虚假代理。

运行 "c:\Program Files (x86)\Cntlm\cntlm.exe" -f在控制台中以验证一切正常。否则,将其作为服务启动和停止。

为了使用 phantomjs 进行测试,我使用了以下脚本:
var page = require('webpage').create();

page.open('http://<machine_name>/myapp', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});
<machine_name>不能是 localhost因为 phantomjs 在主机为 localhost 时绕过代理,因此请改用您的机器名称或 IP 地址。

运行它:phantomjs --proxy=localhost:3133 test.js

关于iis - 带有phantomjs的cntlm代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31209449/

相关文章:

java - 如果有 flash 插件,phantomjs 无法加载页面

silverlight - Lightswitch : Load operation failed for query 'GetAuthenticationInfo' . 远程服务器返回错误:NotFound

php - Windows 身份验证可以与 IIS 上的 PHP 一起用于 ODBC 连接吗?

c# - 存储通过 wcf 传输的类

c - SOCKS5 错误 400 Tor

linux - 如何使用不同的导出 IP 一次运行多个 Tor 进程?

javascript - 使用 Nightwatch 进行测试时未获得预期的像素高度

c# - IIS 下的多个端点

asp.net - 在 WebDeploy 中使用哪个用户帐户

javascript - 在 phantomJS 中使用 angularJS 函数