loading...

精華 (PHP)小紅書(shū)無(wú)水印視頻/圖集解析實(shí)現(xiàn)思路

本帖最后由 編輯 于1 年前編輯 只看Ta 樓主

直接貼代碼:

class Video {
    public function redbook($url) {
        $ip= $this->get_randip();
        $array = parse_url($url);
        switch ($array['host']) {
            case 'www.xiaohongshu.com':
                $id = str_replace('/explore/' , "", $array['path']);
                $loc = 'https://www.xiaohongshu.com/discovery/item/'."$id";
                break;
            case 'xhslink.com':
                $loc=get_headers($url,true)['Location'][0];
                //print_r($loc);
                $array = parse_url($loc);
                $id = str_replace('/discovery/item/' , "", $array['path']);
                break;
            default:
                exit(json_encode(['code'=>-1, 'msg'=>"視頻鏈接不正確"], 480));
                break;
        }
        $header =array(
              'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0',
              'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
              'Referer: https://www.xiaohongshu.com/',
              'Cookie: abRequestId=9b9a13ea-1720-51e9-a6de-331abacaa69e; webBuild=4.9.0; a1=18eb6b4d5afmq46r71nf5oo7195et621myj77skjs50000382501; webId=3c8dab9561d74f401b898f922ccbc720; gid=yYdDKD4fSy6iyYdDKD4f2vMT0i6A4KFWyIi2VVMllWyj2W28d9KJyW888qYJ28y8DJ00dYYj; unread={%22ub%22:%2266037cba000000000d00f96c%22%2C%22ue%22:%2265f38c00000000000d00cbc9%22%2C%22uc%22:29}; xsecappid=xhs-pc-web; websectiga=7750c37de43b7be9de8ed9ff8ea0e576519e8cd2157322eb972ecb429a7735d4; sec_poison_id=abc0abe9-c5e3-4933-a48b-33aeacb1b480; web_session=0400698d0903920b8e59620d27344be55719de',
              'Connection: keep-alive',
              'CLIENT-IP:'.$ip,
              'X-FORWARDED-FOR:'.$ip
           );
        $html = $this->curl_general($loc,$header);
        //正則 window.__INITIAL_STATE__=
        preg_match('/window\.__INITIAL_STATE__.+redmojiMap\"\:\{\}\}\}\}/',$html,$arr);
        $arr = str_replace('window.__INITIAL_STATE__=' , "", $arr[0]);
        $json = json_decode(str_replace('undefined' ,'null', $arr),true);
        //print_r($json);
        $images_num=count($json['note']['noteDetailMap'][$id]['note']['imageList']);
        for($i = 0; $i < $images_num; $i++){
            $ch[$i] = $json['note']['noteDetailMap'][$id]['note']['imageList'][$i]['infoList'][1]['url'];
        }
        if(empty($json['note']['noteDetailMap'][$id]['note']['video'])){
            $arr = array(
                'code' => 300,
                'msg' => '解析成功',
                'data' => [
                    'author' => $json['note']['noteDetailMap'][$id]['note']['user']['nickname'],
                    'uid' => $json['note']['noteDetailMap'][$id]['note']['user']['userId'],
                    'avatar'=>$json['note']['noteDetailMap'][$id]['note']['user']['avatar'],
                    'cover'=>$ch[0],
                    'like' => $json['note']['noteDetailMap'][$id]['note']['interactInfo']['likedCount'],
                    'title' =>  $json['note']['noteDetailMap'][$id]['note']['title'],
                    'images_num' => $images_num,
                    "images" => $ch
                    ]
                );
        }else{
            $arr = array(
                'code' => 200,
                'msg' => '解析成功',
                'data' => [
                    'author' => $json['note']['noteDetailMap'][$id]['note']['user']['nickname'],
                    'uid' => $json['note']['noteDetailMap'][$id]['note']['user']['userId'],
                    'avatar'=>$json['note']['noteDetailMap'][$id]['note']['user']['avatar'],
                    'cover' => $ch[0],
                    'like' => $json['note']['noteDetailMap'][$id]['note']['interactInfo']['likedCount'],
                    'title' =>  $json['note']['noteDetailMap'][$id]['note']['desc'],
                    'url' => 'https://sns-video-bd.xhscdn.com/' . $json['note']['noteDetailMap'][$id]['note']['video']['consumer']['originVideoKey'],
                    ]
                );
        }
        return $arr;
    }
    private function get_randip() {
        $ip_long = array(
            array('607649792', '608174079'), //36.56.0.0-36.63.255.255
            array('1038614528', '1039007743'), //61.232.0.0-61.237.255.255
            array('1783627776', '1784676351'), //106.80.0.0-106.95.255.255
            array('2035023872', '2035154943'), //121.76.0.0-121.77.255.255
            array('2078801920', '2079064063'), //123.232.0.0-123.235.255.255
            array('-1950089216', '-1948778497'), //139.196.0.0-139.215.255.255
            array('-1425539072', '-1425014785'), //171.8.0.0-171.15.255.255
            array('-1236271104', '-1235419137'), //182.80.0.0-182.92.255.255
            array('-770113536', '-768606209'), //210.25.0.0-210.47.255.255
            array('-569376768', '-564133889'), //222.16.0.0-222.95.255.255
        );
        $rand_key = mt_rand(0, 9);
        $ip = long2ip(mt_rand(
            $ip_long[$rand_key][0],
            $ip_long[$rand_key][1]
            ));
        return $ip;
    }
    private function curl_general($url, $header) {
        $ch = curl_init() ;
        curl_setopt_array($ch, array(
           CURLOPT_URL => $url,
           CURLOPT_RETURNTRANSFER => true,
           CURLOPT_ENCODING => '',
           CURLOPT_BINARYTRANSFER=>true,
           CURLOPT_MAXREDIRS => 100,
           CURLOPT_TIMEOUT => 0,
           CURLOPT_FOLLOWLOCATION => true,
           CURLOPT_SSL_VERIFYHOST=>false,
           CURLOPT_SSL_VERIFYPEER => false,
           CURLOPT_HTTPHEADER => $header
        ));
        //$meta = curl_getinfo($ch);//print_r($meta);
        $output = curl_exec($ch);//print_r($output);
        curl_close ($ch);
        return $output;
    }
}

二、實(shí)現(xiàn)方法
1、id提取
www.xiaohongshu.com 瀏覽器直接復(fù)制過(guò)來(lái)的
xhslink.com 分享的短鏈地址
首先拿到文章的id,直接復(fù)制過(guò)來(lái)的從鏈接中提取,短鏈接從 header 頭中提取,或者重定向提取

這個(gè)id后面提取json中還會(huì)用到

拼接小紅書(shū)視頻/圖集地址:https://www.xiaohongshu.com/discovery/item/{小紅書(shū)id}

2、請(qǐng)求地址
請(qǐng)求這個(gè)地址,header 中包含 cookie 和 Accept ,這兩個(gè)請(qǐng)求參數(shù)登錄小紅書(shū)網(wǎng)頁(yè)版直接獲取。

請(qǐng)求中的內(nèi)容包含 json 格式文本,正則提取 json 格式文本,json 文本位于 window.INITIAL_STATE= 后

正則表達(dá)式如下:/window.__INITIAL_STATE__.+redmojiMap\"\:{}}}}/ ,php示例如下:

preg_match('/window\.__INITIAL_STATE__.+redmojiMap\"\:\{\}\}\}\}/',$html,$arr);
$arr = str_replace('window.__INITIAL_STATE__=' , "", $arr[0]);
$json = json_decode(str_replace('undefined' ,'null', $arr),true);

3、獲取圖集地址
圖集地址位于json文件中下面路徑,id為第一步獲取到的id,默認(rèn)解析到的為無(wú)水印的地址,通過(guò)for循環(huán)存進(jìn)數(shù)組。

$json['note']['noteDetailMap'][$id]['note']['imageList']

注意:請(qǐng)求頭中 Accept 中需包含 image/webp; 參數(shù),沒(méi)有這個(gè)參數(shù)請(qǐng)求的圖片包含水印,建議直接復(fù)制小紅書(shū)網(wǎng)頁(yè)中的 Accept 。

#示例代碼
$images_num=count($json['note']['noteDetailMap'][$id]['note']['imageList']);
    for($i = 0; $i < $images_num; $i++){
        $ch[$i] = $json['note']['noteDetailMap'][$id]['note']['imageList'][$i]['infoList'][1]['url'];
    }

4、獲取視頻地址
通過(guò)拼接 originVideoKey 參數(shù)得到無(wú)水印的地址

originVideoKey 參數(shù)位于:$json['note']['noteDetailMap'][$id]['note']['video']['consumer']['originVideoKey']

拼接方法:'

#示例代碼
 $arr = array(
            'code' => 200,
            'msg' => '解析成功',
            'data' => [
                'author' => $json['note']['noteDetailMap'][$id]['note']['user']['nickname'],
                'uid' => $json['note']['noteDetailMap'][$id]['note']['user']['userId'],
                'avatar'=>$json['note']['noteDetailMap'][$id]['note']['user']['avatar'],
                'cover' => $ch[0],
                'like' => $json['note']['noteDetailMap'][$id]['note']['interactInfo']['likedCount'],
                'title' =>  $json['note']['noteDetailMap'][$id]['note']['desc'],
                'url' => 'https://sns-video-bd.xhscdn.com/' . $json['note']['noteDetailMap'][$id]['note']['video']['consumer']['originVideoKey'],
                ]
            );
發(fā)帖
請(qǐng)先 登錄 再評(píng)論

? 2025挨踢網(wǎng) - 大家的導(dǎo)航! - iT200.COM 粵ICP備15047905號(hào)-9

亚洲国产爱久久全部精品_日韩有码在线播放_国产欧美在线观看_中文字幕不卡在线观看

    
    

    9000px;">

      
      

      亚洲人成人一区二区在线观看| 亚洲一区二区三区四区在线| 欧美日韩一区在线| 欧美日韩国产一级二级| 911国产精品| 久久久不卡影院| 亚洲最大色网站| 久久成人免费日本黄色| 国产在线精品一区二区不卡了 | 成人小视频在线| 欧美日韩激情一区二区| 日日噜噜夜夜狠狠视频欧美人| 东方aⅴ免费观看久久av| 一本色道综合亚洲| 国产午夜久久久久| 奇米综合一区二区三区精品视频| jiyouzz国产精品久久| 精品欧美乱码久久久久久 | 日韩免费视频一区| 日韩毛片一二三区| 看片网站欧美日韩| 最新热久久免费视频| 久久er99精品| 一区二区不卡在线播放 | 亚洲综合一二三区| 久久精品综合网| 欧美一级一级性生活免费录像| 亚洲乱码日产精品bd| 国产一区 二区 三区一级| 亚洲色图.com| 中文字幕av一区 二区| 精品亚洲欧美一区| 欧美一级日韩一级| 在线免费亚洲电影| 午夜精品久久久久久久久| 色哟哟一区二区| 国产91丝袜在线播放九色| 秋霞电影网一区二区| 一区二区三区四区精品在线视频| 国产欧美日韩一区二区三区在线观看| 国产精品影音先锋| 久久综合久久鬼色| 成人亚洲一区二区一| 美女一区二区三区在线观看| 日韩欧美黄色影院| 制服丝袜成人动漫| 欧美群妇大交群的观看方式| 91激情在线视频| 丝袜诱惑制服诱惑色一区在线观看| 国产精品色哟哟网站| 99国产精品久久久久久久久久| 中文字幕中文字幕一区| 91美女蜜桃在线| 午夜日韩在线电影| 亚洲自拍偷拍欧美| 亚洲精品网站在线观看| 亚洲三级小视频| 亚洲午夜久久久久中文字幕久| 欧美在线小视频| 欧美日韩在线播放一区| 欧美日韩久久久久久| 91精品国产欧美一区二区18 | 国产精品婷婷午夜在线观看| 国产性色一区二区| 国产亚洲一区二区三区四区| 中文字幕+乱码+中文字幕一区| 国产精品久久三| 亚洲国产一区在线观看| 日韩精品一二三四| 精品一区二区三区香蕉蜜桃| 国产精品888| 色综合久久综合中文综合网| 色94色欧美sute亚洲线路二 | 欧美疯狂性受xxxxx喷水图片| 国产精品88888| 91丝袜美女网| 欧美日韩精品一区视频| 欧美videos大乳护士334| 国产女人18毛片水真多成人如厕 | 国产欧美一区二区精品性色超碰 | 亚洲少妇屁股交4| 午夜视频一区在线观看| 美女www一区二区| 99久久精品99国产精品| 欧美精品日韩一本| 国产欧美日韩麻豆91| 亚洲午夜在线观看视频在线| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区二区四区蜜桃| 久久精品免费观看| 色婷婷激情久久| 久久免费看少妇高潮| 亚洲男人都懂的| 久久99这里只有精品| 91老师国产黑色丝袜在线| 精品国产91乱码一区二区三区| 欧美电影一区二区三区| 国产午夜精品久久久久久免费视 | 欧美电影一区二区| 综合久久给合久久狠狠狠97色 | 美日韩一级片在线观看| 不卡的电影网站| 成人精品视频.| 欧美一区二区福利在线| 亚洲日本va在线观看| 国产精品自拍av| 亚洲精品一区二区三区影院| 亚洲国产裸拍裸体视频在线观看乱了 | 国产精品女同一区二区三区| 免费观看一级特黄欧美大片| 色成人在线视频| 国产精品国产自产拍高清av王其 | 欧美影视一区在线| 91麻豆国产福利在线观看| 久久日韩精品一区二区五区| 日韩在线一二三区| 欧美日韩综合一区| 亚洲午夜久久久久久久久电影网| 色系网站成人免费| 亚洲日穴在线视频| 一道本成人在线| 亚洲综合无码一区二区| 91久久线看在观草草青青| 一区二区不卡在线视频 午夜欧美不卡在| 不卡一区二区在线| 亚洲人成网站在线| 欧美在线免费播放| 亚洲综合av网| 欧美日韩国产综合一区二区| 亚洲第一久久影院| 国内精品久久久久影院色 | 亚洲国产成人自拍| 成人美女在线观看| 亚洲青青青在线视频| 成人av在线电影| 中文成人av在线| 97久久人人超碰| 丝袜美腿高跟呻吟高潮一区| 欧美一区二区三区婷婷月色| 久久国产精品第一页| 欧美精品一区二| 成人18视频在线播放| 亚洲精品乱码久久久久久| 欧美男男青年gay1069videost| 毛片av一区二区三区| 国产欧美日韩综合| 欧美婷婷六月丁香综合色| 美女视频黄免费的久久| 国产精品午夜春色av| 在线观看日韩毛片| 国产在线精品国自产拍免费| 中文字幕一区二区三区不卡在线| 欧美性一二三区| 国产一区二区精品久久91| 亚洲欧美一区二区在线观看| 91精选在线观看| 高潮精品一区videoshd| 亚洲丶国产丶欧美一区二区三区| 欧美va亚洲va香蕉在线| 91视频国产资源| 激情六月婷婷久久| 亚洲一二三专区| 国产日韩欧美一区二区三区乱码| 日本福利一区二区| 国产一区二区三区精品欧美日韩一区二区三区| 中文字幕精品一区| 91精品国产91久久久久久最新毛片 | 国产一区二区三区免费| 一区二区三区在线观看动漫 | 日韩欧美国产一区二区三区| 国产一区二区伦理片| 亚洲国产高清aⅴ视频| 在线电影欧美成精品| av不卡在线播放| 黄页网站大全一区二区| 一区二区三区四区国产精品| 久久久久亚洲蜜桃| 91精品欧美综合在线观看最新| 97se狠狠狠综合亚洲狠狠| 国内久久精品视频| 日本伊人色综合网| 欧美精品久久一区| fc2成人免费人成在线观看播放| 天堂一区二区在线免费观看| 国产精品美女久久久久高潮| 久久影院电视剧免费观看| 4hu四虎永久在线影院成人| 日本丶国产丶欧美色综合| 成人午夜在线视频| 懂色av一区二区夜夜嗨| 国内精品久久久久影院色| 免费视频最近日韩| 日韩av一区二区三区四区| 亚洲成av人影院在线观看网| 亚洲精品免费电影| 亚洲人成网站在线| 亚洲综合激情小说| 亚洲aaa精品| 蜜臀精品久久久久久蜜臀| 免费观看一级特黄欧美大片|