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

代码如下


使用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 是一个代表微信配置信息的模型类,你需要根据自己的项目结构进行调整。另外,函数的调用方式将根据你的具体需求而有所变化。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值