No Google Chrome no Linux, onde está o flv, se não em / tmp?

37

Eu gosto de manter vídeos porque

  1. Eu gosto de armazená-los em buffer e reproduzi-los no meu media player,
  2. Eu quero poder parar / reiniciar meu navegador sem perder todo o vídeo em buffer e
  3. O Flash frequentemente trava e me fornece as caixas cinzentas .

Para muitos sites com vídeo em Flash (incluindo o Youtube), posso encontrar o arquivo flv em /tmp , geralmente denominado FlashXX... . Mas alguns sites conseguem impedir que esse arquivo seja exibido, por exemplo link . É possível que isso não seja colocado em spool no disco, mas isso seria surpreendente, já que o vídeo inteiro de uma hora pode ser armazenado em buffer sem que minha memória RAM seja visivelmente afetada.

No Firefox, eu posso encontrar o flv dentro de seu diretório de cache. Mas estou curioso para saber como fazer isso no Chrome. Tentei pesquisar em ~ / .cache / google-chrome / mas não encontrei nada que parecesse correto. Por exemplo:

$ 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)

Eu tentei ver os arquivos abertos para o processo Flash, mas não vi nenhum arquivo Flash excluído, o que várias respostas abaixo devem existir:

$ 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

Eu tentei strace ing todos os processos do Chrome para qualquer coisa que parecesse estar escrevendo um arquivo:

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

mas olhar para as chamadas write / writev / select apenas apontou para alguns FDs que /proc/_/fd/ mostraram ser pipes / soquetes (presumivelmente para os processos conversarem entre si). Também tentei a mesma coisa no processo npviewer.bin .

Eu também tentei simplesmente inspecionar todos os arquivos apontados em /proc/*/fd/ ( qualquer processos) que foram modificados recentemente, mas não encontrei nada que parecesse conter um flv. Eu também tentei a mesma verificação nos arquivos modificados recentemente em ~/.cache/google-chrome/ .

Se isso faz diferença, estou usando a versão do canal de desenvolvimento do Chrome, que acredito (sempre?) usa sua própria implementação segura do Flash. No momento desta atualização, estou usando o Chrome 10.0.648.45 dev. De acordo com link , estou executando o 10.2.152.27. Já experimentei várias caixas do Ubuntu agora. Eu também tentei em várias caixas do Ubuntu agora, com os mesmos resultados.

Quaisquer outras pessoas querem fazer isso?

    
por Yang 20.01.2011 / 08:12

13 respostas

31

Eu observei que os plugins Flash recentes armazenam arquivos em / tmp, mas eles usam um truque para removê-los e manter um filehandle aberto para mantê-los vivos. Isso significa que eles ainda são mantidos na unidade (desde que o identificador de arquivo seja aberto pelo plug-in do Flash), mas eles não são visíveis na listagem de diretórios (porque o arquivo foi excluído).

Eu escrevi sobre isso há algum tempo: recebendo flash vídeos de quase arquivos deletados

Mas tudo depende da versão do plug-in do Flash. Ele costumava armazenar filmes em / tmp ou no cache do navegador também.

    
por 08.02.2011 / 10:58
24

Verificando / proc // fd / fez o truque para mim:

$ 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]
...

O arquivo 11 , marcado como "(excluído)", ainda aponta para o arquivo originalmente criado em / tmp /, por isso não é completamente excluído:

$ file -L 11 
11: Macromedia Flash Video

fazendo um:

$ mplayer 11

irá reproduzir o arquivo FLV.

Aqui está uma linha de comando bastante útil, adaptada do procedimento acima. Isso pode exigir pequenos ajustes para sua distribuição / instalação e quais processos você está executando normalmente.

Você pode substituir flash por npviewer , substituir vlc por mplayer :

FLASHPID=\'pgrep -f flash\'; vlc /proc/$FLASHPID/fd/\'ls -l /proc/$FLASHPID/fd | grep tmp | cut -d" " -f9\'
    
por 11.02.2011 / 05:48
10

Flash streams na maior parte do tempo são arquivos simples obtidos por uma solicitação http.

Para o seu vídeo em http://blip.tv/file/3627639

No Google Chrome, você pode inspecionar solicitações de rede ( ctrl + shift + i ) procure o mais longo para terminar no seu caso:

Fosslc-..
/file/get

clique nele e copie / cole o URL do campo "Solicitar URL" para uma nova guia

link

    
por 07.04.2011 / 17:42
9

Yang,

Sim, está em ~ / .cache / google-chrome / Cache (bem, tenho o Chromium instalado, por isso encontrei-o em ~ / .cache / chromium / Cache).

Se você assistir ao vídeo e classificar por data e hora:

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

Então, se você executar o comando file, verá quais são 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

OK, eu instalei o Google Chrome para verificá-lo.

Parece que o diretório do Google Chrome é um pouco diferente do Chromium.

Usando as mesmas técnicas (especificando aqui o ID do processo do navegador, a saída removeu algumas colunas para maior clareza):

$ 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
    
por 07.02.2011 / 21:24
5

usando o cromo 11.0.666.0 e o plug-in flash 10.2.152

O

grepping para o npviewer não produziu nenhum processo flash para mim, mas o grepping para flash é:

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

basicamente a mesma coisa que o jyap acima sugerido com

lsof | grep Flash

e você pode prosseguir como acima ...

    
por 15.02.2011 / 08:26
3

Tente listar os arquivos abertos.

lsof | grep Flash
    
por 05.02.2011 / 00:54
3

Alguns dos novos jogadores armazenam memória na memória para tentar impossibilitar que as pessoas usem esses truques. Você não poderá obter nada nesse caso.

    
por 14.03.2011 / 04:09
3

Eu consertei esse problema. Aqui os passos são

  1. Execute plugins instalados sobre: plugins em chrome / mozilla
  2. Clique em Detalhes para ver com mais em formação. Desativar o Flash Plugar. A localização do plugin seria “/Usr/lib/adobe-flashplugin/libflashplayer.so”
  3. Baixe a versão tar.gz do flash jogador daqui link
  4. Extraia esse arquivo e copie o arquivo libflashplayer.so para / usr / lib / chromium-browser / plugins. Em seguida, ative isso na página do plug-in.
  5. Se você visualizar qualquer vídeo, download em /home//.cache/chromium/Default/Cache esta pasta

dê uma olhada link

    
por 19.03.2011 / 21:43
2

Para o mais recente Chrome no Linux:

  1. Identifique o pid do plug-in Flash usado pelo Chrome:

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

    a partir de agora o plugin é chamado libgcflashplayer .

  2. Identifique o arquivo Flash aberto por este processo de plug-in do Flash:

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

    ou

    lsof -p Flash_plugin_pid | grep -i deleted
    

    Procure por arquivos excluídos.

  3. Copie o arquivo de /proc/[pid]/fd/[fileno] para recovered_file.flv

por 20.05.2011 / 10:16
2

Estou usando o chrome 11.06 no Ubuntu 10.04. Eu encontrei meus arquivos flv em ~ / .cache / google-chrome / Default / Cache. Tente um

file * | grep Flash\ Video
    
por 06.06.2011 / 23:23
2

Uma pequena dica de mim. Isso funciona no 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

Agora você pode agendar esse script com o crontab. Pode ser otimizado para que não haja arquivos FLV duplicados.

    
por 26.09.2011 / 17:10
2

Usando o Firefox no 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
    
por 06.10.2011 / 04:54
0

Eu tenho outra maneira de fazer isso com base no descritor de arquivo fundado em / proc (eu uso o bash moderno em poucas linhas)

#!/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
    
por 02.04.2012 / 02:39