【问题标题】:WGET 401 UnauthorizedWGET 401 未经授权
【发布时间】:2012-02-08 21:03:18
【问题描述】:

我正在尝试使用带有 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'

感谢任何帮助!

【问题讨论】:

  • 你的命令对我来说完美无瑕......
  • 我尝试了wget http://wireless.fcc.gov/uls/data/complete/l_micro.zip 并得到了一个74693506 字节的文件l_micro.zip,其sha1sum 为1f8393bf6231bfa9689ec91cab6a660244f35605。
  • 您的网络上有透明代理吗?你能在你的 IE 会话上运行 wireshark 或 fiddler 看看它有什么不同吗?

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


【解决方案1】:

如果网站有简单的htpassword设置,你可以试试:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 完美...我调用的 API 没有发送身份验证挑战。 This option 强制 wget 始终发送 Authorization 标头。
    【解决方案3】:

    您的网络上有一个 Blue Coat 安全 Web 网关,响应中的行证明了这一点:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        尝试使用this Firefox 扩展名。它会生成一个 wget 或 curl 命令,可以从 bash 复制和运行。

        【讨论】:

        • 太棒了!谢谢你,帮了我很大的忙!
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          尝试使用 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 下载任何内容:)

          【讨论】:

          • 我尝试了你的建议,并在我的浏览器中使用了我自己的 UA,但没有帮助。它似乎打开和关闭,当我今天早上打开我的电脑时,它运行良好,不管设置如何,最近停止工作。这可能是防火墙问题还是其他原因?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-06
          • 2018-05-19
          • 2020-06-11
          • 2017-02-22
          • 2018-10-08
          • 2018-01-05
          • 1970-01-01
          相关资源
          最近更新 更多