【问题标题】:Sites not accepting wget user agent header不接受 wget 用户代理标头的站点
【发布时间】:2013-06-15 11:23:48
【问题描述】:

当我运行这个命令时:

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 -->

但是当我在没有--user-agent 选项的情况下运行wget http://yahoo.com 时,我得到了整页。

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

【问题讨论】:

    标签: http wget user-agent


    【解决方案1】:

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

    接受:文本/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:*/*,这意味着你可以给我任何东西。

    【讨论】:

    • 不只是雅虎会过滤掉这样的请求 - 需要时刻注意!
    • 通过添加alias mwget='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"' 编辑您的~/.bash_profile,这样您就不必每次都处理参数。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你需要同时设置 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" --referer  connect.wso2.com http://dist.wso2.org/products/carbon/4.2.0/wso2carbon-4.2.0.zip
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-12
        相关资源
        最近更新 更多