laravel & Thinkphp 写一个WXV视频解析接口 (更新版->2023-09-09)

图片[1]-laravel & Thinkphp 写一个WXV视频解析接口 (更新版->2023-09-09)-[:ug]Waris[:zh]Waris[:]

代码如下


使用curl库 === 不推荐

因为 cookie 每几天一次更新导致代码乱且太长

    function decodeWXV(string $wxv) {
        // 从数据库中获取微信公众号的配置信息
        $config = Wxconfig::query()->first();
        $token = $config->sub_token;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://mp.weixin.qq.com/cgi-bin/video?action=get_mp_video_play_url&vid=' . $wxv . '&token=' . $token);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'authority' => 'mp.weixin.qq.com',
            'accept' => 'image/avif,image/webp',
            'accept-language' => 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'cache-control' => 'no-cache',
            'pragma' => 'no-cache',
            'sec-ch-ua' => 'Chromium";v="110", "Not A(Brand";v="24", "Microsoft Edge";v="110',
            'sec-ch-ua-mobile' => '?0',
            'sec-ch-ua-platform' => '"Windows"',
            'sec-fetch-dest' => 'document',
            'sec-fetch-mode' => 'navigate',
            'sec-fetch-site' => 'none',
            'sec-fetch-user' => '?1',
            'upgrade-insecure-requests' => '1',
            'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 S',
            'Accept-Encoding' => 'gzip, deflate, br',
        ]);
        curl_setopt($ch, CURLOPT_COOKIE, $config->sub_cookie);
        $response = curl_exec($ch);
        curl_close($ch);
        $decode=json_decode($response);
        $url = str_replace("mpvideo.qpic.cn","wxsnsdy.wxs.qq.com/130/20210/snssvpdownload/SH/reserved",$decode->url_info[0]->url);
        if ($url==null) {return '';}
        return $url;
    }

重点 重点 重点

优化后的代码

把 Cookie 和 Token 保存到数据,从数据库里获取

function decodeWXV(string $wxv) {
        // 从数据库中获取微信公众号的配置信息
        $config = Wxconfig::query()->first();
        $response = Http::withHeaders(['Cookie' => $config->sub_cookie])
            ->get('https://mp.weixin.qq.com/cgi-bin/video?action=get_mp_video_play_url&vid='.$wxv.'&token='.$config->sub_token);
        $decode = $response->json();
        $url = $decode['url_info'][0]['url'];
        $url = str_replace("mpvideo.qpic.cn", "wxsnsdy.wxs.qq.com/130/20210/snssvpdownload/SH/reserved", $url);
        if (empty($url)) {return '';}
        return $url;
    }

改成 ThinkPHP


use think\facade\Http;

public function decodeWXV($wxv){
    // 从数据库中获取微信公众号的配置信息
    $config = WxconfigModel::find();
    $response = Http::header(['Cookie' => $config->sub_cookie])
        ->get('https://mp.weixin.qq.com/cgi-bin/video?action=get_mp_video_play_url&vid='.$wxv.'&token='.$config->sub_token);
    $decode = $response->json();
    $url = $decode['url_info'][0]['url'];
    $url = str_replace("mpvideo.qpic.cn", "wxsnsdy.wxs.qq.com/130/20210/snssvpdownload/SH/reserved", $url);
    if (empty($url)) {return '';}
    return $url;
}

请注意,此示例中的 WxconfigModel 是一个代表微信配置信息的模型类,你需要根据自己的项目结构进行调整。另外,函数的调用方式将根据你的具体需求而有所变化。

版权声明

1 本网站名称:Waris 资源库
2 本站永久网址:https://www.waric.cn
3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长微信Uyweb_cn,进行删除处理。
4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6 本站部分资源存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容