Подтвердить что ты не робот

Сайты, не принимающие заголовок агента 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?

4b9b3361

Ответ 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