2015-08-19 9 views
2

У меня возникла проблема с библиотекой youtube-dl (https://rg3.github.io/youtube-dl/). Я использую YouTube-DL не для прямого скачивания видео с помощью этой библиотеки, вместо этого я сначала создать ссылку с помощью команды, как это:Библиотека Youtube-dl и ERROR 403: Запрещено при использовании сгенерированной прямой ссылки по youtube-dl из разных мест

youtube-dl --simulate --dump-json --prefer-ffmpeg -- -CmadmM5cOk

я получить необходимый формат связи с JSON ответа, я использую по умолчанию формата 1280x720 mp4. Ссылки выглядят так: «https://r4---sn-nto52nx-px8e.googlevideo.com/videoplayback?lmt=1432339993780507&ip=x.x.x.x&key=yt6&fexp=9408710%2C9409069%2C9413137%2C9415365%2C9415485%2C9416023%2C9416126%2C941 ...».

Затем я использую эту ссылку для загрузки видео с разных ПК в разных местах. Для большинства ссылок он работает нормально, но есть несколько видеороликов, например https://www.youtube.com/watch?v=-CmadmM5cOk, которые я не могу загрузить с разных серверов или ПК, он возвращает ERROR 403: Forbidden.

Так что я пробовал до сих пор, у меня есть 2 сервера и мой локальный компьютер, все 3 из которых расположены в разных странах, США, Англии и Украине.

Например, я запускаю youtube-dl и получаю ссылку на Server 1 в США, я получаю ссылку, я могу загрузить ее в этом Sever 1, но на сервере 2 в Лондоне и моем локальном ПК в Украине он возвращает ERROR 403: Запрещено.

Другой пример: я генерирую ссылку на Server 2 в Лондоне, я получаю другую ссылку, я могу загрузить ее на том же сервере, но когда я пытаюсь подключиться к серверу 1 или локальному компьютеру, я получаю тот же ERROR 403: Forbidden. То же самое, когда я создаю ссылку на локальном ПК и пытаюсь на серверах.

Это происходит только с некоторыми точными видеороликами, но их очень много. Некоторые видеоролики, которые возвращают 403: https://www.youtube.com/watch?v=09R8_2nJtjg, https://www.youtube.com/watch?v=7PCkvCPvDXk.

Спасибо, я ценю любую помощь!

Update:

Я пытаюсь использовать предложенный вами вариант «-o -» для вывода видео файла на стандартный вывод, а затем я ретранслировать его пользователю. Но у меня другая проблема, она работает, если я вхожу в систему с помощью ssh и try с моим пользователем, но он выдает ошибку 403, когда я запускаю ту же команду под пользователем «www-data». Вот подробный вывод:

Вот подробный отчет:

[debug] System config: [] 
[debug] User config: [] 
[debug] Command-line args: [u'--prefer-ffmpeg', u'--no-warnings', u'-f', u'22', u'-o', u'-', u'-v', u'--', u'QcIy9NiNbmo'] 
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8 
[debug] youtube-dl version 2015.08.16.1 
[debug] Python version 2.7.3 - Linux-4.1.0-x86_64-linode59-x86_64-with-debian-7.8 
[debug] exe versions: avconv 0.8.17-6, avprobe 0.8.17-6, ffmpeg 0.8.17-6, ffprobe 0.8.17-6 
[debug] Proxy map: {} 
[youtube] QcIy9NiNbmo: Downloading webpage 
[youtube] QcIy9NiNbmo: Downloading video info webpage 
[youtube] QcIy9NiNbmo: Extracting video information 
[youtube] {22} signature length 40.42, html5 player new 
[youtube] {43} signature length 40.42, html5 player new 
[youtube] {18} signature length 40.42, html5 player new 
[youtube] {5} signature length 40.42, html5 player new 
[youtube] {36} signature length 40.42, html5 player new 
[youtube] {17} signature length 40.42, html5 player new 
[youtube] {137} signature length 40.42, html5 player new 
[youtube] {248} signature length 40.42, html5 player new 
[youtube] {136} signature length 40.42, html5 player new 
[youtube] {247} signature length 40.42, html5 player new 
[youtube] {135} signature length 40.42, html5 player new 
[youtube] {244} signature length 40.42, html5 player new 
[youtube] {134} signature length 40.42, html5 player new 
[youtube] {243} signature length 40.42, html5 player new 
[youtube] {133} signature length 40.42, html5 player new 
[youtube] {242} signature length 40.42, html5 player new 
[youtube] {160} signature length 40.42, html5 player new 
[youtube] {140} signature length 40.42, html5 player new 
[youtube] {171} signature length 40.42, html5 player new 
[youtube] QcIy9NiNbmo: Downloading DASH manifest 
[debug] Invoking downloader on u'https://r6---sn-q4f7sn7s.googlevideo.com/videoplayback?dur=244.924&ipbits=0&sver=3&expire=1440076742&itag=22&lmt=1432153223392108&ratebypass=yes&fexp=9406010%2C9407118%2C9407156%2C9408710%2C9409069%2C9412515%2C9412774%2C9412779%2C9415365%2C9415485%2C9416023%2C9416126%2C9416326%2C9416916%2C9417707%2C9418153%2C9418449%2C9418954&key=yt5&mime=video%2Fmp4&initcwndbps=19078750&source=youtube&upn=H3j2i1TBZjA&mn=sn-q4f7sn7s&mm=31&pl=32&id=o-ADA7nHOi-VHvDpG35GbK7zvbnjmrppbPKN4PlVS25gcx&requiressl=yes&pcm2=no&ip=2600%3A3c00%3A%3Af03c%3A91ff%3Afe84%3A4cc7&mv=m&sparams=dur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpcm2%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&mt=1440055050&ms=au&signature=FCB04C87410298BCDA619B8DB06221417292500B.669E8F187A5885C08D057F924A9551A657FF584B' 
ERROR: unable to download video data: HTTP Error 403: Forbidden 
Traceback (most recent call last): 
    File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1585, in process_info 
    success = dl(filename, info_dict) 
    File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1527, in dl 
    return fd.download(name, info) 
    File "/usr/local/bin/youtube-dl/youtube_dl/downloader/common.py", line 342, in download 
    return self.real_download(filename, info_dict) 
    File "/usr/local/bin/youtube-dl/youtube_dl/downloader/http.py", line 60, in real_download 
    data = self.ydl.urlopen(request) 
    File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 1860, in urlopen 
    return self._opener.open(req, timeout=self._socket_timeout) 
    File "/usr/lib/python2.7/urllib2.py", line 407, in open 
    response = meth(req, response) 
    File "/usr/lib/python2.7/urllib2.py", line 520, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib/python2.7/urllib2.py", line 445, in error 
    return self._call_chain(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 379, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 528, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
HTTPError: HTTP Error 403: Forbidden 

ответ

3

Итоговые загрузить URL-адреса только гарантированно работать на той же машине/IP, где извлекается. More on this.

UPD: Чтобы избавиться от 403 удалить кэш, запустив youtube-dl --rm-cache-dir от имени www-data.

+0

Спасибо, я пытаюсь реализовать загрузку через сервер с опцией -o -, и у меня есть другая проблема, она работает нормально под одним пользователем, но с ошибкой 403 в разделе «www-data» не работает. Я обновляю вопрос. – Vedmant

+0

Обновленный ответ. – dstftw

+0

Спасибо, что работает! – Vedmant