wget ntlm mirroring

usando wget contra un sitio protegido con NTLM



mirroring (5)

Intentando reflejar un sitio de intranet local y he encontrado preguntas anteriores utilizando ''wget''. Funciona muy bien con sitios que son anónimos, pero no he podido usarlo contra un sitio que está esperando un nombre de usuario / contraseña (IIS con autenticación de Windows integrada).

Esto es lo que paso:

wget -c --http-user = ''dominio / usuario'' --http-password = pwd http://local/site -dv

Aquí está la salida de depuración (nota que reemplazé algunos con valores ficticios obviamente):

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.


Curl es en realidad una mejor herramienta para obtener contenido de servidores web autenticados con NTLM. Puede obtener una función equivalente a su línea de comandos wget propuesta usando:

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


Encontré solución.
Es una solución alternativa para la autenticación básica IIS7.

Cuando la autenticación es exitosa, envía el siguiente encabezado http:

''Authorization: < type > < credentials >''.

Así que podemos hacer la autorización en el navegador y copiar estos parámetros de encabezado desde el navegador (complemento de firebug) o generar:

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

ejemplo:

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



La autenticación NTLM está rota en wget 1.11, use 1.10 en su lugar.


use la --auth-no-challenge (wget 1.11+) (ahora se considera insegura)