Два варианта или wget его игнорирует (и берёт по умолчанию) или ругается на то, что я его вообще не указал (ошибка 411)Win98
Wget – 1.8.2
Дальше там сквид но, я думаю, он тут не причёмПример 1:
wget -s --header="Accept-Ranges: bytes" --header="Content-Range: bytes 0-15900/15902" --header="Content-Length: 15901" http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic...
ошибка 411 Length Required
Пример 2:
wget -s --header="Accept-Ranges: bytes" --header="Content-Range: bytes 0-15900/15902" --header ="Content-Length: 15901" http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic...
скачивает все 15902 байта (типа он меня вообще не понял)
ЗЫ Пример 2 отличается от примера 1 тем, что там добавлен пробел после третьего слова header
По идее wget-у должно быть абсолютно всеравно что в этих хеадерах передается. Т.е. он должен их передавать в том виде в каком получает из командной строки.Имеет смысл посмотреть что именно wget передает на сервер, т.е. полный запрос со всеми хеадерами, который получает сервер.
>По идее wget-у должно быть абсолютно всеравно что в этих хеадерах передается.
>Т.е. он должен их передавать в том виде в каком получает
>из командной строки.
>
>Имеет смысл посмотреть что именно wget передает на сервер, т.е. полный запрос
>со всеми хеадерами, который получает сервер.
Посмотрел :(
В первом случае уходит:
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0..User-Agent: Wget/1.8.2. .Host: info-images.rambler.ru..Accept: */*..Accept-Ranges: bytes..Content-Range: bytes 0-15900/15902..Content-Length: 15901Во втором
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0..User-Agent: Wget/1.8.2. .Host: info-images.rambler.ru..Accept: */*..Accept-Ranges: bytes..Content-Range: bytes 0-15900/15902..=Content-Length: 15901И что в первом случае не так (что не так во втором я вижу)
Не понял.. можно с разбивкой по строчкам? Т.е. так как получает все это сервер.
>Не понял.. можно с разбивкой по строчкам? Т.е. так как получает все
>это сервер.
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
User-Agent: Wget/1.8.2
Host: info-images.rambler.ru
Accept: */*
Accept-Ranges: bytes
Content-Range: bytes 0-15900/15902
Content-Length: 15901
>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять, чтобы это был HTTP/1.1?
А все остальное вроде верно (если в циферях не напутали).
>>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
>
>Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять,
>чтобы это был HTTP/1.1?
>
>А все остальное вроде верно (если в циферях не напутали).
Сделал HTTP/1.1
Теперь всё то же самое кроме
GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.1
Результат тот же.
Там вроде ключ -с есть. Для докачки. По крайней мере в Mandrake 9.0 точно есть и работает - сам проверял.
>Там вроде ключ -с есть. Для докачки. По крайней мере в Mandrake
>9.0 точно есть и работает - сам проверял.
Так при этом сервер получает
Range: bytes xxxxx-
Типа, надо выдавать с xxxxx и дальше
И сам отвечает, с какого – по какой из скольки и сколько будет давать.
Content-Range: bytes yyyyy-zzzzz/aaaaa
Content-Length: bbb
Если же wget-у подсунуть хедер типа
Range: bytes xxxxx-
он его передаёт дальше, но сам уже не понимает, что это докачка (-с я не ставлю). Сервер честно даёт тело файла просто wget его игнорирует, (получив 206 Partial Content, и решив, что это что-то не то, повторяет запрос).
Посмотрел, как качает в несколько струй RegetDeluxe
Делит на куски,
Начинает несколько сессий, типа
Range: bytes 0-
Range: bytes 1000-
Range: bytes 2000-
Range: bytes 3000-
Range: bytes 4000-
И не дослушивая до конца ответы сервера, сбрасывает соединение.
Как бы wget заставить прослушать на входе только необходимую часть и сбросить?
>>GET http://info-images.rambler.ru/pubd/2003/06/19/0003535550/pic... HTTP/1.0
>
>Возникло у меня тут сомнение, что HTTP/1.0 поддерживает докачку.... Может как-то повлиять,
>чтобы это был HTTP/1.1?
>
>А все остальное вроде верно (если в циферях не напутали).Вот что интересно, сервер отвечает, что он работает по протоколу HTTP/1.0, согласно rfc действительно HTTP/1.0 Range не поддерживает, а всё работает…..