使用NTLM对受保护站点使用wget

时间:2009-07-14 13:48:30

标签: wget ntlm mirroring

尝试镜像本地Intranet站点并使用“wget”找到以前的问题。它适用于匿名网站,但我无法在期望用户名\密码的网站(具有集成Windows身份验证的IIS)上使用它。

这是我传递的内容:

  

wget -c --http-user ='domain \ user'--http-password = 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 个答案:

答案 0 :(得分:9)

在wget 1.11中破坏了NTLM身份验证,而是使用1.10。

答案 1 :(得分:8)

实际上,Curl可能是从NTLM身份验证的Web服务器获取内容的更好工具。您可以使用以下命令获得与建议的wget命令行等效的函数:

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

答案 2 :(得分:2)

我见过能够使用NTLM Authorization Proxy Server来解决这些类型的问题。

答案 3 :(得分:1)

我找到了解决方案 这是Basic auth IIS7的解决方法。

当auth成功时,它会发送下一个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/

答案 4 :(得分:0)

使用--auth-no-challenge选项(wget 1.11+)(它现在被视为不安全)