31

Re: Получение http ссылки с youtube

WendyH пишет:

na-socke.tk, немного объясню как работает скрипт g.php.
Кроме самого скрипта g.php, ему также нужны classes.php и возможность писать в тот же каталог в файл algorithms.ini.

Скрипт скачивал отсюда https://github.com/WendyH/HMS-Youtube.
Удалил algorithms.ini после запуска g.php файл перезаписался с таким содержимым vfl8KhWdC = "w7 r w33 w2 w51 w2 w46 r w1" ссылку выдает вновь битую

32

Re: Получение http ссылки с youtube

Сравнил текст скрипта на github и у себя на сайте, оказывается на github устаревшая версия.
Я её обновил. Попробуйте взять скрипт отсюда заново.
https://github.com/WendyH/HMS-Youtube/blob/master/g.php

Sony Bravia KDL-32CX523
Спасибо сказали: na-socke.tk1

33

Re: Получение http ссылки с youtube

WendyH пишет:

Сравнил текст скрипта на github и у себя на сайте, оказывается на github устаревшая версия.
Я её обновил. Попробуйте взять скрипт отсюда заново.
https://github.com/WendyH/HMS-Youtube/blob/master/g.php


Спасибо большущее помогло, все работает как нужно. Еще раз спасибо большое. И еще раз извините что первые вопросы возможно были с нарушением, честно не хотел нарушать правила, думал что будет пример а оказалось что нарушил.

34 (2017.08.06 13:35:16 отредактировано na-socke.tk)

Re: Получение http ссылки с youtube

WendyH пишет:

Сравнил текст скрипта на github и у себя на сайте, оказывается на github устаревшая версия.
Я её обновил. Попробуйте взять скрипт отсюда заново.


Извините а можно еще вопросик, можно ли как-то скрыть файл g.php? от прямого доступа пользователя????
Если делаю так:

<script type="text/javascript">
    var current_location = window.location.href;
    var parent_location = 'parent_location_init';

    try {
      parent_location = window.parent.location.href;
    } catch(exception) {}

    if (current_location == parent_location) {
      window.location.href = '/oshibka.php';
    }
  </script>

То прямого доступа к файлу нет но и ссылка не подзагружается, в консоли выдает такое :

Request URL:http://tube/g.php?v=vFo6Z-cMFJc&redirect
Request Method:GET
Status Code:206 Partial Content
Remote Address:127.0.0.1:80
Response Headers
view source
Connection:Keep-Alive
Content-Length:701
Content-Range:bytes 0-700/701
Content-Type:text/html
Date:Sun, 06 Aug 2017 09:48:56 GMT
Keep-Alive:timeout=10, max=100
Server:Apache
Request Headers
view source
Accept:*/*
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:ru,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Host:tube
Range:bytes=0-
Referer:http://prov/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Query String Parameters
view source
view URL encoded
v:vFo6Z-cMFJc
redirect:
Name

Если шифрую через шифратор uppod :
http://prov/g.php?v=vFo6Z-cMFJc&redirect

#06807407407003a02f02f07007206f07602f06702e07006807003f07603d07604606f03605a02d06304d04604a06307c072065064069072065063074

и ставлю ссылку в плеер то выдает такое:

GET http://prov/redirect 404 (Not Found)

Как это победить можно???

P/s


Есть скрипт нашел в интернете, который тянет видео тоже с ютуб но ссылку выдает такую  http://tube/ajax.php?id=iqh6PhT_HuQ&type=video/mp4&size=hd720    если можно бы было сделать такое в данном скрипте.

Код скрипта ajax.php

<?php
@set_time_limit(0);
$id = $_REQUEST['id'];
$type = $_REQUEST['type'];
$size = $_REQUEST['size'];
$html = "";

parse_str(file_get_contents('http://www.youtube.com/get_video_info?video_id=' . $id . '&asv=2'), $info);
$streams = explode(',', $info['url_encoded_fmt_stream_map']);

foreach ($streams as $stream) {
  parse_str($stream, $real_stream);
  $stype = $real_stream['type'];

  $codec = str_replace('"', "", substr($real_stream['type'], strpos($real_stream['type'], '"'), strlen($real_stream['type']) - strpos($real_stream['type'], '"')));
  if ($codec == $stype)
    $codec = "N/A";

  if (strpos($real_stream['type'], ';') !== false) {
    $tmp = explode(';', $real_stream['type']);
    $stype = $tmp[0];
    unset($tmp);
  }
  if ($type == "" && $size == "") {
    $html .= '<tr>';
    $html .= '<td>'.$real_stream['quality'].'</td>';
    $html .= '<td>'.$stype.'</td>';
    $html .= '<td>'.$codec.'</td>';
    $html .= '<td> </td>';
    $html .= '<td><a class="btn btn-large btn-success pull-left" href="ajax.php?id='.$id.'&type='.$stype.'&size='.$real_stream['quality'].'" style="margin-right: 15px;"><i class="icon-download-alt icon-white"></i> Download this video file</a></td>';
    $html .= '</tr>';
    //echo "<a href='test3.php?id=" . $id . "&type=" . $stype . "&size=" . $real_stream['quality'] . "'>" . $stype . " - " . $codec . " - " . $real_stream['quality'] . "</a><br>";
  } else {
    if ($stype == $type && ($real_stream['quality'] == 'hd1080' || $real_stream['quality'] == 'hd720' || $real_stream['quality'] == 'large' || $real_stream['quality'] == 'medium' || $real_stream['quality'] == 'small')) {
      if ($size == $real_stream['quality']) {
        $ext = "";
        if($stype=="video/webm")
          $ext = "webm";
        elseif($stype=="video/x-flv")
          $ext = "flv";
        elseif($stype=="video/mp4")
          $ext = "mp4";
        elseif($stype=="video/3gpp")
          $ext = "3gp";
        //header("Content-Description: File Transfer");
        //header("Content-Disposition: attachment; filename=keepvideos.$codec");
        //header("Content-Transfer-Encoding: binary");
        //'Content-type: '.$stype."\n\r"."
        //header("Content-Disposition: attachment; filename=keepvideos.$codec\n\r"."Content-Description: File Transfer\n\r");
        header("Content-Disposition: attachment; filename=keepvideos.$ext\n\r");
        //header('Content-disposition: attachment; filename=keepvideos.'.$ext."\n\r".'Content-type: '.$stype);
        //header('Content-type: '.$stype);
        //readfile('movie.mpg');

        //header('Transfer-encoding: chunked');
        ob_flush();
        flush();
        @readfile($real_stream['url'] . '&signature=' . $real_stream['sig']);
        ob_flush();
        flush();
        break;
      }
    }
  }
}

if($html)
  echo "<table style='width:100%'>".$html."</table>";

35

Re: Получение http ссылки с youtube

na-socke.tk пишет:

Извините а можно еще вопросик, можно ли как-то скрыть файл g.php? от прямого доступа пользователя????

Не совсем понял, что значит скрыть от прямого доступа пользователя? Чтобы не понятно было по какому запросу получается ссылка на поток?

Я не знаю что Вы там делаете, поэтому трудно давать советы.
Если запрос g.php идёт через javascript в html вашей страницы, то можно просто запаковать и обфусцировать код запуска этого запроса.

Но любопытным пользователям это будет не помеха, ибо все запросы в любом случае можно увидеть в инструментах разработчика браузера. Как бы Вы их не прятали.

Sony Bravia KDL-32CX523

36

Re: Получение http ссылки с youtube

А если хотите запретить вызов g.php скрипта всем, кроме вас, проще вообще этот вызов делать на стороне сервера, до вывода html и туда уже вставлять полученную ссылку от g.php.

Например, идёт запрос на страницу, а у вас на сервере, сначала делается запрос к g.php, а при выводе html уже вставляется полученная ссылка.

Sony Bravia KDL-32CX523

37

Re: Получение http ссылки с youtube

WendyH пишет:

А если хотите запретить вызов g.php скрипта всем, кроме вас, проще вообще этот вызов делать на стороне сервера, до вывода html и туда уже вставлять полученную ссылку от g.php.

Например, идёт запрос на страницу, а у вас на сервере, сначала делается запрос к g.php, а при выводе html уже вставляется полученная ссылка.

Я понял спасибо. И маленький вопрос насчет качества, смотрите либо я немного не понимаю либо ютуб отдает самое высокое только 720p так как при запросе  http://rus.lostcut.net/youtube/g.php?v= … eight=1080 в отчете видно 720p. То есть это самое высокое качество или даже 720p в скрипте подписывается как 720p.

38

Re: Получение http ссылки с youtube

na-socke.tk пишет:

И маленький вопрос насчет качества, смотрите либо я немного не понимаю либо ютуб отдает самое высокое только 720p так как при запросе  http://rus.lostcut.net/youtube/g.php?v= … eight=1080 в отчете видно 720p. То есть это самое высокое качество или даже 720p в скрипте подписывается как 720p.

Youtube отдаёт ссылки на видео со звуком только до 720p включительно. Свыше - только отдельными дорожками для видео и аудио.
Этот метод они назвали adaptive.
Для видео, у которых есть качество 1080p и выше, в параметрах к скрипту можно указывать этот метод получения ссылок на поток (добавить &adaptive=1).
Но получаемые данные будут содержать две ссылки, одна на видео без звука, вторая на аудио.
Например:
view-source:https://hms.lostcut.net/youtube/g.php?v=ElvLZMsYXlo&max_height=1080&adaptive=1&hr=1

Sony Bravia KDL-32CX523

39

Re: Получение http ссылки с youtube

WendyH пишет:

Youtube отдаёт ссылки на видео со звуком только до 720p включительно. Свыше - только отдельными дорожками для видео и аудио.
Этот метод они назвали adaptive.
Для видео, у которых есть качество 1080p и выше, в параметрах к скрипту можно указывать этот метод получения ссылок на поток (добавить &adaptive=1).
Но получаемые данные будут содержать две ссылки, одна на видео без звука, вторая на аудио.
Например:
view-source:https://hms.lostcut.net/youtube/g.php?v=ElvLZMsYXlo&max_height=1080&adaptive=1&hr=1

Ага я понял, спасибо за ответ.

40

Re: Получение http ссылки с youtube

Здравствуйте спасибо за скрипт, подскажите пожалуйста можно в етом скрипте  вытянуть все ссылки с качеством при запросе g.php?v=uOA7STZ4g0g
выдает только одну с качеством  360 . Спасибо

41

Re: Получение http ссылки с youtube

и почему то не все ссылки тянет
watch?v=S0eHuR2MYtE
{"status":"error","error":4,"reason":"Can not found stream map in player config"}

42 (2019.12.21 20:57:51 отредактировано smsbox3)

Re: Получение http ссылки с youtube

bond пишет:

{"status":"error","error":4,"reason":"Can not found stream map in player config"}

та же история для Otm7GCvbYK8 Очень похоже, что защищено.И  появляется такое сообщение все чаще.

43

Re: Получение http ссылки с youtube

Что-то очень много видео с youtube перестало извлекать прямую ссылку.  Просто беда :(

44

Re: Получение http ссылки с youtube

Не силен в этом деле но что смог можно  лутше конечно сделать слабо у меня с масивами получается
http://php.videonavigator.net.ua/

45

Re: Получение http ссылки с youtube

bond пишет:

Не силен в этом деле но что смог можно  лутше конечно сделать слабо у меня с масивами получается
http://php.videonavigator.net.ua/

У меня ссылку не получается скачать,а WendyH скрипт для получения ссылки,что не работает?

Отладка кода — это как охота. Только охота, на баги.

46

Re: Получение http ссылки с youtube

Spell пишет:

а WendyH скрипт для получения ссылки,что не работает?

Не всегда, например

https://hms.lostcut.net/youtube/g.php?v=8xEZWKekhFs

для ссылки

https://www.youtube.com/watch?v=8xEZWKekhFs

Пишет {"status":"error","error":3,"reason":"Video page do not contains player.config json object"}

47

Re: Получение http ссылки с youtube

smsbox3 пишет:

Не всегда, например

https://hms.lostcut.net/youtube/g.php?v=8xEZWKekhFs

у меня вот так.

+ открыть спойлер

https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=4148

Прикреплённые файлы сообщения

Screen Shot 01-18-20 at 06.36 PM.JPG 131.83 kb, скачивалось 103 раза, начиная с 2020.01.18

Отладка кода — это как охота. Только охота, на баги.

48 (2020.01.18 21:20:20 отредактировано smsbox3)

Re: Получение http ссылки с youtube

Spell пишет:

у меня вот так.

На твоем сервер код? Или модифицирован? Дело в том, что если немного модифицировать, то там есть прямая ссылка, которая работает.
Только сейчас дошло, что возможно дело вот в этом https://hms.lostcut.net/viewtopic.php?pid=9665#p9665 и надо просто удалить старый файл и дать возможность построить новый?

49

Re: Получение http ссылки с youtube

smsbox3 пишет:

На твоем сервер код? Или модифицирован? Дело в том, что если немного модифицировать, то там есть прямая ссылка, которая работает.
Только сейчас дошло, что возможно дело вот в этом https://hms.lostcut.net/viewtopic.php?pid=9665#p9665 и надо просто удалить старый файл и дать возможность построить новый?

Нет скрипт не на сервере. Я подправил чуток код,пришлось малость изменить и у меня работает скрипт

Отладка кода — это как охота. Только охота, на баги.

50

Re: Получение http ссылки с youtube

А нет ли возможности по ссылке на youtube узнать когда будет начало трансляции. Вот например сейчас

youtube.com/watch?v=AtlL7KR62-Y

когда открываю пишет

До начала 5 минут
24 февраля, 10:30

Как-то можно это получить не читаю всю страницу?

51

Re: Получение http ссылки с youtube

Приветствую, есть у кого рабочий скрипт ?

52

Re: Получение http ссылки с youtube

badmike пишет:

Приветствую, есть у кого рабочий скрипт ?

Там еще есть прикол, что ссылки вроде правильные, но очень медленно с  них качает, онлайн не посмотреть, затыкается. Видимо надо модернизировать скрипт, чтобы доставать ту самую ссылку, что будет играть нормально.

53

Re: Получение http ссылки с youtube

Это да, там надо менять параметр n в ссылке, функцию которая генерирует правильное знеачение находится в файле base.js

Спасибо сказали: smsbox31

54

Re: Получение http ссылки с youtube

smsbox3 пишет:

Там еще есть прикол, что ссылки вроде правильные, но очень медленно с  них качает, онлайн не посмотреть, затыкается. Видимо надо модернизировать скрипт, чтобы доставать ту самую ссылку, что будет играть нормально.

подтверждаю, действительно затыки, даже при просмотре в низком качестве. может кто-нибудь подправит скрипт...

55 (2024.03.31 13:37:37 отредактировано smsbox3)

Re: Получение http ссылки с youtube

pukhf пишет:

подтверждаю, действительно затыки, даже при просмотре в низком качестве. может кто-нибудь подправит скрипт...

Прошло два года, решение ни кто не находил? Я это время использовал invidious (https://invidious.io/), исходники https://github.com/iv-org/invidious#contribute  но сейчас остался только сервер с php и надо переходить на него. Хотя бы какие мысли в направление решения проблемы затыков в полученных ссылках?

56

Re: Получение http ссылки с youtube

youtube теперь отдает прямую ссылку со звуком только в "itag": 18 т.е. 360p Остальное только в adaptiveFormats. Но даже ссылка 360p что-то не работает, к ip что-ли привязали?

57

Re: Получение http ссылки с youtube

По поводу скорости, которую еще в 2021 году ограничили примерно 40-70 кБ/с. для прямой ссылки. Если разобрать url прямой ссылки то имеем

Protocol: https
Hostname: rr1---sn-8qu-t0aee.googlevideo.com
Path name: /videoplayback
Query Parameters:
  expire: 1691829310
  ei: 3u_WZJT7Cbag_9EPn7mi0A8
  ip: 203.0.113.30
  id: o-ABGboQn9qMKsUdClvQHd6cHm6l1dWkRw4WNj3V7wBgY1
  itag: 315
  aitags: 133,134,135,136,160,242,243,244,247,278,298,299,302,303,308,315,394,395,396,397,398,399,400,401
  source: youtube
  requiressl: yes
  mh: aP
  mm: 31,29
  mn: sn-8qu-t0aee,sn-t0a7ln7d
  ms: au,rdu
  mv: m
  mvi: 1
  pcm2cms: yes
  pl: 18
  initcwndbps: 1422500
  spc: UWF9fzkQbIbHWdKe8-ahg0uWbE_UrbUM0U6LbQfFxg
  vprv: 1
  svpuc: 1
  mime: video/webm
  ns: dn5MLRkBtM4BWwzNNOhVxHIP
  gir: yes
  clen: 1536155487
  dur: 634.566
  lmt: 1662347928284893
  mt: 1691807356
  fvip: 3
  keepalive: yes
  fexp: 24007246,24363392
  c: WEB
  txp: 553C434
  n: mAq3ayrWqdeV_7wbIgP
  sparams: expire,ei,ip,id,aitags,source,requiressl,spc,vprv,svpuc,mime,ns,gir,clen,dur,lmt
  sig: AOq0QJ8wRgIhAOx29gNeoiOLRe1GhEfE52PAiXW64ZEWX7nNdAiJE6ezAiEA0Plw6Yn0kmSFFZHO2JZPZyMGd0O-gEblUXPRrexQgrY=
  lsparams: mh,mm,mn,ms,mv,mvi,pcm2cms,pl,initcwndbps
  lsig: AG3C_xAwRQIgZVOkDl4rGPGnlK6IGCAXpzxk-cB5RRFmXDesEqOWTRoCIQCzIdPKE6C6_JQVpH6OKMF3woIJ2yVYaztT9mXIVtE6xw==

там есть параметр   n: mAq3ayrWqdeV_7wbIgP - именно он определяет скорость. Если n неправильное, скорость ограничена. Параметр находится в  в файле base.js .Алгоритм JavaScript обфусцирован и часто меняется.  Если можно скачать и выполнить. Урезанная версия интерпретатора JavaScript вот здесь https://github.com/ytdl-org/youtube-dl/ … youtube.py
полученная ссылка скачивается в два раза быстрее, чем просто смотреть видео. Это не предел, вот здесь быстрее

https://blog.0x7d0.dev/assets/download/how-they-bypass-youtube-video-download-throttling/youtube-download.js

58

Re: Получение http ссылки с youtube

У меня тоже перестало работать, думал, что ошибка в подписи,  хотя алгоритм ее получения не менялся очень давно и вроде и сейчас отрабатывает норм, но что-то таки изменили и это точно не привязка к айпи, иначе бы не работали генераторы прямых ссылок вроде этих: https://ssyoutube.one/ru/

59 (2024.07.10 15:30:58 отредактировано smsbox3)

Re: Получение http ссылки с youtube

Там получают раздельные ссылки на звук и видео, потом соединяют и отдают, поэтому разрешение 1080 могут отдавать
Audio MP3    2.72M   
Video
1080p (mp4)     88.06M   
720p (mp4)     45.81M   
360p (.mp4)     14.43M   
Возможно если получать такие ссылки они и у нас будут рабочие, а вот видео со звуком сразу - облом.

проверил - не работают любые полученные ссылки.

60

Re: Получение http ссылки с youtube

да, теперь если хочется со звуком, то только в 360р. Прямых трансляций это не касается, там hls поток. А так выход один, ставить ffmpeg и склеивать звук и видео и отдавать конечный файл. Но если хочется сразу смотреть, то вряд-ли так быстро получится, нужны ресурсы.