2015-07-03 65 views
6

我想在我的Windows机器上使用cntlm代理与在PhantomJS中使用Windows身份验证的IIS上的本地Web应用程序交谈。要创建代理,我做:cntlm -v -u [email protected] -p password -l 1456 localhost:80cntlm代理与phantomjs

我的应用程序的生命在localhost/myapp

为了测试是否不工作的,我尝试浏览localhost:1456/myapp,但我总是得到一个权威性的挑战和不理智的用户名/密码组合似乎工作。有关为什么此设置可能无法按预期工作的任何想法?

当我打了代理的端点在浏览器中,这是从cntlm输出:

http://pastebin.com/xvvmfsGV

回答

8

这个概念了,而我终于想通了如何得到这个成立后摔跤。

安装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