【问题标题】:cntlm proxy with phantomjs带有phantomjs的cntlm代理
【发布时间】:2015-09-21 10:49:58
【问题描述】:

我正在尝试在我的 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

【问题讨论】:

    标签: iis proxy phantomjs windows-authentication ntlm


    【解决方案1】:

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

    安装 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();
    });
    

    &lt;machine_name&gt; 不能是localhost,因为当主机为localhost 时,phantomjs 会绕过代理,因此请使用您的机器名称或 IP 地址。

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

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2016-05-11
      相关资源
      最近更新 更多