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/
He visto referencias a la posibilidad de usar el Servidor Proxy de Autorización NTLM para solucionar este tipo de problemas.
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)