2009-07-14 10 views
16

Próba zwierciadlania lokalnej strony intranetowej i znalezienia poprzednich pytań za pomocą "wget". Działa wspaniale z witrynami, które są anonimowe, ale nie byłem w stanie użyć go w witrynie, która oczekuje nazwy użytkownika \ hasło (IIS ze zintegrowanym uwierzytelnianiem systemu Windows).używanie wget przeciwko chronionej witrynie przy użyciu NTLM

Oto co mijam w:

wget -c --http-user = 'domena \ user' --http-password = pwd http://local/site -dv

Oto wyjście debugowania (nota wymieniłem niektóre z wartościami atrapy oczywiście):

 
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. 

Odpowiedz

9

Uwierzytelnianie NTLM jest zepsute w wget 1.11, zamiast tego użyj wersji 1.10.

+4

Dodanie linku do odpowiedniego biletu błędu przydałoby się tutaj – Daenyth

+0

Nie można jeszcze przetestować, jeśli jest to prawda. Ale potwierdzam inne zachowanie w stdout w przypadku NTLM. http://www.mail-archive.com/[email protected]/msg00003.html –

+0

Nie mogę również potwierdzić, że działa również dla mnie. 'wget --version' zgłasza' GNU Wget 1.12 zbudowany na cygwin. + digest + ipv6 + nls + ntlm + opie + md5/openssl + https -gnutls + openssl + iri'. Ale w moim przypadku serwer oferuje tylko "WWW-Authenticate: Negotiate" (który uważam za "NTLM" lub "Kerberos" - do uzgodnienia). –

7

Zwinięcie jest prawdopodobnie lepszym narzędziem do pobierania treści z serwerów sieciowych uwierzytelnianych przez NTLM. Można uzyskać równoważną funkcję do swojej planowanej linii poleceń za pomocą wget:

curl --anyauth --user username:password http://someserver/site 
+0

curl działał jak wdzięk, dziękuję. – diogovk

+0

Używając "--ntlm" zamiast "--anyauth" pracował dla mnie. W przeciwnym razie, wydaje mi się, że wybrał uwierzytelnianie "negocjuj", które nie powiodło się (nie powiodło się również "--ntlm --negotiate"). –

0

Użyj -–auth-no-challenge opcję (wget 1.11+)

1

znalazłem rozwiązanie.
Jest to obejście dla podstawowego uwierzytelniania IIS7.

Kiedy auth jest successeful wysłać kolejny nagłówek http:

'Authorization: <type> <credentials>'. 

Więc jesteśmy w stanie zrobić autoryzację w przeglądarce i kopię tego params Główka przeglądarce (Firebug addon) lub generowania:

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

przykład:

$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/ 
Powiązane problemy