У Google Chrome на Linux, де flv, якщо не в / tmp?


37

Мені подобається зберігати відео, тому що

  1. Мені подобається буферизувати їх, а потім відтворювати їх назад у своєму медіаплеєрі,
  2. Я хочу мати змогу зупинити / перезапустити браузер, не втрачаючи все завантажене відео та
  3. Спалах часто виходить з ладу і дає мені сірі поля .

Для багатьох сайтів із Flash-відео (включаючи Youtube) я можу знайти файл flv /tmp, який зазвичай називають FlashXX.... Але деякі сайти вдається запобігти появі цього файлу, наприклад, http://blip.tv/file/3627639 . Можливо, це взагалі не накопичено на диск, але це було б дивно, оскільки все відео, що триває годину, може бути завантажено без моєї оперативної пам'яті.

У Firefox я можу знайти flv всередині його каталогу кешу. Але мені цікаво, як це зробити в Chrome. Я спробував заглянути під ~ / .cache / google-chrome /, але не знайшов нічого, що виглядало б правильно. Наприклад:

$ ls -lt .cache/google-chrome/Cache/ | head
total 261492
-rw------- 1 yang yang 16621568 2010-12-05 03:41 data_1
-rw------- 1 yang yang   966656 2010-12-05 03:40 data_0
-rw------- 1 yang yang 23076864 2010-12-05 03:40 data_2
-rw------- 1 yang yang   262512 2010-12-05 03:40 index
-rw------- 1 yang yang   108412 2010-12-05 03:35 f_005603
-rw------- 1 yang yang    62607 2010-12-05 03:32 f_005602
-rw------- 1 yang yang    54998 2010-12-05 03:32 f_005601
-rw------- 1 yang yang    31127 2010-12-05 03:32 f_005600
-rw------- 1 yang yang   799389 2010-12-05 03:32 f_0055ff

$ ls -1t ~/.cache/google-chrome/Cache/* | head | xargs file
/home/yang/.cache/google-chrome/Cache/data_1:   data
/home/yang/.cache/google-chrome/Cache/data_0:   data
/home/yang/.cache/google-chrome/Cache/data_2:   data
/home/yang/.cache/google-chrome/Cache/index:    data
/home/yang/.cache/google-chrome/Cache/f_005603: GIF image data, version 89a, 600 x 471
/home/yang/.cache/google-chrome/Cache/f_005602: PNG image, 600 x 746, 8-bit colormap, non-interlaced
/home/yang/.cache/google-chrome/Cache/f_005601: PNG image, 140 x 342, 8-bit/color RGB, non-interlaced
/home/yang/.cache/google-chrome/Cache/f_005600: JPEG image data, JFIF standard 1.02
/home/yang/.cache/google-chrome/Cache/f_0055ff: JPEG image data, JFIF standard 1.02
/home/yang/.cache/google-chrome/Cache/f_0055fe: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)

Я спробував переглянути відкриті файли для процесу Flash, але не побачив жодних видалених Flash-файлів, про які існує відповідь внизу:

$ ps x | grep npviewer
27148 ?        Rl     0:24 /usr/lib/nspluginwrapper/i386/linux/npviewer.bin --plugin /usr/lib/flashplugin-installer/libflashplayer.so --connection /org/wrapper/NSPlugins/libflashplayer.so/27135-2
27504 pts/2    S+     0:00 grep --color=auto npviewer

$ ls -l /proc/27148/fd/
total 0
lr-x------ 1 yang yang 64 2011-02-16 13:48 0 -> /dev/null
lrwx------ 1 yang yang 64 2011-02-16 13:48 1 -> /home/yang/.xsession-errors
l-wx------ 1 yang yang 64 2011-02-16 13:48 10 -> /home/yang/.mozilla/firefox/8wy5j0z2.default/key3.db
lrwx------ 1 yang yang 64 2011-02-16 13:48 11 -> pipe:[5500575]
lrwx------ 1 yang yang 64 2011-02-16 13:48 12 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 13 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 14 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:48 15 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 16 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 17 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 18 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:48 19 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 2 -> /home/yang/.xsession-errors
lrwx------ 1 yang yang 64 2011-02-16 13:48 20 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lr-x------ 1 yang yang 64 2011-02-16 13:48 21 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 22 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 23 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 24 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 25 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 26 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 27 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 28 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 29 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:48 3 -> socket:[5496032]
lrwx------ 1 yang yang 64 2011-02-16 13:51 30 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 31 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 32 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 33 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 34 -> /home/yang/.adobe/Flash_Player/cert8.db (deleted)
lrwx------ 1 yang yang 64 2011-02-16 13:51 35 -> /home/yang/.adobe/Flash_Player/key3.db (deleted)
l-wx------ 1 yang yang 64 2011-02-16 13:53 36 -> pipe:[5500575]
lr-x------ 1 yang yang 64 2011-02-16 13:53 37 -> pipe:[5500576]
l-wx------ 1 yang yang 64 2011-02-16 13:53 38 -> pipe:[5500576]
lrwx------ 1 yang yang 64 2011-02-16 13:53 39 -> socket:[5500580]
lrwx------ 1 yang yang 64 2011-02-16 13:48 4 -> socket:[5496131]
lr-x------ 1 yang yang 64 2011-02-16 13:48 5 -> pipe:[5496139]
l-wx------ 1 yang yang 64 2011-02-16 13:48 6 -> pipe:[5496139]
lr-x------ 1 yang yang 64 2011-02-16 13:48 7 -> socket:[5496140]
l-wx------ 1 yang yang 64 2011-02-16 13:48 8 -> socket:[5496141]
lr-x------ 1 yang yang 64 2011-02-16 13:48 9 -> /home/yang/.mozilla/firefox/8wy5j0z2.default/cert8.db

Я спробував виконувати straceвсі хромовані процеси для того, щоб все виглядало так, як це може бути запис файлу:

strace -p (pgrep chrome|xargs -I_ echo -p _)

але перегляд write/ writev/ selectдзвінків лише вказав на кілька FD, які /proc/_/fd/виявились трубами / розетками (імовірно, щоб процеси спілкувались один з одним). Також спробували те ж саме в npviewer.binпроцесі.

Я також спробував просто перевірити всі файли, на які вказували /proc/*/fd/( будь-які процеси), які були нещодавно змінені, але не знайшов нічого, що було б схоже на те, що воно містило flv. Я також спробував те саме перевірити на нещодавно змінених файлах під ~/.cache/google-chrome/.

Якщо це має значення, я використовую версію розробленого каналу Chrome, для якої я вважаю (завжди?) Використовує власну безпечну реалізацію Flash. На даний момент цього оновлення я використовую Chrome 10.0.648.45 dev. Відповідно до http://www.adobe.com/software/flash/about/ я працюю 10.2.152.27. Я вже спробував кілька ящиків Ubuntu зараз. Я також спробував кілька ящиків Ubuntu зараз, з однаковими результатами.

Хто-небудь хоче скористатися цим?


Це може допомогти, якщо ви надали посилання на сторінку, з якою у вас виникли проблеми.
— Софі Альперт

@Ben: На жаль, я мав намір це зробити. Додано!
— Ян

Відповіді:


31

Я зауважив, що останні плагіни Flash зберігають файли в / tmp, але вони використовують фокус для їх видалення та зберігання файлового файлу відкритим, щоб зберегти їх живими. Це означає, що вони все ще зберігаються на диску (доки файл file відкриється флеш-плагіном), але вони не видно у списку каталогів (оскільки файл видалено).

Про це я писав деякий час: отримання флеш-відео з майже видалених файлів

Але все залежить від версії Flash плагіна. Він також використовувався для зберігання фільмів у / tmp або в кеші браузера.


Ваша дуже цікава публікація в блозі описує це з Firefox, але мені цікаво, як це зробити за допомогою Chrome. Я дивився на lsof та / proc, але не знайшов жодних ознак від’єднаних файлів. Чи мали ви успіх приклад відео?
— Ян

1
@Yang: Той самий точний спосіб працює з хромом, принаймні на моєму ноутбуці - лише перевірений. Я думаю, це залежить більше від флеш-плеєра, ніж від веб-браузера. Яку версію Flash плагіна у вас є?
— liori

За інформацією adobe.com/software/flash/about, я працюю 10.2.152.27, що, на мою думку, є вбудованим у Chrome Flash (використовуючи Chrome 10.0.648.45 dev). Я вже спробував кілька ящиків Ubuntu зараз.
— Ян

2
Як зауваження, здається, що він працював із усіма флеш-програвачами, але це вже не так. Здається, працює з деякими менш відомими сайтами, але не з Youtube. Я можу лише здогадуватися, що Youtube знайшов спосіб уберегти файл від файлової системи…
— liori

1
вона все ще працює для мене з версією Chromium 33.0.1750.152-1 (Debian Jessie) та версією flashplayer 11,2202,346 (за інформацією adobe.com/software/flash/about )
— jopasserat

24

Перевірка / proc // fd / зробила для мене хитрість:

$ ps x | grep npviewer
24657 ?        Sl    12:33 /usr/lib/nspluginwrapper/i386/linux/npviewer.bin ...
$ cd /proc/24657/fd
$ ls -l
total 0
lr-x------ 1 omab omab 64 2011-02-11 02:13 0 -> /dev/null
lrwx------ 1 omab omab 64 2011-02-11 02:13 1 -> /home/omab/.xsession-errors
lr-x------ 1 omab omab 64 2011-02-11 02:13 10 -> /home/omab/.mozilla/firefox/og3emjry.default/key3.db
lrwx------ 1 omab omab 64 2011-02-11 02:13 11 -> /tmp/FlashXX0WG0J5 (deleted)
lr-x------ 1 omab omab 64 2011-02-11 02:13 12 -> pipe:[9004372]
...

Файл 11 , який позначено як "(видалено)", все ще вказує на файл, створений спочатку в / tmp /, тому він не повністю видалений:

$ file -L 11 
11: Macromedia Flash Video

робити:

$ mplayer 11

відтворить файл FLV.


Ось досить зручний командний рядок, адаптований з вищевказаної процедури. Може знадобитися незначне коригування для вашої дистрибуції / установки та процесів, які ви зазвичай виконуєте.

Ви можете замінити flashна npviewer, замінити vlcна mplayer:

FLASHPID=\`pgrep -f flash\`; vlc /proc/$FLASHPID/fd/\`ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\`

Це не працює для мене - я оновив свою відповідь деталями того, що бачу. Чи знаєте ви, чому це може не працювати для мене? Я спробував на декількох машинах зараз.
— Ян

До речі, ви можете зберегти flv за допомогоюmplayer 11 -dumpstream -dumpfile outputname
— laewl

8
Ви можете просто скопіювати його cp 11 / ... / ...
— omab

10

Flash потоки більшість часу - це прості файли, отримані за допомогою http-запиту.

Для вашого відео о http://blip.tv/file/3627639

У Google Chrome ви можете ознайомитись із мережевими запитами ( ctrl + shift + i), шукайте найдовше у вашій справі:

Fosslc-..
/file/get

натисніть на нього і скопіюйте / вставте URL з поля "Запити URL" на нову вкладку

http://blip.tv/file/get/Fosslc-2...to823.flv?showplayer=20110401114509&source=1


Фантастичний! Я спокушаюсь прийняти вашу відповідь, оскільки вона насправді працювала на мене, але я зачекаю трохи більше часу, щоб дізнатись, чи є якісь інші відповіді на адресу, де розміщено завантажений флв.
— Ян

будь ласка, не приймайте це, оскільки це просто хитрість для вашої справи. Мені дуже хочеться знати, де на пеклі зберігаються тимчасові відеофайли.
— Дуд

Хе, гаразд. Я теж хочу це знати. Моя думка полягає в тому, що він зберігається десь у файлах data_ *, які, ймовірно, є цілими для браузера. Я не міг знайти жодного інструменту, щоб перекопати їх, однак, не маючи занурення в базу кодів Chrome.
— Ян

9

Ян,

Так, це в ~ / .cache / google-chrome / Cache (ну, у мене встановлений Chromium, тому я знайшов його в ~ / .cache / Chrome / Cache).

Якщо ви переглядаєте відео та сортуєте за міткою часу:

$ ls -rt | tail
f_00003a
f_00003b
f_00003c
f_00003d
data_2
data_3
index
data_1
f_000040
data_0

Потім, якщо ви запустите команду файлу, ви побачите, які з них Flash:

$ file $(ls -rt | tail)
f_00003a: Macromedia Flash data (compressed), version 9
f_00003b: Macromedia Flash data (compressed), version 9
f_00003c: Macromedia Flash data (compressed), version 10
f_00003d: PNG image data, 1024 x 768, 8-bit/color RGBA, non-interlaced
data_2:   data
data_3:   data
index:    data
data_1:   data
f_000040: Macromedia Flash Video
data_0:   data

Гаразд, я встановив Google Chrome, щоб перевірити це.

Схоже, каталог Google Chrome трохи відрізняється від Chromium.

Використовуючи ті самі методи (тут із зазначенням ідентифікатора процесу браузера, виведення видалено кілька стовпців для наочності):

$ lsof -p 27922 | grep Cache
chrome  27922 mem     ~/.cache/google-chrome/Default/Cache/index
chrome  27922 mem     ~/.cache/google-chrome/Default/Cache/data_3
chrome  27922 mem     ~/.cache/google-chrome/Default/Cache/data_2
chrome  27922 mem     ~/.cache/google-chrome/Default/Cache/data_1
chrome  27922 mem     ~/.cache/google-chrome/Default/Cache/data_0
chrome  27922  71u    ~/.cache/google-chrome/Default/Cache/index
chrome  27922  72u    ~/.cache/google-chrome/Default/Cache/data_0
chrome  27922  73u    ~/.cache/google-chrome/Default/Cache/data_1
chrome  27922  74u    ~/.cache/google-chrome/Default/Cache/data_2
chrome  27922  75u    ~/.cache/google-chrome/Default/Cache/data_3
chrome  27922 111u    ~/.cache/google-chrome/Default/Cache/f_00001a

Це інтригує, бо це не працює для мене. Я оновив свою відповідь пастою того, що бачу. Це працює для вас із прикладом URL-адреси blip.tv, яку я дав? Можливо, це через іншу версію Chrome - яку ви використовуєте?
— Ян

Так, я використав вашу точну URL-адресу. Ви відтворювали файл під час виконання команд? Спробуйте очистити кеш, відтворити файл, а потім виконати команди. Це працювало для мене, і я міг відтворити файл у Mplayer, щоб він працював на мене!
— jyap

На жаль, очищення кеша не допомогло. Так, файл відтворювався, коли я виконував ці команди. Оновив мою відповідь, отримавши більше інформації. Одні відповіді кажуть, що я повинен дивитись на процес Flash, інші кажуть, що я повинен переглянути один із процесів браузера, але я спробував обидва, навіть дивлячись на всі процеси. Будь-які ідеї, чому це для мене зламано? Я спробував на декількох машинах зараз.
— Ян

Я відредагував свою відповідь вище, щоб вказати ідентифікатор процесу Google Chrome і запустив команду lsof. Спробуйте це.
— jyap

5

використовуючи хром 11.0.666.0 та флеш-плагін 10.2.152

grepping для npviewer не спричинило для мене жодного спалаху, але прикріплення для flash робить:

$ ps x | grep flash
11005 ?        Rl     2:30 /usr/lib/chromium-browser/chromium-browser ... 

в основному те саме, що і jyap, запропонований вище

lsof | grep Flash

і ви можете продовжити так, як вище ...


Це не працює для мене - я оновив свою відповідь деталями того, що бачу. Чи знаєте ви, чому це може не працювати для мене? Я спробував на декількох машинах зараз.
— Ян

3

Спробуйте перерахувати відкриті файли.

lsof | grep Flash

Це працювало для вас? Для мене нічого не з'являється - я б і не здогадувався, що це не буде, враховуючи, що типові файли Flash * не відображаються у звичайному місці.
— Ян

3

Деякі з нових гравців буферують у пам'яті, щоб спробувати унеможливити використання людьми цих хитрощів. У цьому випадку ви нічого не зможете отримати.


Хоча це корисна інформація, і, маючи на увазі, я не знаю, як перевірити оперативну пам’ять (тільки що це можливо), я не погоджуюся, що ви "нічого не зможете отримати". Де є воля, там є спосіб.
— user66001

3

Я виправив це питання. Тут кроки

  1. Перейшли до плагінів про: плагіни в chrome / mozilla
  2. Клацніть Деталі, щоб переглянути додаткові відомості. Вимкніть плагін Flash. Розташування плагіна буде "/usr/lib/adobe-flashplugin/libflashplayer.so"
  3. Завантажте версію flash-програвача tar.gz звідси http://get.adobe.com/flashplayer/
  4. Витягніть цей файл і скопіюйте libflashplayer.so в / usr / lib / Chrome-браузер / плагіни. Потім увімкніть це на сторінці плагіна.
  5. Якщо ви переглядаєте будь-яке відео, воно завантажиться в /home//.cache/chromium/Default/Cache цю папку

подивіться http://www.arulraj.net/2011/03/google-chrome-download-video.html


2

Для останнього Chrome в Linux:

  1. Визначте pid плагіна Flash, який використовує Chrome:

    ps ax | grep -i chrome | grep -i flash 
    

    на даний момент плагін називається libgcflashplayer.

  2. Визначте Flash-файл, відкритий цим процесом плагіну Flash:

    file /proc/Flash_Plugin_PID/fd/* | grep -i deleted
    

    або

    lsof -p Flash_plugin_pid | grep -i deleted
    

    Шукайте видалені файли.

  3. Скопіюйте файл з /proc/[pid]/fd/[fileno]вrecovered_file.flv


2

Я використовую хром 11.06 на Ubuntu 10.04. Я знайшов свої файли flv у ~ / .cache / google-chrome / Default / Cache. Спробуйте

file * | grep Flash\ Video

2

Маленька порада від мене. Це працює в Ubuntu 10.04.

#!/bin/bash
viewer=`ps x|grep npviewer|grep -v grep |awk '{print $1}'`
echo $viewer
cd /proc/${viewer}/fd
jef=(`ls -l|awk '{print $8 " " $10}'|grep Flash|awk '{print $1}'`)
echo $jef
jef1=${#jef}
ext=`date +'%d_%m_%k_%M_%S'`
i=0
while [ "$i" -lt "$jef1" ]
do 
cp ${jef[${i}]} /fun/${jef[${i}]}"(${ext})".flv
i=`expr $i + 1`
done

Тепер ви можете запланувати цей сценарій за допомогою crontab. Це може бути оптимізовано, щоб не було дублікатів FLV-файлів.


2

Використання Firefox на Kubuntu:

export COUNT=0
export FILENAME=$1
export FILENAME=${FILENAME:=test}

PID=`ps ax | grep -i flashplugi[n] | awk '{print $1}'`
FLASH=`ls -l /proc/$PID/fd| grep Flash | awk '{print $8}'`

for N in $FLASH ; do
  COUNT=$(($COUNT+1))
  cp /proc/$PID/fd/$N ${FILENAME}_${COUNT}.flv
done

0

У мене є ще один спосіб зробити це на основі дескриптора файлів, заснованого в / proc (я використовую сучасний bash в декількох рядках)

#!/bin/bash

process="flash"
filename="flash"

readlink -f /proc/$$/exe | fgrep -q bash || {
    echo >&2 "Hey dude ! You must call $0 with bash !"
    exit 2
}

. ~/.bashrc || . /etc/profile

count=1
for pid in $(pgrep -f $process); do
    fds=$(file /proc/$pid/fd/[0-9]* | fgrep Flash | cut -d: -f1)
    for fd in $fds; do
        cp -v $fd ${filename}_${count}.flv
        ((count++))
    done
done

# vim:ts=4:sw=4
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.