неділю, 14 листопада 2010 р.

wget, HTTP 3xx i пачка фалів

Сьогодні хотів собі закачати пару аудіо-книжок послухати по дорозі на роботу - надибав непогану підбірку на ex.ua.
На роздачі в торенті нікого нема - довелось качати з їх файлового сервера - а це ж ціла купа посилань на маленькі mp3-шки! Думав, що FlashGot допоможе, але нажаль справжнє ім’я файлу можна отримати лише після редіректу з початкового запиту на файловий сервер і він мені зберігав цілу купу файлів з малоінформативними іменами, ще й без розширень, що завело б мій плеєр у ступор.

Ось так працює зараз звичайний wget:

$ wget http://www.ex.ua/get/112003
--2010-11-15 01:26:28--  http://www.ex.ua/get/112003
Resolving www.ex.ua... 93.183.204.162
Connecting to www.ex.ua|93.183.204.162|:80... connected.
HTTP request sent, awaiting response... 302 Moved
Location: http://fs7.www.ex.ua/get/112003/08_03_05.mp3 [following]
--2010-11-15 01:26:29--  http://fs7.www.ex.ua/get/112003/08_03_05.mp3
Resolving fs7.www.ex.ua... 77.120.118.79
Connecting to fs7.www.ex.ua|77.120.118.79|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1042414 (1018K) [audio/mpeg]
Saving to: `112003'

59% [======================>                    ] 617,266     1001K/s

Це мабуть тому, зо FlashGot не використовує (чи принаймні не виносить у налаштування) таку чудову опцію wget як trust-server-names, що дозволить нам зберегти файл з правильною назвою:

$ wget http://www.ex.ua/get/112003 --trust-server-names
--2010-11-15 01:51:48--  http://www.ex.ua/get/112003
Resolving www.ex.ua... 93.183.204.162
Connecting to www.ex.ua|93.183.204.162|:80... connected.
HTTP request sent, awaiting response... 302 Moved
Location: http://fs7.www.ex.ua/get/112003/08_03_05.mp3 [following]
--2010-11-15 01:51:49--  http://fs7.www.ex.ua/get/112003/08_03_05.mp3
Resolving fs7.www.ex.ua... 77.120.118.79
Connecting to fs7.www.ex.ua|77.120.118.79|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1042414 (1018K) [audio/mpeg]
Saving to: `08_03_05.mp3'

100%[=========================>] 1,042,414   1.03M/s   in 1.0s  

2010-11-15 01:51:50 (1.03 MB/s) - `08_03_05.mp3' saved [1042414/1042414]

Ця опція з'явилась після того, як пофіксали проблему з безпекою, що полягала в наступному: "a remote attacker could create the file with an arbitrary name (e.g. .wgetrc), and possibly run arbitrary code.
ATTENTION: This update changes previous behaviour by ignoring the filename supplied by the server during redirects. To re-enable previous behaviour, use the new --trust-server-names option."

Тобто проблему не вирішили, а лише зробили старий функціонал доступним лише з застосуванням додаткової опції.
Але як змусити FlashGot її використати? Мабуть, напишу їм листа :)

"Бєда, бєда, огорчєніє..." (c)

Але на своє щастя я помітив маленьке посилання зверху топіка - "список файлів", по якому можна завантажити звичайний текстовий документ з посиланнями на всі файли зразу!
Всі проблеми вирішились однією командою:

$ wget http://www.ex.ua/filelist/52100.urls -O links; wget -i links --trust-server-names=on; rm links

Доречі, на цьому ж сайті є підбірка MythBusters: http://www.ex.ua/view/3365.
Список фалів тут. Але зважайте, що там 56 Гб :)

2 коментарі:

  1. Дуже дякую за опцію --trust-server-names. Нарешті я знову зможу нормально качати серіали.

    Бо коли файли почали називатись цифрами, я вже подумав що це на ex.ua якісь проблеми.

    ВідповістиВидалити
  2. Наздоров'я!
    Як бачите - це просто такий захист "від дурака"... Навіщо кодити більше? :)

    ВідповістиВидалити