首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从odnoklassniki (ok.ru)获得直接视频链接

如何从odnoklassniki (ok.ru)获得直接视频链接
EN

Stack Overflow用户
提问于 2021-08-31 20:56:58
回答 1查看 1.9K关注 0票数 0

我想从ok.ru获得视频直接视频链接,所以我创建了这个php脚本来获取页面数据,它返回json文件。

代码语言:javascript
运行
复制
<?php
$id ="947875089023";
$html = file_get_contents("https://ok.ru/videoembed/".$id);
$dom = new DOMDocument;
$dom->loadHTML($html);
$node = $dom->getElementsByTagName('div')->item(2);
$json = $node->getAttribute("data-options");
echo $json;
?>

在获得json文件后,我使用JavaScript获取所有视频urls

代码语言:javascript
运行
复制
const obj = JSON.parse(JSON.stringify(
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* {"playerId":"VideoPopup_player_947875089023","width":"491","height":"275","notifyEnabled":true,"url":"https://st.mycdn.me/static/MegaPlayer/10-10-15/vp.swf","url11":"https://st.mycdn.me/static/MegaPlayer/10-10-15/vp11.swf","html5url":"//st.mycdn.me/static/MegaPlayer/10-11-60/okHtml5Player.min","minFlashVersionNewPlayer":"11.2","wmode":"opaque","asa":true,"provider":"UPLOADED_ODKL","flashvars":{"relatedAlways":"1","metadata":"{\"provider\":\"UPLOADED_ODKL\",\"service\":\"ok\",\"owner\":false,\"voted\":false,\"likeCount\":0,\"subscribed\":false,\"isWatchLater\":false,\"slot\":690,\"siteZone\":-1,\"showAd\":true,\"fromTime\":0,\"author\":{\"id\":\"571310739583\",\"name\":\"riki altwan\",\"profile\":\"/profile/571310739583\"},\"movie\":{\"id\":\"947875089023\",\"movieId\":\"947875089023\",\"likeId\":\"947875089023\",\"contentId\":\"426740025983\",\"poster\":\"https://i.mycdn.me/videoPreview?id=426740025983\\u0026type=37\\u0026idx=0\\u0026tkn=pAfyf6Av9sm4uotfYjxQFcRyGbE\\u0026fn=external_8\",\"duration\":\"1449\",\"title\":\"[WEHOH.COM]Ca_Tsu_-Ep30-to\",\"url\":\"https://ok.ru/video/947875089023\",\"link\":\"/video/947875089023\",\"collageInfo\":{\"imageType\":\"COLLAGE\",\"url\":\"https://i.mycdn.me/videoPreview?id=426740025983\\u0026type=36\\u0026idx=0\\u0026tkn=WzWDCxAWX5dKTWRFiQBcXzhZlx8\",\"frequency\":10,\"height\":44,\"width\":80,\"count\":145,\"tileWidth\":0,\"tileHeight\":0},\"status\":\"OK\",\"statusText\":\"OK\",\"isLive\":false,\"notPublished\":false},\"admanMetadata\":{},\"partnerId\":-1,\"ownerUserId\":\"571310739583\",\"ownerMovieId\":\"947875089023\",\"alwaysShowRec\":false,\"videos\":[{\"name\":\"mobile\",\"url\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=4\\u0026sig=wLDgZ2Ncspg\\u0026ct=0\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"seekSchema\":3,\"disallowed\":false},{\"name\":\"lowest\",\"url\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=0\\u0026sig=0DoDfFzi6XM\\u0026ct=0\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"seekSchema\":3,\"disallowed\":false},{\"name\":\"low\",\"url\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=1\\u0026sig=h4uYrTtMkQ8\\u0026ct=0\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"seekSchema\":3,\"disallowed\":false},{\"name\":\"sd\",\"url\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=2\\u0026sig=whiWdFAPXwU\\u0026ct=0\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"seekSchema\":3,\"disallowed\":false},{\"name\":\"hd\",\"url\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=3\\u0026sig=bGmvbFQz7NA\\u0026ct=0\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"seekSchema\":3,\"disallowed\":false}],\"metadataEmbedded\":\"\\u003C?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?\\u003E\\u003CMPD xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xmlns=\\\"urn:mpeg:DASH:schema:MPD:2011\\\" xsi:schemaLocation=\\\"urn:mpeg:DASH:schema:MPD:2011\\\" type=\\\"static\\\" mediaPresentationDuration=\\\"PT1449.2S\\\" minBufferTime=\\\"PT0.5S\\\" profiles=\\\"urn:mpeg:dash:profile:isoff-on-demand:2011\\\"\\u003E\\u003CPeriod id=\\\"0\\\" start=\\\"PT0S\\\" duration=\\\"PT1449.2S\\\"\\u003E\\u003CAdaptationSet id=\\\"0\\\" segmentAlignment=\\\"true\\\" subsegmentAlignment=\\\"true\\\" subsegmentStartsWithSAP=\\\"1\\\"\\u003E\\u003CRepresentation id=\\\"0\\\" bandwidth=\\\"104768\\\" width=\\\"256\\\" height=\\\"144\\\" quality=\\\"mobile\\\" frameRate=\\\"24\\\" codecs=\\\"avc1.64000C,mp4a.40.2\\\" audioSamplingRate=\\\"44100\\\" mimeType=\\\"video/mp4\\\" startWithSAP=\\\"1\\\"\\u003E\\u003CBaseURL\\u003Ehttps://vd335.mycdn.me/?expires=1630432672237\\u0026amp;srcIp=95.217.203.187\\u0026amp;srcAg=UNKNOWN\\u0026amp;ms=185.226.53.44\\u0026amp;type=4\\u0026amp;sig=wLDgZ2Ncspg\\u0026amp;ct=4\\u0026amp;urls=185.226.52.60\\u0026amp;clientType=0\\u0026amp;id=426740025983\\u003C/BaseURL\\u003E\\u003CSegmentBase indexRange=\\\"1369-2564\\\"\\u003E\\u003CInitialization range=\\\"0-1368\\\"/\\u003E\\u003C/SegmentBase\\u003E\\u003C/Representation\\u003E\\u003CRepresentation id=\\\"1\\\" bandwidth=\\\"297152\\\" width=\\\"426\\\" height=\\\"240\\\" quality=\\\"lowest\\\" frameRate=\\\"24\\\" codecs=\\\"avc1.640015,mp4a.40.2\\\" audioSamplingRate=\\\"44100\\\" mimeType=\\\"video/mp4\\\" startWithSAP=\\\"1\\\"\\u003E\\u003CBaseURL\\u003Ehttps://vd335.mycdn.me/?expires=1630432672237\\u0026amp;srcIp=95.217.203.187\\u0026amp;srcAg=UNKNOWN\\u0026amp;ms=185.226.53.44\\u0026amp;type=0\\u0026amp;sig=0DoDfFzi6XM\\u0026amp;ct=4\\u0026amp;urls=185.226.52.60\\u0026amp;clientType=0\\u0026amp;id=426740025983\\u003C/BaseURL\\u003E\\u003CSegmentBase indexRange=\\\"1375-2570\\\"\\u003E\\u003CInitialization range=\\\"0-1374\\\"/\\u003E\\u003C/SegmentBase\\u003E\\u003C/Representation\\u003E\\u003CRepresentation id=\\\"2\\\" bandwidth=\\\"623897\\\" width=\\\"640\\\" height=\\\"360\\\" quality=\\\"low\\\" frameRate=\\\"24\\\" codecs=\\\"avc1.64001E,mp4a.40.2\\\" audioSamplingRate=\\\"44100\\\" mimeType=\\\"video/mp4\\\" startWithSAP=\\\"1\\\"\\u003E\\u003CBaseURL\\u003Ehttps://vd335.mycdn.me/?expires=1630432672237\\u0026amp;srcIp=95.217.203.187\\u0026amp;srcAg=UNKNOWN\\u0026amp;ms=185.226.53.44\\u0026amp;type=1\\u0026amp;sig=h4uYrTtMkQ8\\u0026amp;ct=4\\u0026amp;urls=185.226.52.60\\u0026amp;clientType=0\\u0026amp;id=426740025983\\u003C/BaseURL\\u003E\\u003CSegmentBase indexRange=\\\"1372-2567\\\"\\u003E\\u003CInitialization range=\\\"0-1371\\\"/\\u003E\\u003C/SegmentBase\\u003E\\u003C/Representation\\u003E\\u003CRepresentation id=\\\"3\\\" bandwidth=\\\"1088858\\\" width=\\\"852\\\" height=\\\"480\\\" quality=\\\"sd\\\" frameRate=\\\"24\\\" codecs=\\\"avc1.64001E,mp4a.40.2\\\" audioSamplingRate=\\\"44100\\\" mimeType=\\\"video/mp4\\\" startWithSAP=\\\"1\\\"\\u003E\\u003CBaseURL\\u003Ehttps://vd335.mycdn.me/?expires=1630432672237\\u0026amp;srcIp=95.217.203.187\\u0026amp;srcAg=UNKNOWN\\u0026amp;ms=185.226.53.44\\u0026amp;type=2\\u0026amp;sig=whiWdFAPXwU\\u0026amp;ct=4\\u0026amp;urls=185.226.52.60\\u0026amp;clientType=0\\u0026amp;id=426740025983\\u003C/BaseURL\\u003E\\u003CSegmentBase indexRange=\\\"1376-2571\\\"\\u003E\\u003CInitialization range=\\\"0-1375\\\"/\\u003E\\u003C/SegmentBase\\u003E\\u003C/Representation\\u003E\\u003CRepresentation id=\\\"4\\\" bandwidth=\\\"1982516\\\" width=\\\"1280\\\" height=\\\"720\\\" quality=\\\"hd\\\" frameRate=\\\"24\\\" codecs=\\\"avc1.64001F,mp4a.40.2\\\" audioSamplingRate=\\\"44100\\\" mimeType=\\\"video/mp4\\\" startWithSAP=\\\"1\\\"\\u003E\\u003CBaseURL\\u003Ehttps://vd335.mycdn.me/?expires=1630432672237\\u0026amp;srcIp=95.217.203.187\\u0026amp;srcAg=UNKNOWN\\u0026amp;ms=185.226.53.44\\u0026amp;type=3\\u0026amp;sig=bGmvbFQz7NA\\u0026amp;ct=4\\u0026amp;urls=185.226.52.60\\u0026amp;clientType=0\\u0026amp;id=426740025983\\u003C/BaseURL\\u003E\\u003CSegmentBase indexRange=\\\"1372-2567\\\"\\u003E\\u003CInitialization range=\\\"0-1371\\\"/\\u003E\\u003C/SegmentBase\\u003E\\u003C/Representation\\u003E\\u003C/AdaptationSet\\u003E\\u003C/Period\\u003E\\u003C/MPD\\u003E\",\"metadataUrl\":\"https://vd335.mycdn.me/?expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=1\\u0026sig=h4uYrTtMkQ8\\u0026ct=6\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"hlsManifestUrl\":\"https://vd335.mycdn.me/video.m3u8?cmd=videoPlayerCdn\\u0026expires=1630432672237\\u0026srcIp=95.217.203.187\\u0026srcAg=UNKNOWN\\u0026ms=185.226.53.44\\u0026type=4\\u0026sig=wLDgZ2Ncspg\\u0026ct=8\\u0026urls=185.226.52.60\\u0026clientType=0\\u0026id=426740025983\",\"failoverHosts\":[\"vd339.mycdn.me\"],\"autoplay\":{\"autoplayEnabled\":true,\"timeFromEnabled\":true,\"noRec\":false,\"fullScreenExit\":false,\"vitrinaSection\":\"recommended_movie\"},\"p2pInfo\":{\"isPeerEnabled\":false,\"ubsc\":0,\"pbsc\":0,\"mptpc\":0,\"pctmt\":0,\"pbesc\":0,\"prrt\":0,\"srt\":0,\"swrt\":0,\"dctt\":0},\"stunServers\":[{\"urls\":[\"stun:videostun.mycdn.me:80\"]}]}","saveLastPlayingTimeFrom":"30","castId":"559D7832","noDownload":"1","locale":"ru","noChatLikes":"1","noChannel":"1","webmSec":"20","enabledLocalStorage":"1","minCacheTime":"120","maxCachePartOfDurationMQ":"30","checkMQ":"1","noTrailer":"1","recSlot":"7178","noLikeButton":"1","maxCachePartOfDuration":"10","isAnonym":"1","jidx":"1","hideWatermark":"0","isEmbed":"1","noOkliveBanner":"1","minCacheTimeMQ":"20","ldChunk":"2000","showChat":"1","ldBuffer":"6000","feedAdLogic":"15,3,3,14400","siteId":"504","location":"AnonymVideoEmbed/anonymVideoEmbed/anonym","hideExpand":"1","adLogic":"15,0,3,14400","checkAutoplayBrowsers":"safari,chrome,opera,yandex,firefox"},"liveRertyTimeout":5000,"poster":"https://i.mycdn.me/videoPreview?id=426740025983\u0026type=37\u0026idx=0\u0026tkn=pAfyf6Av9sm4uotfYjxQFcRyGbE\u0026fn=external_8","isExternalPlayer":false,"isIframePlayer":false,"isHtml5Player":true,"timestamp":"1630346272240","stubEnabled":false,"verifyInline":false,"webrtcBrokenH264":false}
*/
)).flashvars.metadata;
const video = JSON.parse(JSON.stringify(JSON.parse(obj))).videos; 
for (let i = 0; i < video.length; i++) {
   url = video[i].url;
   name = video[i].name;
   if(name == "mobile"){
     var a = url;
}
document.write(a);

但现在的问题是我不能播放那些视频。因为视频链接使用相同的标题确认。因为链接是在服务器端获取的,所以不能在客户端播放。

还有其他方法从ok.ru获得直接视频链接吗?或者如何发送客户端获取请求以使视频链接在客户端工作?

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 22:18:59

代码应该是这样的。有点乱,因为我不习惯香草JS。

如果你有任何问题,那就问吧。

代码语言:javascript
运行
复制
const axios = require("axios");
const cheerio = require("cheerio");

const url = "https://ok.ru/videoembed/947875089023";
const userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0";

function getData(link) {
  return axios.get(link).then(res => {
      const $ = cheerio.load(res.data);
      const dataOptions = $("[data-module=OKVideo]").attr("dataset").options;
      return new Promise.resolve(dataOptions);
    })
    .catch(err => new Promise.reject(err));
}

function extractUsefulData({
  url,
  expires,
  srcIp,
  srcAg,
  ms,
  type,
  sig,
  ct,
  urls,
  clientType,
  id
}) {
  return {
    url,
    expires,
    srcIp,
    srcAg,
    ms,
    type,
    sig,
    ct,
    urls,
    clientType,
    id
  }
}

function makeVideoLink(options) {
  const host = options.url;
  del options.url;
  const videoLink = url + Object.keys(options)
    .map(key => `${key}=${options[key]}`)
    .join('&');

  return videoLink;
}

function videoRequest(videoLink) {
  axios.get(videoLink, {
      headers: {
        "user-agent": userAgent;
      }
    })
    .then(res => new Promise.resolve(res.data))
    .catch(err => new Promise.reject(err));
}

getData(url)
  .then(data => extractUsefulData(data))
  .then(data => makeVideoLink(data))
  .then(link => videoRequest(link))
  .catch(err => console.log(err));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69005221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档