php源码

抖音去水印解析下载源码,原生解析接口
2022-09-25 我的站长站

抖音去水印解析下载源码,原生解析接口

  • 源码编号:2274
  • 点击次数:
  • 数 据 库 :
  • 源码授权:试用
  • 开源情况:非商用
  • 下载权限:普通 / VIP
  • 源码售价:免费下载
  • 下载次数:16

源码介绍

分享一款抖音去水印解析下载源码,自带PHP原生解析接口,不采用第三方接口,避免接口快速失效和谐的烦恼。

支持无水印解析;抖音短视频 ,抖音图集,快手短视频 ,快手图集。

抖音去水印解析下载源码,原生解析接口
源码截图

顺带分享下自带的解析API接口代码

<?php
class API {
         
    static public function findURL($url) {
                 
        preg_match('/([w-]+.)+w+(:d{2,6})?/', $url, $domain);
        switch ($domain[0]) {
            case '':
                return self::result(500, '请传入解析url参数,例:https://v.douyin.com/ehHpu7V/');
            break;
            case 'v.douyin.com':
                return self::douyin($url);
            break;
            case 'v.kuaishou.com':
                return self::kuaishou($url);
            break;
            default:
                return self::result(500, '抱歉,此url暂不支持!');
        }
    }
         
    static public function douyin($url) {
                 
        $url = self::httpRequest($url, 'GET');
        $url = $url['location'];
        // echo($url);
        //模拟苹果手机访问
        $UserAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1';
        $d= 'https://www.douyin.com/';
        $e = '/';
        $flag =self::GetBetween($url,$d,$e) ;
        // echo($flag);
        if($flag=='video'){
        $b = 'https://www.douyin.com/video/';
        $c = '?p';
        $id = self::GetBetween($url,$b,$c);
        $vidoUrl = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='.$id;
        // echo($id);
        // echo($vidoUrl);
        $result = self::httpRequest($vidoUrl, 'GET');
        $vid = $result['response']['item_list'][0]['video']['play_addr']['uri'];
        if (isset($vid)) {
            $video_url = 'https://aweme.snssdk.com/aweme/v1/play/?video_id=' . $vid . '&ratio=720p&line=0';
             //获取重定向后的真实地址
            $video_url = self::get_redirect_url($video_url);
            $music = $result['response']['item_list'][0]['music']['play_url']['uri'];
            $nickname = $result['response']['item_list'][0]["share_info"]["share_title"];
             $type = "movie";
            $return = array('nickname' => $nickname, 'video_url' => $video_url, 'music' => $music,'type'=>$type);
            return self::result(200, $return);
        } else {
            return self::result(500, '解析出错!');
        }
            
        }
        else{
        $b = 'https://www.douyin.com/note/';
        $c = '?p';
        $id = self::GetBetween($url,$b,$c);
        
        $arr = json_decode(self::qqxz_http_get('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='. $id), true);
    // var_dump($arr['item_list'][0] ["images"][2]["url_list"][0]);
    // var_dump($arr['item_list'][0]["images"]);
        // echo(count($arr['item_list'][0]["images"]));
   
    // echo("<img src='$cover' type='images'");
        // var_dump($arr);
        if ($arr) {
            for($i=1;$i<count($arr['item_list'][0]["images"]);$i++){
                // echo($arr['item_list'][0] ["images"][$i]["url_list"][0]);
                $img[$i]=$arr['item_list'][0] ["images"][$i]["url_list"][0];
                // echo("<br>");
                }
            $url = $arr['item_list'][0]["video"]["play_addr"]["uri"];
            $title = $arr['item_list'][0]["share_info"]["share_title"];
            $cover = $arr['item_list'][0]['video']["origin_cover"]["url_list"][0];
    
        // var_dump($img);
            $img[0]=$cover;
            $type = "photo";
            $return = array('nickname' => $title, 'video_url' => $img, 'music' => $url,'type'=>$type);
            return self::result(200, $return);
        } else {
            return self::result(500, '解析出错!');
        }
        
        }
        
       
    }
         
     static public function kuaishou($url) {
         $locs = get_headers($url, true) ['Location'][1];
        // echo($locs);
        $d= 'video.kuaishou.com/';
        $e = '/';
        $flag =self::GetBetween($locs,$d,$e) ;
        
        // echo($flag);
        preg_match('/photoId=(.*?)&/', $locs, $matches);
    //   var_dump($matches[1]);
        
        $json = self::get_ks_json($locs,$matches);
        
        //  var_dump($json['atlas']['list']);
        if($flag=='short-video'){
            for($i=0;$i<count($json['atlas']['list']);$i++){
         
                $img[$i] = 'https://p2.a.yximgs.com'.$json['atlas']['list'][$i];
            }
            
            $type = 'photo';
         
        }else{
            // var_dump($json['photo']['mainMvUrls'][0]['url']);
            $img = $json['photo']['mainMvUrls'][0]['url'];
            $type = 'movie';
        }
         
        //  var_dump( $json['shareInfo']['shareTitle']);
        //  var_dump( 'https://p2.a.yximgs.com'.$json['atlas']['music']);
        //  var_dump($img);
        
        if ($json) {
            $url = $img;
            $title = $json['shareInfo']['shareTitle'];
            $cover = 'https://p2.a.yximgs.com'.$json['atlas']['music'];
   
            $return = array('nickname' => $title, 'video_url' => $url, 'music' => $cover,'type'=>$type);
            // var_dump($return);
            return self::result(200, $return);
            
        } else {
            return self::result(500, '解析出错!');
        }
            
   
    }
         
    static public function httpRequest($url, $method = 'POST', $postfields = null, $headers = array()) {
                 
        $method = strtoupper($method);
        $ci = curl_init();
        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60);
        curl_setopt($ci, CURLOPT_TIMEOUT, 30);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
        switch ($method) {
            case "POST":
                curl_setopt($ci, CURLOPT_POST, true);
                if (!empty($postfields)) {
                    $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
                    curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
                }
            break;
            default:
                curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method);
            break;
        }
        $ssl = preg_match('/^https:///i', $url) ? TRUE : FALSE;
        curl_setopt($ci, CURLOPT_URL, $url);
        if ($ssl) {
            curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE);
        }
        curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ci, CURLOPT_MAXREDIRS, 2);
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ci, CURLINFO_HEADER_OUT, true);
        $response = json_decode(curl_exec($ci), true);
        $requestinfo = curl_getinfo($ci);
        $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
        $location = curl_getinfo($ci, CURLINFO_EFFECTIVE_URL);
        curl_close($ci);
        return array('location' => $location, 'response' => $response, 'requestinfo' => $requestinfo);
    }
         
    static public function result($errno = 0, $data = '') {
                 
        header("Content-type: application/json;charset=utf-8");
        $errno = intval($errno);
        $result = array('code' => $errno, 'message' => $data);
        return json_encode($result, 320);
    }
    
   // 截取ID
    static public function GetBetween($content,$start,$end) {
            $r = explode($start, $content);
            if (isset($r[1])) {
            $r = explode($end, $r[1]);
            return $r[0];
        }
            return '';
        }
        
        
    static public function qqxz_http_get($url)
    {
        $Header=array( "User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
        $con=curl_init((string)$url);
        curl_setopt($con,CURLOPT_HEADER,False);
        curl_setopt($con,CURLOPT_SSL_VERIFYPEER,False);
        curl_setopt($con,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($con,CURLOPT_HTTPHEADER,$Header);
        curl_setopt($con,CURLOPT_TIMEOUT,5000);
        $result = curl_exec($con);
        return $result;
}
    static public function get_redirect_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_HTTPHEADER, array( "User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"));
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_NOBODY, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $ret = curl_exec($ch);
        curl_close($ch);
        preg_match("/Location: (.*?)rn/iU",$ret,$location);
        return $location[1];
}
  
 static public function get_ks_json($locs,$matches) {
        $headers = array('Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1','Cookie: did=web_9bceee20fa5d4a968535a27e538bf51b; didv=1655992503000;',
        'Referer: ' . $locs, 'Content-Type: application/json');
        $post_data = '{"photoId": "' . str_replace(['video/', '?'], '', $matches[1]) . '","isLongVideo": false}';
        $vurl ='https://v.m.chenzhongtech.com/rest/wd/photo/info?kpn=KUAISHOU&captchaToken=';
        $curl = curl_init();
        
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_URL, $vurl);
        curl_setopt($curl, CURLOPT_NOBODY, 0);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
        $data = curl_exec($curl);
        
        
        curl_close($curl);
        
        return json_decode($data, true);
}
}
下载地址

· 积分下载:下载扣除对应积分,不扣除下载次数
· 会员免费:VIP会员免费下载,扣除下载次数
· 下载即代表您已阅读并同意 [服务条款]

相关推荐
  • 抖音去水印
  • 抖音解析
  • 抖音源码
  • 抖音去水印解析下载源码,原生解析接口
    抖音去水印解析下载源码,原生解析接口

    源码介绍分享一款抖音去水印解析下载源码,自带PHP原生解析接口,不采用第三方接口,避免接口快速失效和谐的烦恼。支持无水印解析;抖音短视频 ,抖音图集,快手短视频 ,快手图集。源码截图顺带分享下自带的...

    php源码 94 1年前
  • 简单的PHP解析抖音小视频地址方法

    写这个抖音小视频地址解析文章完全是最近不知道写什么,本来想写个头条西瓜视频解析的,写了一半发现头条用js加密了,解析比较麻烦,改天有空了再搞吧。先看看今天的抖音小视频解析源码,源码非常简单,保证一看就会。PHP解析抖音小视频地址方法第一步你需要在...

    php教程 409 3年前
  • PHP抖音解析下载API接口代码

    PHP抖音解析下载API接口代码<?phpfunction GetVideos($url) {$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_SSL_VER...

    php教程 182 3年前
  • 趣味测评抖音小程序源码
    趣味测评抖音小程序源码

    源码介绍抖音最新项目趣味测评抖音小程序源码,紫色ui风格,带流量主,打开广告自己刷15个左右收益在60 ,代码放出来了,其他自行研究。源码截图源码安装方法1. 下载抖音开发者工具后导入小程序代码2. ...

    小程序源码 26 7个月前
  • PHP抖音视频在线解析下载源码
    PHP抖音视频在线解析下载源码

    PHP抖音解析源码安装方法访问站点执行安装程序安装完成后请删除/install文件夹后台账号密码:admin/123456抖音解析源码功能说明V1.0会员系统,前后台自适应V1.0后台登录验证码校验V1.0双重xss验证,防...

    php源码 451 4年前
  • PHP抖音快手无水印解析APi接口源码
    PHP抖音快手无水印解析APi接口源码

    源码介绍最新2021.07.07可用的PHP抖音快手无水印解析APi接口源码,修复了抖音接口参数更新导致解析出错问题。解析源码截图使用方法丢在服务器,域名访问 ,域名/shuiyin/?url=抖音或快手短链接...

    php源码 333 2年前
最新更新