Сайты, не принимающие заголовок агента 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?
Ответы
Ответ 1
Похоже, что сервер Yahoo выполняет некоторую эвристику, основанную на 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:*/*
, что означает дать мне все, что у вас есть.
Ответ 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
Вам необходимо установить как пользовательский агент, так и референт:
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