2009-07-14 5 views
16

Vous essayez de mettre en miroir un site intranet local et vous avez trouvé des questions précédentes en utilisant 'wget'. Cela fonctionne très bien avec les sites qui sont anonymes, mais je n'ai pas pu l'utiliser sur un site qui attend le nom d'utilisateur \ mot de passe (IIS avec l'authentification Windows intégrée).Utilisation de wget contre un site protégé avec NTLM

Voici ce que je passe:

wget -c --http-user = 'domain \ user' --http-password = PWD http://local/site -dv

Voici la sortie de débogage (notez que j'ai remplacé certaines avec des valeurs fictives évidemment):

 
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. 

Répondre

9

L'authentification NTLM est interrompue dans wget 1.11, utilisez plutôt 1.10.

+4

Ajout d'un lien vers le ticket de bogue pertinent serait utile ici – Daenyth

+0

Impossible de tester si c'est vrai. Mais je confirme le comportement différent dans stdout dans le cas NTLM. http://www.mail-archive.com/[email protected]/msg00003.html –

+0

Je ne peux pas non plus confirmer que cela fonctionne également pour moi. 'wget --version' rapporte' GNU Wget 1.12 construit sur cynwin. + digérer + ipv6 + nls + ntlm + opie + md5/openssl + https -gnutls + openssl + iri'. Mais dans mon cas, le serveur n'offre que "WWW-Authenticate: Negotiate" (que je crois être soit "NTLM" soit "Kerberos" - à négocier). –

7

Curl est en fait probablement un meilleur outil pour récupérer du contenu à partir de serveurs Web authentifiés NTLM. Vous pouvez obtenir une fonction équivalente à votre ligne de commande wget proposée en utilisant:

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

curl a travaillé comme un charme, merci. – diogovk

+0

L'utilisation de "--ntlm" au lieu de "--anyauth" a fonctionné pour moi. Sinon, je pense qu'il a choisi de "négocier" l'authentification qui a échoué ("--ntlm --negotiate" a également échoué). –

0

option Utiliser -–auth-no-challenge (wget 1.11+)

1

J'ai trouvé la solution.
Il est possible de contourner pour Basic auth IIS7.

Qd est successeful il envoyer ensuite en-tête http:

'Authorization: <type> <credentials>'. 

Nous en mesure de faire l'autorisation dans le navigateur et copie cette tête params du navigateur (addon Firebug) ou générer:

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

exemple:

$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/ 
Questions connexes