web-dev-qa-db-ja.com

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の使用時にユーザーエージェントがブロックされないようにする方法はありますか?

42
Joe Mornin

AcceptヘッダーがUser-Agentに設定されている場合、Yahooサーバーは*/*に基づいて何らかのヒューリスティックを実行するようです。

受け入れる: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:*/*を追加します。

72
filip26

次のコンテンツで~/.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

これで、ほとんどの(すべて?)ファイル共有(ストリーミングビデオ)サイトからダウンロードできるようになりました。

35
erik

ユーザーエージェントとリファラーの両方を設定する必要があります。

 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
bags307