1. 程式人生 > 其它 >PHP程式碼實現抖音去水印

PHP程式碼實現抖音去水印

技術標籤:phpwebjavapython移動開發

PHP程式碼實現抖音去水印

前言

1、一直在尋找抖音去水印的方法,PHP的要不然過時了,要不然就是java的,或者是Python的。

2、更過分的是有人提供api收費介面打著,開源原始碼的旗號。

3、這裡我就提供純粹的原始碼思路,怎麼啦!怎麼啦

實現思路

1、使用爬蟲技術分析、php我們用的querylist

2、在你的框架裡面引入 composer jaeger/querylist:"*"

3、分析頁面,使用GuzzleHttp請求分析 (GuzzleHttp在querylist 版本4會依賴GuzzleHttp)

頁面分析

1、拿到一個抖音分享頁面 http://v.douyin.com/xpnQUK/

2、在瀏覽器裡面打開發現他是有路由重定向的我們用程式碼輸出這個頁面

$url = 'http://v.douyin.com/xpnQUK/';

$headers = [

    'Connection' => 'keep-alive',

    'Host' => 'aweme.snssdk.com',

    'User-Agent'=>'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1'

];

$client = new Client(['headers'=>$headers]);

//允許重定向獲取html

$res = $client->request('GET', $url,['allow_redirects' => true]);

$html = (string)$res->getBody();

echo $html;die;

3、執行上面程式碼後會發現是一個手機分享頁面的輸出。

然後我們獲取這個短視訊的文案標題、視訊封面、視訊地址

我們重最難的視訊地址開始吧

視訊地址獲取

$Query = QueryList::getInstance();
        $video_src = $Query->html($html)->find('video')->src;

        //爬蟲視訊地址
        $video_src = str_replace("playwm","play",$video_src);

        //獲取url地址之後不能讓他重定向
        $res = $client->request('GET', $video_src,['allow_redirects' => false]);
        $data['video_src']= $res->getHeaderLine('location');

視訊封面獲取

$video_cover = $Query->html($html)->find('.video-poster')->style;
        $video_cover = str_replace("background-image:url(","",$video_cover);
        $data['video_cover'] = trim($video_cover,')');

文案標題獲取

$video_title = $Query->html($html)->find('.user-title')->text();
        $title =  explode('@',$video_title);
        for ($i=0;$i<count($title);$i++){
            $video_title = str_replace('@'.$title[$i],"",$video_title);
        }
        $title =  explode('#',$video_title);
        for ($i=0;$i<count($title);$i++){
            $video_title = str_replace('#'.$title[$i],"",$video_title);
        }

        $video_title = str_replace("抖音","",$video_title);
        $data['video_title'] = trim($video_title);

最後程式碼總結

public function douyin($url){
        $headers = [
            'Connection' => 'keep-alive',
            'Host' => 'aweme.snssdk.com',
            'User-Agent'=>'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1'
        ];
        $client = new Client(['headers'=>$headers]);

        //允許重定向獲取html
        $res = $client->request('GET', $url,['allow_redirects' => true]);
        $html = (string)$res->getBody();


        $Query = QueryList::getInstance();
        $video_src = $Query->html($html)->find('video')->src;

        //爬蟲視訊地址
        $video_src = str_replace("playwm","play",$video_src);

        //獲取url地址之後不能讓他重定向
        $res = $client->request('GET', $video_src,['allow_redirects' => false]);
        $data['video_src']= $res->getHeaderLine('location');

        //視訊封面
        $video_cover = $Query->html($html)->find('.video-poster')->style;
        $video_cover = str_replace("background-image:url(","",$video_cover);
        $data['video_cover'] = trim($video_cover,')');

        $video_title = $Query->html($html)->find('.user-title')->text();
        $title =  explode('@',$video_title);
        for ($i=0;$i<count($title);$i++){
            $video_title = str_replace('@'.$title[$i],"",$video_title);
        }
        $title =  explode('#',$video_title);
        for ($i=0;$i<count($title);$i++){
            $video_title = str_replace('#'.$title[$i],"",$video_title);
        }

        $video_title = str_replace("抖音","",$video_title);
        $data['video_title'] = trim($video_title);
        
        return $data;
    }