このコマンドを実行すると:
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の使用時にユーザーエージェントがブロックされないようにする方法はありますか?
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:*/*
を追加します。
次のコンテンツで~/.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
これで、ほとんどの(すべて?)ファイル共有(ストリーミングビデオ)サイトからダウンロードできるようになりました。
ユーザーエージェントとリファラーの両方を設定する必要があります。
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