использование wget против защищенного сайта с NTLM - PullRequest
17 голосов
/ 14 июля 2009

Попытка отразить локальный сайт интрасети и найти предыдущие вопросы, используя 'wget'. Он отлично работает с сайтами, которые являются анонимными, но я не смог использовать его против сайта, который ожидает имя пользователя \ пароль (IIS с интегрированной аутентификацией Windows).

Вот что я передаю:

wget -c --http-user = 'домен \ пользователь' --http-пароль = pwd http://local/site -dv

Вот выходные данные отладки (заметьте, я, очевидно, заменил некоторые фиктивными значениями):

Setting --verbose (verbose) to 1
DEBUG output created by Wget 1.11.4 on Windows-MSVC.

--2009-07-14 09:39:04--  http://local/site
Host `local' has not issued a general basic challenge.
Resolving local... seconds 0.00, x.x.x.x
Caching local => x.x.x.x
Connecting to local|x.x.x.x|:80... seconds 0.00, connected.
Created socket 1896.
Releasing 0x003e32b0 (new refcount 1).

---request begin---
GET /site/ HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: local
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.1
Date: Tue, 14 Jul 2009 13:39:04 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Content-Length: 4431
Content-Type: text/html

---response end---
401 Access Denied
Closed fd 1896
Unknown authentication scheme.
Authorization failed.

Ответы [ 5 ]

9 голосов
/ 16 октября 2010

Проверка подлинности NTLM нарушена в wget 1.11, вместо этого используйте 1.10.

8 голосов
/ 10 января 2014

Curl на самом деле, вероятно, лучший инструмент для извлечения контента с веб-серверов, прошедших проверку подлинности NTLM. Вы можете получить эквивалентную функцию для предложенной командной строки wget, используя:

curl --anyauth --user username:password http://someserver/site
2 голосов
/ 14 июля 2009

Я видел ссылки на возможность использования NTLM Authorization Proxy Server для решения подобных проблем.

1 голос
/ 17 февраля 2018

Я нашел решение.
Это обходной путь для базовой аутентификации IIS7.

Когда аутентификация успешна, она отправляет следующий заголовок http:

'Authorization: < type > < credentials >'.

Так что мы можем сделать авторизацию в браузере и скопируйте этот заголовок из браузера (аддон firebug) или сгенерируйте:

$ echo -en 'username:password' | base64
dXNlcm5hbWU6cGFzc3dvcmQK
$ echo 'dXNlcm5hbWU6cGFzc3dvcmQK' | base64 -d
username:password

пример:

$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/
0 голосов
/ 07 апреля 2015

использовать --auth-no-challenge параметр (wget 1.11+) (теперь он считается небезопасным)

...