前言
声明:本文章只是指出部分网站的 BUG,希望有问题的网站尽快修复!请勿非法操作,出现任何问题与博主无关.
2020/04/16:我又修改了一下代码.本地测试没问题.
其实跟那个某里大同小异就是修改一下上传参数而已…
代码
打开 https://docs.qq.com/
登录之后按 F12.
刷新一下,随便找个链接地址就行!
我们只需要 cookie 里的:
uid_key
和uid
如:
uid=1****************191; uid_key=So0Uh*************************************************************Ww3Zocf;
放到记事本里.一会有用.
脚本是按照原来的某里改的,我们这里只说思路.具体自己用 python 或 java,E 语言什么写就自己动手吧
<?php $v_path = $argv[1]; //切片路径 $v_name = $argv[2]; //带切片的视频路径名称 $s = 5; //切片秒 ts 切片必须小于 10MB $cookie = 'uid=1441***********1; uid_key=So0Uh***************************8ocf;'; //自己的腾讯云文档 COOKIE // var_dump(upload('./player001.ts', $cookie)); if (empty($v_path) || empty($v_name)) { echo "请填写完整参数"; exit; } if ($v_path == '/' || $v_path == '\\') { $v_path = ''; } else { mkFolder($v_path); $v_path = $v_path . "/"; } //这是 FFmpeg 处理命令大家自行更改 exec("ffmpeg -i $v_name -c copy -map 0 -f segment -segment_list " . $v_path . "playlist.m3u8 -segment_time $s " . $v_path . "player%03d.ts"); $m = file_get_contents('./' . $v_path . 'playlist.m3u8'); preg_match_all('/player(.*?)\.ts/', $m, $arr); foreach ($arr[1] as $key => $value) { echo isWinEcho("处理第" . $value . '个切片' . "\n"); $txdoc = upload('./' . $v_path . 'player' . $value . '.ts', $cookie); $m = str_replace('player' . $value . '.ts', $txdoc, $m); file_put_contents('./' . $v_path . 'play.m3u8', $m); } echo isWinEcho("处理完毕" . "\n"); echo isWinEcho("播放链接为:/" . $v_path . 'play.m3u8'); function upload($file, $cookie) { $url = 'https://docs.qq.com/ep/api/attach_local?globalPadId=300000000$1RQgmyKIzZYs'; $post['file'] = file_path($file); $md5 = md5_file(realpath($file)); $rel = get_curl($url, $post, $cookie); $relJson = json_decode($rel); if (!empty($relJson) && $relJson->retcode == 0) { return str_replace('failed', $md5, str_replace('?w=0&h=0', '', str_replace('qqadapt.qpic.cn', 'puep.qpic.cn', $relJson->url))); } return 'error'; } function get_curl($url, $post = 0, $cookie = '', $ua = 0) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // 不验证证书 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 120); $httpheader[] = "Accept:application/json"; $ip = mt_rand(48, 140) . "." . mt_rand(10, 240) . "." . mt_rand(10, 240) . "." . mt_rand(10, 240); //随机 ip $httpheader[] = 'CLIENT-IP:' . $ip; $httpheader[] = 'X-FORWARDED-FOR:' . $ip; curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); if ($post) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } if ($ua) { curl_setopt($ch, CURLOPT_USERAGENT, $ua); } else { curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; U; Android 4.0.4; es-mx; HTC_One_X Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0"); } curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($ch); curl_close($ch); return $ret; } function mkFolder($path) { if (!is_readable($path)) { is_file($path) or mkdir($path, 0700); } } function file_path($file) { if (class_exists('CURLFile')) { return $post['file'] = new \CURLFile(realpath($file)); } else { return $post['file'] = '@' . realpath($file); } } function isWinEcho($str) { if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { // win 系统转码 要不然 cmd 乱码 return iconv("UTF-8", "gbk//TRANSLIT", $str); } else { return $str; } }
复制代码另存为 m3u8.php
以 win 为例子:
打开控制台(CMD)
进入 m3u8.php 所在文件夹:
php m3u8.php [视频保存路径] [mp4 视频路径]
自动生成文件夹和切片文件:
你的播放地址就是在 test 文件夹里的 play.m3u8
如果无法播放很可能是触发的防盗链需要在头部加上
#无来源 触发防盗链请在 head 标签中间加上下面的代码 <meta name="referrer" content="no-referrer"/>
来我们试试(下面视频引入的是某云文档链接,看不到就是不正常):