WGET 401未经授权

时间:2012-02-08 21:03:18

标签: http wget http-status-code-401 unauthorized

我正在尝试使用WGET的批处理文件从这里下载公共FCC文件

http://wireless.fcc.gov/uls/data/complete/l_micro.zip

当我最初使用参数

运行批处理文件时
wget --server-response -owget.log http://wireless.fcc.gov/uls/data/complete/l_micro.zip 

它因HTTP 401未授权错误而失败。我可以在这一点上重试并且它一直在失败。但是我注意到,如果我打开IE,开始下载并在提示保存时取消,我可以重新运行批处理文件并完美执行!

以下是来自日志的详细服务器响应

--2012-02-06 14:32:24--  http://wireless.fcc.gov/uls/data/complete/l_micro.zip
Resolving wireless.fcc.gov (wireless.fcc.gov)... 192.104.54.158
Connecting to wireless.fcc.gov (wireless.fcc.gov)|192.104.54.158|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Location: REMOVED - appears to have my IP
  Cache-Control: no-cache
  Pragma: no-cache
  Content-Type: text/html; charset=utf-8
  Connection: close
  Content-Length: 513
Location: REMOVED [following]
--2012-02-06 14:32:24--  REMOVED
Resolving REMOVED... 192.168.2.11
Connecting to REMOVED|192.168.2.11|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 401 Unauthorized
  Cache-Control: no-cache
  Pragma: no-cache
  WWW-Authenticate: NTLM
  WWW-Authenticate: BASIC realm="AD_BCAAA"
  Content-Type: text/html; charset=utf-8
  Proxy-Connection: close
  Set-Cookie: BCSI-CS-8ECFB6B4AA642EF0=2; Path=/
  Connection: close
  Content-Length: 575
Authorization failed.

这是执行我的小IE程序并让它运行后的日志

--2012-02-08 15:52:43--  http://wireless.fcc.gov/uls/data/complete/l_micro.zip
Resolving wireless.fcc.gov (wireless.fcc.gov)... 192.104.54.158
Connecting to wireless.fcc.gov (wireless.fcc.gov)|192.104.54.158|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Server: Sun-Java-System-Web-Server/7.0
  Date: Fri, 27 Jan 2012 18:37:51 GMT
  Content-type: application/zip
  Last-modified: Sun, 22 Jan 2012 11:18:09 GMT
  Etag: "46fa95c-4f1bf071"
  Accept-ranges: bytes
  Content-length: 74426716
  Connection: Keep-Alive
  Age: 1045014
Length: 74426716 (71M) [application/zip]
Saving to: `l_micro.zip'

任何帮助表示赞赏!

7 个答案:

答案 0 :(得分:24)

如果该网站只是一个htpasswd设置,您可以尝试:

wget --user=admin --ask-password https://www.yourwebsite.com/file.zip

答案 1 :(得分:9)

您的网络上有一个Blue Coat安全网关,如响应中的行所示:

Set-Cookie: BCSI-CS-8ECFB6B4AA642EF0=2; Path=/

看起来它希望您进行身份验证,可能是您的域凭据。尝试使用--http-user--http-passwd传递它们。

答案 2 :(得分:6)

我使用了--auth-no-challenge,确切的错误就解决了。

答案 3 :(得分:1)

我在基于xwiki的网站上遇到了类似的问题。经过几次尝试,我找到了一些对我有用的组合

  

wget --no-check-certificate --auth-no-challenge -k -nc -p -l 1 -r https://user:password@host.domain

我认为关键是--auth-no-challenge

答案 4 :(得分:1)

我来到这里试图找出为什么wget在另一个系统上发出401未经授权的消息时问题没有发生。

从源代码安装更高版本的wget后(我的发行版中没有二进制文件),它可以工作。我无法解释原因,除非它必定是某种错误,所以如果以上都没有解决您的问题,请考虑升级wget。

答案 5 :(得分:0)

尝试使用wget设置用户代理字符串 - 例如

--user-agent=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)  

网站拒绝来自某些用户代理的请求是完全可行的,特别是如果他们希望绕过通常的信息路径(即通过网页)。

虽然这并不能解释你的问题,但无论如何这都是个好主意。也许该网站实现了一种机制,当您使用“已知”浏览器(例如IE)进行浏览时,它会将您的IP缓存为“安全”,然后允许您IP中的任何用户代理下载任何内容:)

答案 6 :(得分:0)

尝试将this扩展名用于Firefox。它会生成wgetcurl命令,可以从bash复制并运行该命令。