【教程】php实现百度网盘视频解析
本帖最后由 逗啊逗 于 2017-1-10 15:01 编辑有段时间没发帖了,来一篇百度网盘视频解析的教程。 感觉教程不太难,就用图文的方式吧:
首先,登陆自己的百度网盘,随便打开一个视频播放。
F12,点一下network,在下面搜一下文件名,找到streaming?path=..的这个文件,
这个就是百度网盘云端转码后的视频,格式m3u8的,有这个文件就可以播放了。
用代码实现以下读取这个文件:
<?php
header("Content-Type:text/html;charser=UTF-8");
// 初始化
$curl = curl_init();
// 要访问的网址
curl_setopt($curl, CURLOPT_URL, 'https://pan.baidu.com/api/streaming?path=%2Fvideo%2F%E9%AC%BC%E5%90%B9%E7%81%AF%E4%B9%8B%E7%B2%BE%E7%BB%9D%E5%8F%A4%E5%9F%8E%2FEP15.mp4&type=M3U8_FLV_264_480&app_id=250528&t=0.32432524021714926');
// 设置来路
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 降结果保存在$result中
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 降结果保存在$result中
$result = curl_exec($curl);
// 关闭
curl_close($curl);
echo $result;
?>
出现错误提示{"errno":-6,"request_id":221785833888917825}说明需要添加cookie
需要在代码中填上自己的cookie:
$header[]= 'Cookie:PANWEB=1; bdshare_firstime=1------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------';
再试一下:
好了。
尝试播放一下这个文件
发现播放不了,这是什么原因呢?就是上面这个crossdomain.xml文件,在跨域调用资源的时候,只允许文件里面的域名访问(框起来的就是),这时候播放就不能用自己的播放器了可以选择百度自己的播放器:http://ubmcmms.baidu.com/media/v1/0f000AsdQWMkVLkX374w40.swf?file=
还是播放不了,原因是我们自己的网站没有crossdomain.xml文件,在网站根目录传一个crossdomain.xml文件允许所有域名访问。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
看看这回这么样:
成功了。
到这里基本就结束了,收尾工作就是写一个通用的代码,想播放那个视频就播放那个视频,回过头看最开始那个streaming文件的地址https://pan.baidu.com/api/streaming?path=%2Fvideo%2F%E9%AC%BC%E5%90%B9%E7%81%AF%E4%B9%8B%E7%B2%BE%E7%BB%9D%E5%8F%A4%E5%9F%8E%2FEP15.mp4&type=M3U8_FLV_264_480&app_id=250528&t=0.32432524021714926。
url解码一下:
https://pan.baidu.com/api/streaming?path=/video/鬼吹灯之精绝古城/EP15.mp4&type=M3U8_FLV_264_480&app_id=250528&t=0.32432524021714926
红字部分就是网盘的文件地址,所以改一下代码,就可以变成通用的解析,就是把地址改成http://pan.baidu.com/api/streaming?path='.$_GET['id'].'&type=M3U8_FLV_264_480&app_id=250528&t=0.18165189120918512
这样就算完成了。
源码放在下面:
使用方法就是先把cookie改成自己的,在把文件传到自己的空间就行,本地也可以,不过需要php环境,然后记得修改crossdomain.xml,没有的可以按照我上面写的新建一个,调用就直接浏览器输入http://你的地址/baidu?id=/百度文件的位置/文件.mp4
播放则是输入http://ubmcmms.baidu.com/media/v1/0f000AsdQWMkVLkX374w40.swf?file=http://你的地址/baidu.php?id=/百度文件的位置/文件.mp4
教程结束。
另外:这是电脑端播放,手机端提取到m3u8文件就可以直接播放了,不用额外的操作了。
在此帮大神标记一下手机web页面不能播放的问题。
经过我接近70个小时不眠不休的刻苦公关,终于在网盘的源码中找到了答案。不自己用脑袋想,只是生搬硬套大神引导教程的人,跟我一样没时间找女朋友。
在网盘源码中的https://pan.baidu.com/box-static/file-widget-1/pkg/videoPlay-all_75bc42b.js中是有代码逻辑可查的。
this.type = o.supportsNativeHls ? "application/x-mpegURL" : "application/x-flvURL",
this.BPSType = o.supportsNativeHls ? "M3U8_AUTO_480" : "M3U8_FLV_264_480",
因为电脑对NativeHls的支持少,而手机已经放弃flash来。所以百度的大神来了这一招。。。。。
手机上的连接用该是https://pan.baidu.com/api/streaming?path={0}&app_id=250528&clienttype=0&type=M3U8_AUTO_480&{2}
而电脑上的连接应该是https://pan.baidu.com/api/streaming?path={0}&app_id=250528&clienttype=0&type=M3U8_FLV_264_480&{2}
手机上的播放代码可以直接写成
<video id="html5player_html5_api" autoplay="autoplay" preload="none" style="background-color:black" width="320" height="240">
<source src="https://pan.baidu.com/api/streaming?path={0}&app_id=250528&clienttype=0&type=M3U8_AUTO_480&{2}" type="application/x-mpegURL"></video>
注意" type="application/x-mpegURL"
在此在此感谢大神的无私分享和付出
6666666666不错。 感觉很牛逼的样子,这样很好啊不错 喜欢 好厉害 基本看不懂 很好的一个思路,不过百度盘对影视审查太严格了,指不定哪天就失效了。 看懂一丝丝。后面有点蒙蔽 楼主请问视频如何正确下载?我下载百度网盘在线播放的视频发现无法播放 szy106 发表于 2017-1-10 15:18
楼主请问视频如何正确下载?我下载百度网盘在线播放的视频发现无法播放
我有写啊,原因在于跨域播放,就是crossdomain文件,百度网盘不允许其他域名访问视频,所以需要用百度自己的播放器(找上面),或者用手机是可以的 挺好,收藏备用 这个引导式的教程很不错啊