cntlm прокси с фантомами

Я пытаюсь использовать прокси-сервер cntlm на моем компьютере с Windows для связи с локальным веб-приложением на IIS, которое использует проверку подлинности Windows от PhantomJS. Для создания прокси я делаю: cntlm -v -u username@domain -p password -l 1456 localhost:80

Мое приложение живет в localhost/myapp

Чтобы проверить, работает ли это, я пытаюсь просмотреть localhost:1456/myapp но я всегда получаю вызов аутентификации, и никакая разумная комбинация имени пользователя и пароля, кажется, не работает. Любые мысли о том, почему эта установка может работать не так, как ожидалось?

Когда я попадаю в прокси-сервер в браузере, это вывод cntlm:

http://pastebin.com/xvvmfsGV

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

<machine_name> не может быть localhost потому что phantomjs обходит прокси, когда хост localhost, так что вместо этого используйте имя вашего компьютера или IP-адрес.

Чтобы запустить это: phantomjs --proxy=localhost:3133 test.js

Другие вопросы по тегам