Skip to content

Commit

Permalink
Fix youtube html5 parser
Browse files Browse the repository at this point in the history
  • Loading branch information
SthephanShinkufag committed Feb 13, 2014
1 parent 25bdbc8 commit 8f5cf63
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions Dollchan_Extension_Tools.user.js
Original file line number Diff line number Diff line change
Expand Up @@ -3640,7 +3640,7 @@ function initYouTube(embedType, videoType, width, height, isHD, loadTitles) {
if(!itag) {
continue;
}
sig = videoPair['sig'];
sig = videoPair['sig'] || videoPair['s'];

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 13, 2014

Author Owner

В общем, такая фигня. Я лишь исправил поиск сигнатуры,

Старая инфа:

fallback_host=tc.v11.cache6.googlevideo.com
\u0026
url=https%3A%2F%2Fr3---sn-puntnuxhn-3c2e.googlevideo.com%2Fvideoplayback%3Fipbits%3D0%26sver%3D3%26id%3D8e38efa2c53eb76c%26expire%3D1392357667%26mt%3D1392332804%26ratebypass%3Dyes%26itag%3D43%26ms%3Dau%26fexp%3D900359%252C937417%252C913434%252C936910%252C936913%26ip%3D194.177.26.31%26mv%3Dm%26sparams%3Did%252Cip%252Cipbits%252Citag%252Cratebypass%252Csource%252Cupn%252Cexpire%26source%3Dyoutube%26upn%3D1UAPxhulkCI%26key%3Dyt5
\u0026
type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22
\u0026
itag=43
\u0026
sig=86D71439994632FBE8B41CE7A7D9839C6696B1D8.EB9123F3EEAE83FEF3E1B0F11785B85306E34A5F
\u0026
quality=medium

Новая:

url=https%3A%2F%2Fr3---sn-puntnuxhn-3c2e.googlevideo.com%2Fvideoplayback%3Fsparams%3Did%252Cip%252Cipbits%252Citag%252Cratebypass%252Csource%252Cupn%252Cexpire%26mv%3Dm%26ms%3Dau%26mt%3D1392332879%26ratebypass%3Dyes%26ipbits%3D0%26id%3D2cd187af27a4cce8%26source%3Dyoutube%26sver%3D3%26expire%3D1392356321%26key%3Dyt5%26ip%3D194.177.26.31%26upn%3DBUYjKnvYO3w%26fexp%3D900359%252C937417%252C913434%252C936910%252C936913%26itag%3D43
\u0026
fallback_host=tc.v23.cache2.googlevideo.com
\u0026
quality=medium
\u0026
itag=43
\u0026
type=video%2Fwebm%3B+codecs%3D%22vp8.0%2C+vorbis%22
\u0026
s=A69969F91F2DEF7B22DDE480F2639D528F5BD146C15.82AB46659552E9B67C3141D2AC8771832E4C68E18EDED

То есть, все отличие - вместо sig - s. Теперь сигнатура находится.
Но от этого ничего не меняется - все та же ошибка, даже с найденной сигнатурой.
Попробовал изменить сигнатуру в рабочем видео - оно стало нерабочим! Значит, дело в ней.

Взможно, проблема куда глубже.
В неработающих видео все сигнатуры длиной 89 символов, а в работающих - 81 символ!

INVALID
963963A94307156F226E92A628C39B6C9AB9DD5202E.2846AB410F7999CE4DF1274C9DA8836206B7CFE7FE1E1
INVALID
314D140D9ECBEF04F3135921C3CDBA801D6463C3E30.8EAA1D6D955EAAD3450117F673B7D4A9FD1F32C72CECE

VALID
505364A80E3B8FEB1E81F31FB87213E5551C66F6.1CCE69B9A4D8A2A60B17BDFD5981015C30F5E8B8
VALID
5E0B645829ABB83EF8423905C3A3626BA3689836.CB53ED9363C9BE3AB4242E5FA0436F2D7905CA56

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 13, 2014

Author Owner

Вполне возможно, что на сайте применяется какое-то шифрование.
Вот, что я нашел:

ytdl-org/youtube-dl#1060

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 13, 2014

Author Owner

Напоминаю, практически все видео на http://iichan.hk/mu/ не воспроизводятся через native video. На сосаче с этим обстоит получше, по какой-то причине.

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 14, 2014

Author Owner

Ну вот и выяснилось.

ytdl-org/youtube-dl#1232

YouTube added the signatures and is constantly switching around schemes for monetized videos (there are suggestion to how avoid this, but they haven't been integrated into youtube-dl yet). The choice which algorithm to use seems to depend on the internal version of the YouTube code as well as the specific cluster that serves the video, so most likely only the US location had the code and decided to use the 89 signature scheme, whereas the other ones either didn't have support for 89 or selected other schemes at random.

Короче, все монетизированные видео шифруются в сигнатуре. Гуглоиды совсем ъбанулись, господа. И чем далее, тем анальнее. Гугель не заинтересован в том, чтоб были доступны прямые ссылки на непосредственно видеофалы.

Native video можно смело выпиливать.

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 14, 2014

Author Owner

Нашел алгоритм http://userscripts.org/topics/129688,
применил как 89 -> 83 -> 81
sig = lj(ij(sig));

Не помогло. Похоже, этот дешифратор устарел. Ну и ситх с им.
И тьху на его три раза.
Пойду я на массу.

This comment has been minimized.

Copy link
@SthephanShinkufag

SthephanShinkufag Feb 14, 2014

Author Owner

Вдогонку:
Скрипт для скачивания видео.
http://userscripts.org/scripts/review/25105
Дешифрация сигнатуры занимает полскрипта!

И то,
http://userscripts.org/topics/127336

I react by updating the script. I think I updated it at least 12 or 13 times in the past 3 months. Right now, they're using the 87-character signature, but they'll change it to something else in a few days or maybe next week. It's an annoying game.

Лол!
Тьху еще раз.

if(sig) {
url += "&signature=" + sig;
}
Expand Down Expand Up @@ -3674,8 +3674,8 @@ function initYouTube(embedType, videoType, width, height, isHD, loadTitles) {
'allowscriptaccess="always" allowfullscreen="true"' + wh;
}

function addThumb(el, m, isYouTube) {
if(isYouTube) {
function addThumb(el, m, isYtube) {
if(isYtube) {
el.innerHTML = '<a href="https://www.youtube.com/watch?v=' + m[1] + '" target="_blank">' +
'<img class="de-video-thumb de-ytube" src="https://i.ytimg.com/vi/' + m[1] +
'/0.jpg" width="' + width + '" height="' + height + '"></a>';
Expand All @@ -3692,8 +3692,8 @@ function initYouTube(embedType, videoType, width, height, isHD, loadTitles) {
}
}

function addPlayer(el, m, isYouTube) {
if(isYouTube) {
function addPlayer(el, m, isYtube) {
if(isYtube) {
var time = (m[2] ? m[2] * 3600 : 0) + (m[3] ? m[3] * 60 : 0) + (m[4] ? +m[4] : 0);
if(videoType === 2) {
addYtubeHTML5(el, m[1], time);
Expand All @@ -3705,14 +3705,14 @@ function initYouTube(embedType, videoType, width, height, isHD, loadTitles) {
}
}

function addLink(post, m, loader, link, isYouTube) {
function addLink(post, m, loader, link, isYtube) {
var msg, src, time, dataObj;
post.hasYTube = true;
if(post.ytInfo === null) {
if(youTube.embedType === 2) {
youTube.addPlayer(post.ytObj, post.ytInfo = m, isYouTube);
youTube.addPlayer(post.ytObj, post.ytInfo = m, isYtube);
} else if(youTube.embedType > 2) {
youTube.addThumb(post.ytObj, post.ytInfo = m, isYouTube);
youTube.addThumb(post.ytObj, post.ytInfo = m, isYtube);
}
} else if(!link && $q('.de-video-link[href*="' + m[1] + '"]', post.msg)) {
return;
Expand Down Expand Up @@ -3741,15 +3741,15 @@ function initYouTube(embedType, videoType, width, height, isHD, loadTitles) {
link.className = 'de-video-link de-ytube de-video-title';
link.setAttribute('de-author', dataObj[1]);
} else {
link.className = 'de-video-link ' + (isYouTube ? 'de-ytube' : 'de-vimeo');
link.className = 'de-video-link ' + (isYtube ? 'de-ytube' : 'de-vimeo');
}
} else {
src = isYouTube ? 'https://www.youtube.com/watch?v=' + m[1] + (time ? '#t=' + time : '')
src = isYtube ? 'https://www.youtube.com/watch?v=' + m[1] + (time ? '#t=' + time : '')
: 'https://vimeo.com/' + m[1];
post.msg.insertAdjacentHTML('beforeend',
'<p class="de-video-ext"><a ' + (dataObj ? 'de-author="' + dataObj[1] + '" ' : '') +
(time ? 'de-time="' + time + '" ' : '') +
'class="de-video-link ' + (isYouTube ? 'de-ytube' : 'de-vimeo') +
'class="de-video-link ' + (isYtube ? 'de-ytube' : 'de-vimeo') +
(dataObj ? ' de-video-title' : '') +
'" href="' + src + '">' + (dataObj ? dataObj[0] : src) + '</a></p>');
link = post.msg.lastChild.firstChild;
Expand Down

0 comments on commit 8f5cf63

Please sign in to comment.