2015-07-03 63 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