cntlm 代理与 phantomjs
cntlm proxy with phantomjs
我正在尝试在我的 windows 机器上使用 cntlm 代理与 IIS 上使用来自 PhantomJS 的 Windows 身份验证的本地 Web 应用程序通信。要创建代理,我正在做:cntlm -v -u username@domain -p password -l 1456 localhost:80
我的应用位于 localhost/myapp
为了测试这是否有效,我尝试浏览到 localhost:1456/myapp
,但我总是收到身份验证挑战,而且似乎没有合理的 username/password 组合有效。关于为什么此设置可能无法按预期工作的任何想法?
当我在浏览器中访问代理端点时,这是 cntlm 的输出:
经过一段时间的思考,我终于弄明白了如何进行设置。
安装 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
因为当主机是 localhost
时 phantomjs 会绕过代理,所以用你的机器名或 ip 地址代替。
给运行它:phantomjs --proxy=localhost:3133 test.js
我正在尝试在我的 windows 机器上使用 cntlm 代理与 IIS 上使用来自 PhantomJS 的 Windows 身份验证的本地 Web 应用程序通信。要创建代理,我正在做:cntlm -v -u username@domain -p password -l 1456 localhost:80
我的应用位于 localhost/myapp
为了测试这是否有效,我尝试浏览到 localhost:1456/myapp
,但我总是收到身份验证挑战,而且似乎没有合理的 username/password 组合有效。关于为什么此设置可能无法按预期工作的任何想法?
当我在浏览器中访问代理端点时,这是 cntlm 的输出:
经过一段时间的思考,我终于弄明白了如何进行设置。
安装 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
因为当主机是 localhost
时 phantomjs 会绕过代理,所以用你的机器名或 ip 地址代替。
给运行它:phantomjs --proxy=localhost:3133 test.js