网站不接受wget用户代理标头

时间:2013-06-19 03:46:23

标签: http wget user-agent

当我运行此命令时:

wget --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"  http://yahoo.com

...我得到了这个结果(文件中没有其他内容):

<!-- hw147.fp.gq1.yahoo.com uncompressed/chunked Wed Jun 19 03:42:44 UTC 2013 -->

但是当我运行wget http://yahoo.com而没有--user-agent选项时,我会获得整页。

用户代理与我当前浏览器发送的标头相同。为什么会这样?有没有办法确保在使用wget时不会阻止用户代理?

3 个答案:

答案 0 :(得分:71)

User-Agent标头设置为Accept的情况下,雅虎服务器似乎根据*/*进行了一些启发式验证。

  

接受:text / html

为我做了诀窍。

e.g。

wget  --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"  http://yahoo.com

注意:如果您没有声明Accept标题,那么wget会自动添加Accept:*/*,这意味着可以为您提供任何内容。

答案 1 :(得分:34)

我创建了一个~/.wgetrc文件,其中包含以下内容(从askapache.com获取,但使用较新的用户代理,因为否则它始终不起作用):

header = Accept-Language: en-us,en;q=0.5
header = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
header = Connection: keep-alive
user_agent = Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
referer = /
robots = off

现在我可以从大多数(全部?)文件共享(流媒体视频)网站下载。

答案 2 :(得分:1)

您需要同时设置用户代理和引用:

 wget  --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" --referrer  connect.wso2.com http://dist.wso2.org/products/carbon/4.2.0/wso2carbon-4.2.0.zip