23 de octubre de 2012

Curiosidades de Flash en Linux

No sólo el soporte de Flash en Linux está en vía muerta, sino que el que hay es difícil de usar. Como ejemplo, me encuentro con este vídeo, imposible de encontrar en otro lado, así que intento descargármelo.

Para ello intento buscar en la fuente de la página el enlace al vídeo en la página, pero el que supuestamente se usa como fuente no existe o no funciona. Dejo que se descargue entero y procedo a buscar el archivo del vídeo en el caché de Firefox, algo que solía funcionar. Pero en el caché de Firefox no hay nada, ni en el cache del disco ni el cache de la memoria. Parece que intentan hacer desaparecer los vídeos y evitar que la gente se los descargue (lo cual sorprende tratándose de una URL terminada en .ru).

Sin embargo, el vídeo está evidentemente en mi sistema: lo estoy viendo. En alguna parte debe estar. Como último recurso, recurro a echar un ojo a los descriptores de archivos del proceso aislado en el que Firefox pone al reproductor (/proc/PID/fd/). En él, encuentro que el proceso tiene el descriptor 20 apuntando a un archivo curioso:

20 -> /tmp/FlashXXsKXrQ0 (deleted)

El archivo asociado el descriptor, /tmp/FlashXXsKXrQ0, ha sido borrado, pero como es norma en sistemas Unix, los procesos que lo tenían abierto siguen podiendo acceder a él. Ese archivo ya no existe, no puedo acceder directamente a él, pero si que puedo hacerlo mediante /proc. Con un simple "cp /proc/PID/fd/20 ~/archivo" recupero el archivo y, efectivamente, es el vídeo que quería descargar.

Aparentemente, Adobe quería dificultar la descarga de vídeos, como una especie de DRM simplista. Para ello decidieron crear un archivo en /tmp/ y abrirlo, proceder inmediatamente después a borrarlo para que nadie lo viese, y seguir trabajando internamente con ese descriptor asociado a un archivo "oculto".

10 comentarios:

  1. En este caso por comodidad el plugin downloadhelper de firefox permite bajarse el fichero y evitar mientras se pueda el tener que buscar ficheros ocultos/borrados

    ResponderEliminar
  2. Anónimo5:59 p. m.

    Sí, sabía que el plugin de flash ocultaba el archivo. Dejo el enlace de dónde leí la solución, porque obvio que yo no supe cómo hacer para guardarlo...

    http://www.ubuntu-guia.com/2011/02/descarga-videos-flash-en-tmp.html

    MUY BUEN blog Diego, te felicito.

    Saludos.

    ResponderEliminar
  3. Hola Diego, ese tema de impedir que la gente obtenga el archivo de video del streaming no es solo de Linux, sino que pasa en todos los SO. En Windows también antes ibas al directorio temp del usuario y lo encontrabas, ya no. Es como una moda que tienen las empresas de evitar que los usuarios puedan descargar cosas (por eso existen y pululan tanto en Windows los "bajadores" de programas; vos lo bajás pensando que es el instalador, pero es simplemente un programa que se encarga de bajar de forma oculta el verdadero instalador).
    Saludos

    ResponderEliminar
  4. Lo de hacer desaparecer los vídeos de esa forma, debe ser parte de una aplicación flash standard de reproducción de vídeo, utilizada en muchos sitios de streaming, no de la página .ru ;)

    Como curiosidad, hasta hace relativamente poco tiempo, también de esa forma se podía acceder los vídeos de YouTube, pero de un tiempo a esta parte debieron quitarlo, pues es actualmente la única página de streaming de vídeos que no me permite acceder a ellos así.

    Yo personalemte uso este método desde hace mucho, pero no para copiarme los vídeos, sino para reproducirlos directamente con el mplayer por una razón muy simple: muchos vídeos con una resolución decente, el plugin de flash me los reproduce a saltos, consumiendo el 100% de CPU, mientras que el mplayer los reproduce con normalidad, con un 20% de CPU !!

    Un saludo!

    ResponderEliminar
  5. Probad a hacer eso con los de YouTube. Imposible! Están a trocitos...

    Hace tiempo que no uso este método para bajar vídeos.
    Usaba "lsof | grep /" para descubrir el PID.
    Luego "cat /proc/pid/fd/video_num > ~/video" para guardarlo

    Ahora miro las peticiones con el inspector de red del navegador.

    ResponderEliminar
  6. Anónimo11:34 a. m.

    s/podiendo/pudiendo/g

    ResponderEliminar
  7. http://www.downloadhelper.net/

    Esta extensión te baja los videos flash, incluso te los conierte, si lod eseas a otros formatos

    ResponderEliminar
  8. interesante, quisiera saber darle esos usos al proc/ ejej!!
    pero existe video downloadhelper para firefox y solo para él!!
    muy buen herramienta esta

    ResponderEliminar
  9. Siempre vi a este "truco" no como una forma de ocultar el archivo temporal, sino de borrarlo "atexit()" pero que funciona incluso si el proceso se mata con SIGKILL.

    ResponderEliminar
  10. Yo uso este simple script y me va bien
    #!/bin/sh
    # jcrbr0 17.05.10
    ##
    a1=$(lsof | grep Flash | awk -F ' ' ' {if ($5!="REG") print "/proc/"$2"/fd/"$5}' | sort | uniq | sed 's/.$//g')
    cp $a1 /home/jcrbr0/Desktop

    ResponderEliminar