吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3134|回复: 13
收起左侧

[其他转载] 网易云音乐热评api php源码

  [复制链接]
九霄道长 发表于 2020-9-26 13:35
初来乍到
[PHP] 纯文本查看 复制代码
<?php
/*
 * Title:网易云热评
 * auth:九霄道长
 */
class Hot_review
{

    public function Get_comments($songid)
    {
        // 设置请求头
        $headers = array(
            'Accept:*/*',
            'Accept-Language:zh-CN,zh;q=0.9',
            'Connection:keep-alive',
            'Content-Type:application/x-www-form-urlencoded',
            'Host:music.163.com',
            'Origin:https://music.163.com',
            // 模拟浏览器设置 User-Agent ,否则取到的数据不完整
            'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
        );
        // 拼接歌曲的url
        $url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_' . $songid . '?csrf_token=';
        // 拼接加密 params 用到的第一个参数
        $first_param = '{"rid":"R_SO_4_' . $songid . '","offset":"0","total":"true","limit":"20","csrf_token":""}';
        $data = array('params' => $this->aesGetParams($first_param), 'encSecKey' => $this->getEncSecKey());
        $htmlInfo = $this->httpPost($url, $headers, http_build_query($data));

        $htmlInfo= $this->str_change($htmlInfo);
        $arr = ["comments" => $htmlInfo["comments"], "hotComments" => $htmlInfo["hotComments"]];
        echo json_encode($arr, 448);
    }
    /**
     * 将字符串转换为对象再转换为数组(升级版,通用)
     *
     * [url=home.php?mod=space&uid=952169]@Param[/url]    string    $data    字符串
     * [url=home.php?mod=space&uid=155549]@Return[/url]    array    返回数组格式,如果,data为空,则返回空数组
     */
    private function str_change($data) {
        //去除一个字符串两端空格,
        $data=trim($data);
        //解码
        $data=json_decode($data,true);
        return $data;
    }


    /**
     *  加密获取params
     * @param $param // 待加密的明文信息数据
     * @param string $method // 加密算法
     * @param string $key // key
     * @param string $options // options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING
     * @param string $iv // 非 NULL 的初始化向量
     * @return string
     *
     * $key 在加密 params 中第一次用的是固定的第四个参数 0CoJUm6Qyw8W8jud,在第二次加密中用的是 js 中随机生成的16位字符串
     */
    private function aesGetParams($param, $method = 'AES-128-CBC', $key = 'JK1M5sQAEcAZ46af', $options = '0', $iv = '0102030405060708')
    {
        $firstEncrypt = openssl_encrypt($param, $method, '0CoJUm6Qyw8W8jud', $options, $iv);
        $secondEncrypt = openssl_encrypt($firstEncrypt, $method, $key, $options, $iv);
        return $secondEncrypt;
    }

    /**
     *  encSecKey 在 js 中有 res 方法加密。
     *  其中三个参数分别为上面随机生成的16为字符串,第二个参数 $second_param,第三个参数 $third_param 都是固定写死的,这边使用抄下来的一个固定 encSecKey
     * @return bool
     */
    private function getEncSecKey()
    {
        $getEncSecKey = '2a98b8ea60e8e0dd0369632b14574cf8d4b7a606349669b2609509978e1b5f96ed8fbe53a90c0bb74497cd2eb965508bff5bfa065394a52ea362539444f18f423f46aded5ed9a1788d110875fb976386aa4f5d784321433549434bccea5f08d1888995bdd2eb015b2236f5af15099e3afbb05aa817c92bfe3214671e818ea16b';

        return $getEncSecKey;
    }

    /**
     * curl 发送 post 请求
     * @param $url
     * @param $header
     * @param $data
     * @return mixed
     */
    private function httpPost($url, $header, $data)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);                // 0不带头文件,1带头文件(返回值中带有头文件)
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);        // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);        // 使用自动跳转
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);           // 自动设置Referer
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);        //设置等待时间
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);              //设置cURL允许执行的最长秒数
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
}
if ($_GET["songid"]==null){
    echo "音乐id不可为空";
}else{
    $a=new Hot_review();
    $a->Get_comments($_GET["songid"]);
}


xxx.php??songid=1450163801
不知道能不能放成品,我就先不放了
参考项目:https://github.com/ljhe/GetWangYiYunComments
QQ截图20200926133143.png

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
gblw + 1 + 1 我很赞同!
buyu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 九霄道长 发表于 2020-12-12 16:17
tikok_vie 发表于 2020-12-9 23:33
楼主 请问有查询某个用户评论的方法吗

这个没有,个人主页里没有评论列表
 楼主| 九霄道长 发表于 2020-9-26 17:50
qadan 发表于 2020-9-26 19:11
 楼主| 九霄道长 发表于 2020-9-26 19:48
qadan 发表于 2020-9-26 19:11
支持楼主,原创不易

感谢支持!!!
tea456 发表于 2020-9-27 07:56
有点厉害了,谢谢分享
zhangfei28 发表于 2020-9-30 00:02
感谢分享了
黄蜀黍 发表于 2020-9-30 10:19
可以发成品
gblw 发表于 2020-12-9 16:14
楼主,支持呀 可以发成品!
tikok_vie 发表于 2020-12-9 23:33
楼主 请问有查询某个用户评论的方法吗
latvro 发表于 2020-12-11 11:27
感谢大神的分享,学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表