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


当我运行此命令时:

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时用户代理不会被阻止?


36
2018-06-19 03:46


起源




答案:


雅虎服务器似乎做了一些启发式的基础 User-Agent 在一个案例中 Accept 标头设置为 */*

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


65
2018-06-30 11:35



不只是雅虎过滤掉这样的请求 - 总是要注意的事情! - user3791372


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

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


30
2017-12-08 21:54



这对我很有用。 - Leo Ufimtsev


您需要设置user-agent和referer:

 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

1
2018-05-10 22:59