56

当我运行这个命令时:

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 时不会被阻止?

4

3 回答 3

88

似乎雅虎服务器会根据User-AgentAccept头设置为*/*.

接受:文本/html

为我做了伎俩。

例如

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:*/*,这意味着给我您拥有的任何东西。

于 2013-06-30T11:35:15.627 回答
37

我创建了一个~/.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

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

于 2015-12-08T21:54:29.867 回答
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" --referer  connect.wso2.com http://dist.wso2.org/products/carbon/4.2.0/wso2carbon-4.2.0.zip
于 2014-05-10T22:59:41.230 回答