У 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.