5

Раньше был метод для извлечения буферизованного флэш-видео в любых браузерах (например, Firefox, Chrome и т.д.), Который использует команду ps и отслеживает fd , указывающий на временный файл в памяти. К сожалению, этот метод больше не работает. Например, все fd используемые хромом:

chrome    19412  ymf   69u   REG   0,14   470364     0  270129 /dev/shm/.org.chromium.Chromium.1fzPuo (deleted)
chrome    19412  ymf   77u   REG   0,14   131060     0  270141 /dev/shm/.org.chromium.Chromium.94K6Di (deleted)
chrome    19412  ymf  103u   REG    8,5     2052     0 4230990 /var/tmp/etilqs_01QDHFotJcLOpBS (deleted)
chrome    19412  ymf  112u   REG    8,5    24600     0 4232788 /var/tmp/etilqs_tFao7GamL5cslaZ (deleted)
chrome    19412  ymf  188u   REG    8,6    16384     0 1310851 /home/ymf/.config/chromium/Default/History Index 2013-07-journal (deleted)
chrome    19412  ymf  189u   REG    8,5    16400     0 4232787 /var/tmp/etilqs_D5p3BT7rtTSWLsy (deleted)

Ни один из них не содержит медиа-контента.

И я твердо верю, что каким-то образом мы можем захватить воспроизводимое видео (в Linux), поскольку видео транслируется с сервера всякий раз, когда мы его воспроизводим (без помощи каких-либо специфических для браузера плагинов).

3 ответа3

1

Вы также можете использовать метод @ silviot в скрипте:

#!/bin/bash
#
# Show all chrome cached video files!
#
for ID in $( pgrep chrom ) ; do 
    sudo ls -l /proc/$ID/fd|grep Pepper|cut -d' ' -f9|sed "s/\(.*\)/\/proc\/$ID\/\1/g"
done | grep -v '^$'

Я не проверял это с более чем 1 видео, но оно должно работать.

1

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

На моей машине (Linux Mint и Chrome 28.0.1500.95) я мог получить потоковый флэш-файл прямо в том месте, где вы его искали. Я подозреваю, что вы что-то упустили в процессе.

Во-первых, вам нужно определить процесс, который запускает Pepper, и найти идентификатор дескриптора файла, соответствующий вашему файлу.

Это возможно благодаря /proc и каталогу fd каждого процесса

С видео, открытым в окне браузера, выполните эту команду:

for ID in $( pgrep chrome ) ; do ( sudo ls -l /proc/$ID/fd|grep Pepper ) && echo /proc/$ID/fd; done

Вывод будет похож на:

lrwx------ 1 root root 64 ago  2 12:52 29 -> /home/me/.chromecache/Default/Pepper Data/Shockwave Flash/.com.google.Chrome.ulDLo0 (deleted)
/proc/1196/fd

Не обращайте внимания на путь, на который указывает ссылка: он удален. Вам нужно получить доступ к файлу через /proc/$PROCID/fd/$FDID

В приведенном выше примере вы запустите:

sudo cat /proc/1196/fd/29 > my_video.flv

[РЕДАКТИРОВАТЬ]

Чтобы сделать то же самое для chromium, измените имя процесса с google-chrome на chro и строку для поиска в имени файла на /tmp/Flash например так:

for ID in $( pgrep chro ) ; do ( sudo ls -l /proc/$ID/fd|grep /tmp/Flash ) && echo /proc/$ID/fd; done

[РЕДАКТИРОВАТЬ] (снова)

Эта однострочная строка должна работать как с хромом, так и с хромом (по крайней мере, на моей машине):

for ID in $( pgrep -f chro ) ; do ( sudo ls -l /proc/$ID/fd|egrep "(/tmp/Flash|Pepper)" ) && echo /proc/$ID/fd; done
-2

Я перепробовал все расширения, которые запрещены, а затем вы должны все время обновляться. Тогда наткнулся на это: Используйте букмарклет KeepVid.com. Просто перетащите кнопку на веб-странице на панель закладок. Просто нажмите на ссылку во время просмотра видео

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .