21

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

这是我传入的内容:

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

这是调试输出(注意我显然用虚拟值替换了一些):

将 --verbose(详细)设置为 1
Wget 1.11.4 在 Windows-MSVC 上创建的 DEBUG 输出。

--2009-07-14 09:39:04-- http://local/site
主机“本地”没有发出一般的基本挑战。
解析本地...秒 0.00, xxxx
缓存本地 => xxxx
连接到本地|xxxx|:80... 秒 0.00,已连接。
创建套接字 1896。
释放 0x003e32b0(新引用计数 1)。

---请求开始---
获取/站点/HTTP/1.0
用户代理:Wget/1.11.4
接受: */*
主办方:本地
连接:保持活动

---请求结束---
已发送 HTTP 请求,等待响应...
---响应开始---
HTTP/1.1 401 访问被拒绝
服务器:Microsoft-IIS/5.1
日期:格林威治标准时间 2009 年 7 月 14 日星期二 13:39:04
WWW-认证:协商
WWW-认证:NTLM
内容长度:4431
内容类型:文本/html

---响应结束---
401 访问被拒绝
关闭 fd 1896
未知的身份验证方案。
授权失败。

4

5 回答 5

10

NTLM 身份验证在 wget 1.11 中被破坏,请改用 1.10。

于 2010-10-16T19:49:40.383 回答
9

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

curl --anyauth --user username:password http://someserver/site
于 2014-01-10T16:45:24.393 回答
2

我已经看到有关能够使用NTLM 授权代理服务器来解决这些类型问题的参考资料。

于 2009-07-14T14:04:16.073 回答
1

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

于 2015-04-07T08:55:09.860 回答
0

我找到了解决方案。
这是基本身份验证 IIS7 的解决方法。

当身份验证成功时,它会发送下一个 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/
于 2018-02-17T19:37:31.233 回答