尝试镜像本地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.
答案 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+)(它现在被视为不安全)