|
发表于 2019-12-17 10:17:16
|
显示全部楼层
湖南省益阳市
捣鼓了一下,play_addr是无水印,不知道这个怎么跳转。- https://aweme.snssdk.com/aweme/v1/play/?video_id=abde1af212e74c9aa9df3bd987fb8c50&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&is_support_h265=0&source=PackSourceEnum_PUBLISH
- 》》》》》
- http://v26-dy.ixigua.com/37b18e7a6acca4001b7975a81cd69697/5df841a8/video/m/220195d54e2296d42879c68ff0251c540f711556bef0000157abbd429a8/?a=1128&br=1996&bt=998&cr=0&cs=0&dr=0&ds=3&er=&l=201912170946560100140431360674C9D8&lr=&qs=0&rc=M2ZlOjxlaTxkZjo1NWRoZUApNGg8M2Y3Ojw6N2QzOzQ6ZGcyNWM1YTBhXjYxYi5jLmFec2E1Xi1eYjMvXjRhMjYwXl46Yw%3D%3D
复制代码- <?php
- /*
- * --------------------------------------------------
- * version: V2019-12-17
- * website: http://luoliang.com.cn
- * --------------------------------------------------
- * 架设的当前服务器解析设置地址url为:http://127.0.0.1/?url=
- * 假设需要url为:https://v.douyin.com/4kkNg3/
- * 那实际完整解析地址:http://127.0.0.1/?url=https://v.douyin.com/4kkNg3/
- */
- /* 屏蔽错误 */
- error_reporting(0);
- /* 可指定编码语言 如:UTF-8 */
- //header("Content-Type:text/html;charset=UTF-8");
- /* 参考方法1取参数; */
- //$qc_url1 = $_GET["url"];
- //echo $qc_url1;
- /* ===参考方法2取参数;=== */
- $qc_url2 = $_REQUEST['url'];
- /* 检测查找参数开始 */
- if (isset($qc_url2)){
- //echo "url参数存在并检测地址是否包含 '*内容*'; ";
- if (strpos($qc_url2, 'douyin.com') !== false ){
- // echo '检测存在检测长短; ';
- if (strlen($qc_url2) < 16){
- echo 'url地址定义太短 检测:'.strlen($qc_url2);
- return $qc_url2;
- } else {
- /* ==========验证正确 内容开始========== */
- // echo $qc_url2.' ==》正确长度: ', strlen($qc_url2);
- /*
- * $str_r= '/(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/';
- * preg_match_all($str_r,$url,$arr);
- * $share_url=$arr[0][0];
- */
- //$qc_url2 = "http://v.douyin.com/4kkNg3/";
- $url_302 = fcbl_get_redirect_url($qc_url2);
- //echo '// 跳转后的链接 = ' . $url_302.'</br>';
- $qc_video_item_ids = fcbl_get_item_ids($url_302);
- // echo '// 正则匹配匹配 mid = ' . $qc_video_item_ids . '</br>';
- $content = fcbl_file_get_contents($url_302);
- // echo '// 读入源码' . $content;
- $qc_dytk = fcbl_get_dytk($content);
- // echo '// 正则匹配 dytk = ' . $qc_dytk . '</br>';
- $hbzh_url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=".$qc_video_item_ids."&dytk=".$qc_dytk;
- // echo '// 合并拼接的url= ' . $hbzh_url . '</br>';
- $result = fcbl_file_get_contents($hbzh_url);
- // header('Content-Type:application/json; charset=utf-8');
- // print_r($result);
- // 将JSON编码的字符串分配给PHP变量
- $json_data = $result;
- // echo $json_data;
- // 将JSON数据解码为PHP数组
- $arr_content01 = json_decode($json_data, true);
- //echo '<hr>// 获取个数: '.count($arr_content01).'</br>';
- //* print_r($arr_content01); //输出方法1数组结果
- //* var_dump($arr_content01); //输出方法2包括类型数据
- //* var_export($arr_content01); //输出方法3数据
- // ==========将视频地址自定义到数组==========
- $douyinvideo_array = array($arr_content01["item_list"][0]["video"]["play_addr"]["url_list"][0],$arr_content01["item_list"][0]["video"]["download_addr"]["url_list"][0],$arr_content01["item_list"][0]["video"]["play_addr_lowbr"]["url_list"][0]);
- $douyinvideo_array2 = array($arr_content01["item_list"][0]["video"]["play_addr"]["url_list"][1],$arr_content01["item_list"][0]["video"]["download_addr"]["url_list"][1],$arr_content01["item_list"][0]["video"]["play_addr_lowbr"]["url_list"][1]);
- // ==========将图片地址自定义到数组==========
- $douyinvideoimg_array = array($arr_content01["item_list"][0]["video"]["cover"]["url_list"][0],$arr_content01["item_list"][0]["video"]["dynamic_cover"]["url_list"][0],$arr_content01["item_list"][0]["video"]["origin_cover"]["url_list"][0]);
- // ==========将公共调用定义到数组==========
- $html5_array[2] = array('<a class="html-attribute-value html-resource-link" target="_blank" href="','" rel="noreferrer noopener"></a>','<video controls="" autoplay="" name="media"><source src="','" type="video/mp4"></video>','<img style="-webkit-user-select: none;" width="10%" height="10%" src="','"/>');
- echo '<hr>';
- echo 'logid:'.$arr_content01['extra']['logid'].'</br>';
- echo 'video.height:'.$arr_content01['item_list'][0]['video']['height'].'</br>'; // ['item_list'][0].video.height ;
- echo 'video.width:'.$arr_content01['item_list'][0]['video']['width'].'</br>'; // ['item_list'][0].video.width ;
- echo 'video.width:'.$arr_content01['item_list'][0]['aweme_id'].'</br>'; // ['item_list'][0]['aweme_id'] ;
- echo 'desc简介:'.$arr_content01['item_list'][0]['desc'].'</br>'; // ['item_list'][0].desc ;
- echo '视频play_addr[0]-[1]:'.$douyinvideo_array[0].'</br>'; // ['item_list'][0].video['play_addr']['url_list'][0] ;
- echo '视频download_addr[0]-[1]:'.$douyinvideo_array[1].'</br>'; // ['item_list'][0].video['download_addr']['url_list'][0] ;
- echo '视频play_addr_lowbr[0]-[1]:'.$douyinvideo_array[2].'</br>'; // ['item_list'][0].video['play_addr_lowbr']['url_list'][0] ;
- echo '<hr>';
- echo '[1]:'.$douyinvideo_array2[0].'</br>';
- echo '[1]:'.$douyinvideo_array2[1].'</br>';
- echo '[1]:'.$douyinvideo_array2[2].'</br>';
- echo '<hr>';
- echo '图片video.cover_300x400.jpeg[0]-[3]:'.$html5_array[4].$douyinvideoimg_array[0].$html5_array[5].'</br>'; // ['item_list'][0].video.cover['url_list'][0] ;
- echo '图片dynamic_cover_480x270.webp[0]-[3]:'.$html5_array[4].$douyinvideoimg_array[1].$html5_array[5].'</br>'; // ['item_list'][0].video['dynamic_cover']['url_list'][0] ;
- echo '图片origin_cover_640x360.jpeg[0]-[3]:'.$html5_array[4].$douyinvideoimg_array[2].$html5_array[5].'</br>'; // ['item_list'][0].video['origin_cover']['url_list'][0] ;
- echo '<hr>';
- echo <<<END
- <html>
- <head>
- <meta name="viewport" content="width=device-width">
- </head>
- <body>
- <!--<video controls="" autoplay="" name="media"><source src=" " type="video/mp4">-->
- </video>
- </body>
- </html>
- END;
- //$i = 0; //*默认计次
- // 通过关联数组循环
- //foreach ($arr_content01 as $arg){
- // $i++; //记录次数
- // echo '// 显示结果个数 ' . $i .' ==》 '. $arg . "</br>";
- //}
- echo "<hr>";
- /* ==========验证正确 内容结束========== */
- }
- } else {
- echo "douyin.com 内容不存在 ";
- }
- } else {
- echo "无参数 url=";
- }
- /* ===检测地址参数结束=== */
- // 获取302跳转后的url
- function fcbl_get_redirect_url($url) {
- // 创建一个新cURL资源
- $ch = curl_init();
- // 设置URL和相应的选项
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_NOBODY, true);
- // 设置UA
- curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1");
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- // 抓取URL并把它传递给浏览器
- curl_exec($ch);
- // 获取一个cURL连接资源句柄的信息
- $info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
- // 关闭cURL资源,并且释放系统资源
- curl_close($ch);
- return $info;
- }
- // 正则匹配 mid
- function fcbl_get_item_ids($content){
- preg_match("~video/(.*?)/~", $content, $matches);
- $item_ids = $matches[1];
- return $item_ids;
- }
- // 把整个文件读入一个字符串中。
- function fcbl_file_get_contents($url){
- ini_set('user_agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1');
- return file_get_contents($url);
- }
- // 正则匹配 dytk
- function fcbl_get_dytk($content){
- preg_match("~dytk(.*?)}~", $content, $matches);
- $Dytk = $matches[1];
- preg_match("~"(.*?)"~",$Dytk,$matches2);
- $dytk = $matches2[1];
- return $dytk;
- }
- //
- function fcbl_get_url($url){
- $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_RETURNTRANSFER, 1);
- $output = curl_exec($ch);
- curl_close($ch);
- $output = json_decode($output,true);
- return $output;
- }
- // 正则匹配
- function fcbl_video_url($content){
- preg_match("~https(.*?)"~", $content, $matches);
- $item_ids = $matches[0];
- return $item_ids;
- }
- ?>
复制代码
|
|