понедельник, 20 августа 2007 г.

Как скачать ролик с любого видеохостинга (Firefox)

В последнее время просмотр видеороликов, размещенных на различных видеохостингах вроде YouTube стал очень популярен. Практически на любом современном портале ежедневно выкладывается по несколько роликов, предоставляемых различными сервисами, количество которых увеличивается с каждым днем.

Бывает, что просмотрев очередной ролик, у вас возникает желание сохранить его к себе на компьютер. Для этого существует огромное количество расширений к браузерам, онлайн сервисов и программ. Но все они не успевают подстраиваться под постоянно растущее количество видеохостингов. И в конце концов вы натыкаетесь на какой-нибудь интересный ролик, размещенный на недавно появившимся видеохостинге, и не имеете возможности его сохранить. Вот тут то вам может пригодиться мой способ, который я собираюсь осветить в данной статье, т. к. он в некоторой степени универсальный, хотя и потребует произвести немного больше телодвижений для получения результата, нежели обычные плагины.

А помогать нам будет расширение Live HTTP Headers. Принцип его работы состоит в том, что как только мы запускаем основное окно данного расширения, оно начинает отслеживать все запросы, которые браузер отправляет серверу. И если во время загрузки очередного видеоролика посмотреть на эти запросы, то можно без труда увидеть адрес *.flv файла, который скачивает плеер перед просмотром.

На простом примере я покажу, как скачать, используя данный метод, какой-нибудь ролик с YouTube. Ниже я опишу последовательность действий, которую надо для этого проделать.
  1. Заходим на http://www.youtube.com/ и выбираем первый попавшийся ролик. В моем случае это http://www.youtube.com/watch?v=fDK08tg7oTA
  2. Открываем окно Live HTTP Headers. Пока оно пусто. Как только браузер начнет что-нибудь скачивать - веб страничку, картинку, видеоролик и т. п, информация о них будет добавляются в окно нашего расширения.
  3. Ну чтож, переходим по ссылке на выбранное нами видео (http://www.youtube.com/watch?v=fDK08tg7oTA)
  4. Как только вы перешли по ссылке, и началась загружаться страничка, в окне Live HTTP Headers стали появляться записи о каждом элементе этой страницы. Тут я вынужден сделать небольшое отступление и предупредить: в зависимости от видеохостинга и режима, в котором вы просматриваете видеоролик (на сайте видеохостинга или на чужом сайте, где просто вставили этот ролик в страницу) плеер ведет себя по-разному: либо он сразу начинает проигрывание ролика, как только завершилась загрузка страницы, либо он требует нажатия на кнопку начала проигрывания. Так вот внимание: чтобы отследить адрес ролика, вам необходимо начать его проигрывание, чтобы браузер послал запрос на сервер! В таком случае, если проигрывание ролика не начинается автоматически, то можно сначала дождаться загрузки страницы и только потом запустить Live HTTP Headers и нажать на кнопку проигрывания, чтобы уменьшить количество информации, котрое вам придется впоследствии просматривать.
  5. Все, всю необходимую информацию мы получили. Осталось теперь ее проанализировать. Не бойтесь это не сложно. :)
Информацию по каждому загружаемому элементу Live HTTP Headers выдает в следующем виде:
http://www.youtube.com/watch?v=fDK08tg7oTA

GET /watch?v=fDK08tg7oTA HTTP/1.1
Host: www.youtube.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.youtube.com/
Cookie: VISITOR_INFO1_LIVE=Jvm7Yb4LKaQ; LOCALE_PREFERENCE=86d1d09eefe6b79b4068000ce05518a4dAUAAABlbl9VUw==; use_hitbox=72c46ff6cbcdb7c5585c36411b6b334edAEAAAAw; user_omniture=3756d44ab2f6fdee26892cc5805390c2dAEAAAAw; GEO=212951233f6bdbea003cb163c3987d1acxgAAABSVSxtb3Msemh1a292c2tpeSwsLCwsLTE=; AXT=2aaeb7172ea9c5b53da7c48b01268452cywAAABnenpENVgyVWdPTjUwdllCOTlHeVRtWmRHSVI4TVRFNE56WXpNREV3TWc9PQ==; watched_video_id_list=7a56831eb98a5188b091bdfc09795e1cWwEAAABzCwAAAGZESzA4dGc3b1RB

HTTP/1.x 200 OK
Date: Mon, 20 Aug 2007 17:52:07 GMT
Server: Apache
Set-Cookie: watched_video_id_list=7a56831eb98a5188b091bdfc09795e1cWwEAAABzCwAAAGZESzA4dGc3b1RB; path=/; domain=.youtube.com
Set-Cookie: watched_video_id_list=7a56831eb98a5188b091bdfc09795e1cWwEAAABzCwAAAGZESzA4dGc3b1RB; path=/; domain=.youtube.com
Set-Cookie: watched_video_id_list=7a56831eb98a5188b091bdfc09795e1cWwEAAABzCwAAAGZESzA4dGc3b1RB; path=/; domain=.youtube.com
Content-Encoding: gzip
Cache-Control: no-cache
Content-Length: 20564
Keep-Alive: timeout=300
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8

Нас интересуют только первая строка и строка, начинающаяся с "Content-Type:". Вот все эти строки, которые я получил в о окне Live HTTP Headers:
http://www.youtube.com/watch?v=fDK08tg7oTA
Content-Type: text/html; charset=utf-8

http://ad.doubleclick.net/adj/you.watch/petsandanimals;sz=728x90;kch=2179803025;kbg=FFFFFF;kr=F;kpu=JoeMamasPlace;kvideoid=fDK08tg7oTA;ord=123141700064879.23?
Content-Type: application/x-javascript

http://img.youtube.com/vi/toMqiubq4QU/default.jpg
Content-Type: image/jpeg

http://img.youtube.com/vi/7LStNxmtxO8/default.jpg
Content-Type: image/jpeg

http://www.youtube.com/player2.swf?hl=en&video_id=fDK08tg7oTA&l=10&t=OEgsToPDskKg3Xl-P_B_bMwz_GXmAa6B&sk=_bmOCCwPgj2H0rz8tyBltQC
Content-Type: application/x-shockwave-flash

http://www.youtube.com/get_video?video_id=fDK08tg7oTA&t=OEgsToPDskKg3Xl-P_B_bMwz_GXmAa6B
Content-Type: text/html; charset=utf-8

http://cache.googlevideo.com/get_video?video_id=fDK08tg7oTA

http://74.125.10.23/get_video?video_id=fDK08tg7oTA

http://www.blogger.com/status.g?zx=49018279
Content-Type: application/xml; charset=UTF-8

http://rd.cache.l.google.com/get_video?video_id=fDK08tg7oTA
Content-Type: text/html

http://ash-v152.ash.youtube.com/get_video?video_id=fDK08tg7oTA
Content-Type: video/flv

http://video.google.com/s?ns=yt&sourceid=y&sdetail=p%3A%2F&vid=_bmOCCwPgj2H0rz8tyBltQC&docid=fDK08tg7oTA&el=detailpage&nbe=0&st=0.397&et=0.397&len=10&rt=10.609&fv=LNX%209%2C0%2C31%2C0
Content-Type: text/html

Так, вы еще не забыли, ради чего мы все это делаем? :) Надеюсь, что нет. А если все-таки забыли - напомню: мы хотим получить ссылку на *.flv файл. Так вот же он!
http://ash-v152.ash.youtube.com/get_video?video_id=fDK08tg7oTA
Content-Type: video/flv
Вбиваем данный URL в адресную строку браузера и сохраняем. Все, теперь можно просматривать полученный файл в вашем любимом видеоплеере.

Не хочу сказать, что этот способ очень удобен. Конечно, он довольно трудоемок по сравнению с обычными плагинами, в которых нужно нажать всего лишь одну кнопку. Но когда ни один из плагинов не справляется - это неплохой выход из ситуации.

Домашняя страница Live HTTP Headers - http://livehttpheaders.mozdev.org/

13 комментариев:

Анонимный комментирует...

Спасибо отчень выручило нахожу это идеальным решениям по сравнению со всеми анологичными программами это может вытащить всё +1

Анонимный комментирует...

Большое спасибо! Вы мне очень помогли !

Анонимный комментирует...

слишком много телодвижений!!! да еще прогу какую-то надо...

вероятно вы не знаете о папках с временными файлами интернета (кэш), где и находится уже просмотренный(!!!) ролик.
для разных браузеров они естественно разные, для IE это
C:\Documents and Settings\Имя_Пользователя\Local Settings\Temporary Internet Files\Content.IE5\
там находятся папки с уже закачанными файлами. и там следует искать наши ролики.
youtube флешки записывает либо вообще без разширений либо с .tmp
(замените на .FLV )

чтобы быстрее найти желанное - сортируйте список по дате или размеру файлов. чаще очищайте папку в IE, чтобы файлов было меньше.

проще всего с Оперой - все файлы в одной папке c:\Documents and Settings\Имя_Пользователя\Application Data\Opera\Opera\profile\cache4\
ищем там файлы похожие на opr06DRQ.tmp естественно последние и объемные. копируем в другую папку, меняем разширение на FLV и смотрим.
C Firefox наверное все так-же...
учись, студент ;-)

Unknown комментирует...

Анонимный, про кэш я знаю, но опыт показывает, что далеко не все ролики попадают в кэш (в том виде, о котором говорите вы) - некоторые из них складываются в "общую помойку" ${cache_dir}/_CACHE_00[1-3]_, из которой их вытащить на порядок сложнее (это я про Firefox говорю). Поэтому, на мой взгляд, данный способ наиболее оптимален (для Firefox). Другими браузерами я не пользуюсь, так что про них не говорю.

Aleks Lifey комментирует...

Кто найдет способ выдрать видео с этой страницы, дам пирожок с полки.

http://www.toyota.co.uk/cgi-bin/toyota/bv/generic_editorial.jsp?edname=IQ1_CarChapter&menuid=94356&id=MSR_IQ_NEW&zone=Zone+iQ&Failed_Reason=Invalid+Session&catname=%2ftoyota_1024_root%2fmain_nav%2fpageTopNav%2fZone+iQ&com.broadvision.session.new=Yes&Failed_Page=%2fbv%2fgeneric_editorial.jsp&navRoot=toyota_1024_root

Unknown комментирует...

Aleks Lifey, выдрал. Забрать можете здесь.

Aleks Lifey комментирует...

ой, сп

Aleks Lifey комментирует...

спасибо)
но больше интересно - как, я пользовался вышеназванной утилитой, но адресса не определил.

Unknown комментирует...

Aleks Lifey, с вашим сайтом дела обстоят гораздо хуже, чем с обычными видеохостингами. Одним Firefox-ом тут не отделаешься.

Что я делал:
* Прошел по вашему URL'у.
* Единственное, что мне приглянулось в получившимся выводе Live HTTP Headers - это строка
> http://www.toyota.co.uk/cgi-bin/toyota/bv/backoffice/CarChapterXml.jsp?range=IQ1
* Прошел по данному адресу и посмотрел его исходный код. Оказалось, что это некий аналог плейлиста.
* Посмотрел еще раз на страницу, на которую вы мне дали ссылку - непосредственно под окном видеоролика нашел его название - "iQ Radical Thinking".
* Нашел в плейлисте строку с данной фразой:
> <asset name="iQ1_CarChapter_Homepage" creation_time="13/10/08 03:22:17 PM" status="On-line" last_mod_time="13/10/08 03:27:12 PM" description="iQ Radical Thinking" alt_text="" legend="" vendor="" location="/bv/CarChapter/iQ1/homepage/iQLandingPage.swf" speed="" asset_type="Flash" rams_code="" width="" height="" plug_in_options="" author="GF" end_date="30/04/08 12:00:00 AM" publisher="GF">
и перешел по указанной в данной строке ссылке:
http://www.toyota.co.uk/bv/CarChapter/iQ1/homepage/iQLandingPage.swf
В результате чего Firefox скачал мне файл iQLandingPage.swf.
* Недолго думая, создал файл iq.html следующего содержания:
<html><head>iQ</head><body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0">
<embed src="http://www.toyota.co.uk/bv/CarChapter/iQ1/homepage/iQLandingPage.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</object></body></html>

открыл его в Firefox'е, увидел ролик и... не получил ровным счетом ничего в выводе Live HTTP Headers.
* Слегка разочарованный таким результатом, открыл wireshark и начал смотреть, откуда ко мне течет трафик. Оказалось, что данный флеш-ролик собственноручно открывает соединение и начинает принимать данные по ранее неизвестному мне протоколу RTMP. Естественно, Live HTTP Headers этого не показывает, т. к. предназначен только для для протокола HTTP.
* Открыл RTMP, узнал, что это хоть такое, и полез гуглить, чем эти данные можно перехватить. Скачал первое, что удалось найти - http://www.orbitdownloader.com/ (под Windows, но под Linux тоже, вроде, есть программы - просто не хотелось тратить на поиск время), установил, открыл только что сформированный мной HTML-файл в Internet Explorer'е, в который это дело интегрируется, и захватил шедший ко мне flv поток.
* Полученный файл преобразовал из flv в avi.

Анонимный комментирует...

http://ctc-tv.tomsk.ru/showflv?filename=sites/default/files/uploaded_files/KP-20091208-2.flv

Ну никак не скачать... поможете?

Unknown комментирует...

dimaberkut, помогу. Залил сюда.

Анонимный комментирует...

Спасибо!

Unknown комментирует...

Очень надо вытащить видеоролик отсюда о семье детдомовцев, чтобы разместить его где-нибудь ещё, на казахстанских ресурсах.

http://www.ktk.kz/ru/news/video/2012/11/27/20101

Прошу помощи.
С уважением и надеждой, Виктор