突破某易云的JS逆向,利用Python采集整站数据!

python爬虫之JS逆向基础小案例:网抑云数据获取 win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源) 编辑器: pycharm 2022.3。requests >>> 数据请求。解释器: python 3.8。 阅读详情

python爬虫–爬取网易云音乐评论
文章目录
python爬虫--爬取网易云音乐评论
1.简易看出评论是动态加载的,一定是ajax方式。
2.通过网络抓包,可以找出评论请求的的URL
3.去查看post请求所上传的数据
4.首先去查看请求是经过那些js到达服务器的
5.设置断点:依次对所发送的内容进行观察,找到评论对应的URL
6.查找加密函数
7.解读加密函数
8.参数如何获得:
9.这时只需找到某一个i以及它对应的encSecKey 即可完成服务器的验证

当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢?

学习Python中有不明白推荐加入交流Q群号:701698587

群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!

方1:使用selenium模块,简单粗暴。但是虽然方便但是缺点也是很明显,运行慢等等等。
方2:常规思路:直接去请求服务器

1.简易看出评论是动态加载的,一定是ajax方式。
2.通过网络抓包,可以找出评论请求的的URL

在这里插入图片描述

得到请求的URL

在这里插入图片描述
3.去查看post请求所上传的数据

在这里插入图片描述

显然是经过加密的,现在就需要按着网易的思路去解读加密过程,然后进行模拟加密。

4.首先去查看请求是经过那些js到达服务器的

在这里插入图片描述
5.设置断点:依次对所发送的内容进行观察,找到评论对应的URL

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
6.查找加密函数

在这里插入图片描述
(忽略查找过程)找到:加密函数在

在这里插入图片描述

通过查找,找到加密函数具体位置:

在这里插入图片描述
7.解读加密函数
运用的是AES,模式是:CBC

function a(a) { a=16
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length, #生成随机数
            e = Math.floor(e), #取整
            c += b.charAt(e); #取出b中对应位置的字符
        return c
    }
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a) #e是数据
          , f = CryptoJS.AES.encrypt(e, c, { #c就是加密密钥 
            iv: d, #iv是偏移量
            mode: CryptoJS.mode.CBC # 模式:CBC加密
        });
        return f.toString()
    }
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }
    function d(d, e, f, g) { d:数据json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"
        var h = {}
          , i = a(16); #16位随机值
        return h.encText = b(d, g), g是密钥
        h.encText = b(h.encText, i), #返回的就是params i是密钥
        h.encSecKey = c(i, e, f), #返回的是encSecKey e和f定死,能产生变数的只能是i
        h
    function e(a, b, d, e) {
        var f = {};
        return f.encText = c(a + e, b, d),
        f
    }
    window.asrsea = d



解读该过程即可:代码有注释。8.参数如何获得:

 function d(d, e, f, g) { d:数据json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"


 var bZe2x = window.asrsea(JSON.stringify(i4m), brx6r(["流泪", "强"]), brx6r(Sc1x.md), brx6r(["爱心", "女孩", "惊恐", "大笑"]));

#使用网页控制台:发现都为定值;

在这里插入图片描述
9.这时只需找到某一个i以及它对应的encSecKey 即可完成服务器的验证

在这里插入图片描述

拿到该值之后开始编写代码

#1.找到未加密的参数        #通过函数window.asrsea()进行加密
#2.想办法把参数进行加密,params--->encText  encSecKey--->encSecKey

from Cryptodome.Cipher import AES
from base64 import b64encode
import requests,json

e = "010001"
f = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
g = "0CoJUm6Qyw8W8jud"
i = "0hyFaCNAVzOIdoht"

url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }

def get_encSecKey():
    return "4022359ea3110bcd034e0160c3b89e5e172fd0110a3cf765d9f366d9fd09840a1f4a4705ac43719fdb8bfeb44d3b92334733061ad10942131184a4dfba0ac9d2cf867b8b6236523c1ca5f44c0d2d82c1c2665a3137a9241c7373539c1aa8e5e9bb9d33dafc764b5d76c2ab34fc94df85e27a934c8a603fa713f2cf38c2b7bbae"

def get_params(data): #data默认是json字符串
    first = enc_params(data,g)
    second = enc_params(first,i)
    return second

def to_16(data):
    pad = 16-len(data)%16
    data +=chr(pad) * pad
    return data

def enc_params(data,key): #加密过程
    iv = "0102030405060708"
    data = to_16(data)
    aes = AES.new(key=key.encode('utf-8'),IV=iv.encode('utf-8'),mode=AES.MODE_CBC) #创建加密器
    bs = aes.encrypt(data.encode('utf-8')) #加密
    return str(b64encode(bs),"utf-8") #转化成字符串

#处理加密过程
'''
 function a(a) { a=16
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)
            e = Math.random() * b.length, #生成随机数
            e = Math.floor(e), #取整
            c += b.charAt(e); #取出b中对应位置的字符
        return c
    }
    function b(a, b) {
        var c = CryptoJS.enc.Utf8.parse(b)
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a) #e是数据
          , f = CryptoJS.AES.encrypt(e, c, { #c就是加密密钥 
            iv: d, #iv是偏移量
            mode: CryptoJS.mode.CBC # 模式:CBC加密
        });
        return f.toString()
    }
    function c(a, b, c) {
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    }
    function d(d, e, f, g) { d:数据json串  e:"010001" f:   g = "0CoJUm6Qyw8W8jud"
        var h = {}
          , i = a(16); #16位随机值
        return h.encText = b(d, g), g是密钥
        h.encText = b(h.encText, i), #返回的就是params i是密钥
        h.encSecKey = c(i, e, f), #返回的是encSecKey e和f定死,能产生变数的只能是i
        h
    }'''
if __name__ == '__main__':

    page = int(input('请输入需要爬取的页数:'))
    print('开始爬虫!!!')
    fp = open('./网易云评论.txt', 'w', encoding='utf-8')
    for j in range(1,page+1):
        page_num = str(j*20)
        data = {
            'csrf_token': "",
            'cursor': "-1",
            'offset': "0",
            'orderType': "1",
            'pageNo': "1",
            'pageSize': page_num,
            'rid': "R_SO_4_1376142151",
            'threadId': "R_SO_4_1376142151"
        }

        response = requests.post(url,data={
            "params":get_params(json.dumps(data)),
            "encSecKey":get_encSecKey()
        },headers=headers)


        result = json.loads(response.content.decode('utf-8'))
        #hotComments
        for hot in range(len(result['data']['hotComments'])):
            fp.write('hotComments' + ' ')
            fp.write('昵称:' + result['data']['hotComments'][hot]['user']['nickname'] + '\n')
            fp.write('评论:' + result['data']['hotComments'][hot]['content'] + '\n')

            if result['data']['hotComments'][hot]['user']['vipRights'] == None:
                fp.write('vip:yes' + '\n')
            else:
                fp.write('vip:no' + '\n')
            fp.write('点赞数' + str(result['data']['hotComments'][hot]['likedCount']) + '\n')
            fp.write('-------------------------------------' + '\n')

        #print(result['data']['hotComments'][1]['user']['nickname'])

        #comments
        for r in range(20):
            fp.write('comments')
            fp.write('昵称:'+result['data']['comments'][r]['user']['nickname']+'\n')
            fp.write('评论:'+result['data']['comments'][r]['content']+'\n')

            if result['data']['comments'][r]['user']['vipRights'] == None:
                fp.write('vip:yes'+'\n')
            else:
                fp.write('vip:no'+'\n')
            fp.write('点赞数'+str(result['data']['comments'][r]['likedCount'])+'\n')
            fp.write('-------------------------------------'+'\n')
    print('爬取完毕!!!')


效果图

在这里插入图片描述
感想
通过这次爬虫实验,在爬取的过程中,遇到各种困难,收货很多。掌握遇到加密,该如何处理的步骤,以及拓宽自己的思路,去运用各种工具。以及各种自己想不到的思路。最起码,下次遇到如此加密的数据获取,心里有了一些底气。
也了解了大互联网公司对数据进行加密的一种方式,以及网页运作的更深一步的了解,受益颇多。

ns3使用总结(常用语句) ns3欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑 阅读详情

相关推荐

Python简单网抑云数据采集 JS逆向

var bVg1x = window.asrsea(JSON.stringify(i4m), bsk6e([“流泪”, “强”]), bsk6e(WH4L.md), bsk6e([“爱心”, “女孩”, “惊恐”, “大笑”]));网址: https://music.163.com/#/discover/toplist?id=3779629。躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。保存数据 -> 保存歌曲数据到本地文件夹。请求参数: 表单数据 (加密数据)

m0_72282564的博客 2061

js逆向爬取某音乐网站某歌手的歌曲

js逆向技术,是当下爬虫技术的主流了,学好之后,爬与反爬,都需要。

alijunshan的博客 2959

网易云音乐JS逆向&Python爬虫&网易云逆向

网易云音乐加密&Python爬虫&网易云逆向&JS逆向

Not__Cry的博客 3903

python爬虫实战之逆向分析酷狗音乐

这是对于逆向爬虫中的步骤。 本文会使用谷歌浏览器自带的开发者工具,分析网页端的酷狗音乐的请求进行逆向。 当然对于手机端也是可以进行爬虫和逆向的,不过会比网页端复杂多,需要一些工具以及反编译手段,需要java部分基础,这个我们将留到后面讲解学习。

weixin_45859193的博客 7255

华为防火墙NAT避坑指南:当双ISP出口遇到服务器发布,这些细节不注意会翻车

本文深入解析华为防火墙在双ISP出口环境下服务器发布的实战配置,重点探讨no-reverse参数对Server-Map表的影响、源进源出功能的实现及线路切换时的会话保持问题。通过策略路由和智能选路技术,确保HTTP/FTP服务在多运营商链路中的高可用性,避免路径不对称和NAT映射冲突等常见陷阱。

weixin_30897233的博客 550

基于RK3588与FPGA的SDI视频处理系统:从MIPI CSI-2输入到DSI输出的全链路解析

本文深入解析了基于RK3588与FPGA的SDI视频处理系统全链路。系统利用FPGA作为高速接口转换与流管理核心,将SDI信号转换为MIPI CSI-2数据流送入RK3588进行智能图像处理与AI分析,处理结果再通过MIPI DSI回传,最终由FPGA控制编码为SDI输出,实现了专业视频接口与强大算力的高效协同。

s1t2u3的博客 667

【Python爬虫---js逆向】Js逆向之网易云音乐

JS逆向,AES解密算法过程,网易云音乐JS逆向大概过程

m0_67844671的博客 3556

在centos7部署k8s搭建kubernetes集群

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找

山东梅长苏 1万+

python爬虫网易云音乐(js逆向)

最近在学习python爬虫,拿网易云音乐练练手。本文章不贴js逆向分析了,不会的可以看我QQ音乐那偏文章。

qq_40718364的博客 1298

kaggle项目:纽约出租车行程时间NYC Taxi Trip Duration

纽约出租车形成时间预测(NYC Taxi Trip Duration)是Kaggle中的一个Playground竞赛。比赛数据集基于2016年纽约市黄色出租车行程记录数据,需要建立一个模型,根据单个行程属性,预测测试集中每次行程的持续时间。Kaggle项目模型XGBoost,评价指标RMSLE。

weixin_42113929的博客 2790

新四化浪潮下,中年整车诊断工程师的黄金突围路

摘要 本文探讨了汽车电子诊断工程师在当前行业变革中的独特优势与发展路径。作者作为从业者指出,整车诊断岗位在汽车"新四化"浪潮中呈现"逆生长"特性:技术壁垒高、经验复利强、市场需求持续增长。中年工程师凭借丰富的案例积累和实战经验成为行业稀缺人才,薪资水平显著高于同龄段其他技术岗位。文章分析了四条职业发展路径(技术专家、技术管理、细分深耕、横向拓展),并警示了三大职业风险(执行层局限、技术停滞、成果沉淀不足)。最后提出具体建议,强调掌握UDS高阶、DoIP以太网诊断等核心技术的重要性,为中年技术人提供了清晰的职

Soly_kun的博客 309

QQ音乐JS逆向爬虫,获取调皮的sign参数,我用python全都爬!

爬虫高级必然JS逆向,QQ音乐爬虫就是一个很好的练手,读完学会了直接在你女朋友面前装一手,读完你将收获到,QQ音乐JS逆向,sign参数获取,songmid参数获取,vkey参数获取,selenium自动化解析,用python解析执行js代码。

Blog沙漏在下雨 1万+

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

资深编辑的整站文章采集,经验技巧大揭秘

本文将分享我作为一名资深网络编辑在整站文章采集方面的经验和技巧,希望能够对广大编辑同行们有所帮助。1.选择适合的主题作为一名网络编辑,我们首先要做的就是选择适合的主题。根据网站的定位和受众需求,我们要找到热门、具有吸引力的主题。可以通过市场调研、关注社交媒体趋势等方式来确定主题。2

wanghui19880909的博客 80

商用车重型多挡位机械式变速器(AMT)结构设计与仿真分析

本文针对商用车重型AMT变速器开展结构设计与仿真分析。设计采用12挡双中间轴结构,匹配400kW柴油发动机,最大扭矩2000Nm。通过等比级数分配传动比(头挡14.5,最高挡0.78),采用主副箱组合实现多挡位。双中间轴结构可抵消径向力,提升承载能力。关键设计包括:235mm中心距、4.5-5.0mm齿轮模数、锁环式同步器和复合润滑系统。通过Python参数化建模进行强度校核,计算显示中间轴在2000Nm工况下等效应力满足安全系数要求(屈服强度850MPa,安全系数≥2)。该设计解决了传统MT变速器操作强度

AI的内部世界的博客 113

Node-RED系列(二二):使用dashboard搭配echarts制作漂亮的面板

在node-red中dashboard 是一个很常用的模块,其中它有一个chart节点可以用来制作一些图表,比如柱状图,折线图,饼图,但其中的图表并不是很美观,而且可配置项非常的少。 于是就有很多小伙伴找我做一套比较好看的图表面板,在对比了一下几个图表库,我选中了echarts。 不仅美观大方,而且非常容易集成,配置。下面先来看一下我做的效果。这里是直接做了四个折线图,第一个折线图有动态效果,第二个折线图是一个多线条的折线图,第三个折线图是在一个图例显示两个折线图。第二第三都可以用于数据对比。 第四个折线

知无涯 1万+

Python逆向爬虫入门教程03: 某千音乐加密参数 sign 逆向解析

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

人生苦短, 还不用Python? 1538

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python爬虫-js逆向使用python execjs库本地执行js代码

通过python execjs库跳过JavaScript算法逆向过程直接获取返回值

XIAOXIANG233233的博客 1490

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python3爬虫进阶JS逆向学习(三)

目的 目的:JS逆向的学习与交流 目标:分析某我音乐网站中加密参数 目标网址:http://www.kuwo.cn/ 思路分析 一、内容概览 思路分析: 1.发送请求,搜索指定歌曲。 2.对返回的歌单列表,选择其中一个歌曲,提取rid参数 3.基于2中提取的参数,进行二次发送请求 4.对二次请求返回的数据提取歌曲下载链接 二、请求参数分析 1.全局搜索reqId并没有找到有关js文件 2.搜索请求链接中含有的关键词searchMusicBykeyWord 需要说明下 1.酷我是不验

jia666666的博客 1328

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python3爬虫进阶JS逆向学习(一)

目的 目的:JS逆向的学习与交流 目标:分析某千音乐网站中sign参数 目标网址:https://music.taihe.com/ 思路分析 一、内容概览 思路分析: 1.发送请求,搜索指定歌曲。 2.对返回的歌单列表,选择其中一个歌曲,提取Tsid参数 3.基于2中提取的参数,进行二次发送请求 4.对二次请求返回的数据提取歌词与歌曲下载链接与歌曲名称 难点:参数构造中,唯一存在难点的就是sign的生成 二、请求参数分析 三、注意 1.唯一难点是sign的生成,已经克服 2.发送了两个

jia666666的博客 1128

qq音乐js逆向

最后发现同样的参数出来的结果却不一样,只能补环境了,这里一定要记得document和navigator。发现他是通过调用这个o函数,传t.data,进去生成的,那么直接扣js就可以了。顺着堆栈往上爬,找加密的位置 ,发现找了几个都不是,那么直接搜搜sign试试,昨天试了网易的js,今天就想着把qq音乐的也看看,OK,下面直接开始。发现一下就能看到,sign的赋值,那么直接进去下断点。是在window里面的,而不是单一定义的。首先抓包找接口,发现有一个sign加密。下面附上对应的Python代码。

m0_62945506的博客 2445

Python 爬虫:手把手教你爬取某云热歌榜歌曲

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!👉。

2301_78096295的博客 1067

【原来python还可以这么玩】python逆向爬取网易云评论进行情感分析

遥遥微光,与我同行 好久不见,各位小伙伴们!嗐,春节真滴快啊!祝大家新年快乐! 书山有路勤为径,学海无涯苦作舟!又得开始愉快滴学习了! 小夜斗今天给大家伙分享一期干货,芜湖起飞! JS逆向网易云爬取评论并利用snownpl进行情感分析 一:逆向破解网易云参数抓取评论信息 网易云PC端url: https://music.163.com/#/song?id=1817702136 要抓取滴评论如下图所示: 老规矩,检查网页元素,找到评论信息所在的请求网址! 从xhr里面找一下子就能找到,看下面截图: 如

xtreallydance的博客 9081

js逆向之爬取网易云音乐和歌曲评论

前面我写的文章当中也有网易云音乐的爬取,只不过是借助了外链接口,本篇文章将介绍网易本身的接口进行爬取 ** 1 . 我们要获取的内容 ** 某一个歌单里面的所有歌曲 ** 2. 我们先分析一下歌曲的真实地址吧 ** 通过抓包我们成功的找到了歌曲的真实地址,在浏览器中打开证明是对的 通过经验分析,歌曲真实地址肯定是别的请求返回的,我们找一下它的父请求 3. 查找歌曲真实地址的父请求 父请求已经找到,接下来我们看一下请求参数吧 ** 4.解密加密参数 ** 可以看到就只有两个参数 params enc

shiguanggege的博客 2962

深夜流泪音乐js逆向爬虫

然后来到第二次加密的算法的位置,发现传入的两个参数第一个是上一次加密的结果,另外一个是一个随机数,然后再进行一个aes加密。剩下的一个加密参数,是用a(16)出一个随机数,然后进行一次加密的,直接固定下来,懒得分析了,直接设置为定值完整代码如下。print('用户名字:', i['user']['nickname'])看起来加密参数有两个,跟栈以找加密位置就出现了,挺好找的。进去加密b函数,把key跟加密内容修改下,第二层的加密模式也让破解了;输入加密内容,就出现了我们要的加密加密参数。......

weixin_58584029的博客 179

python3爬虫进阶JS逆向学习(十一)

目的 目的:JS逆向的学习与交流 目标:分析咪咕音乐参数 目标网址:https://music.migu.cn/v3 // 若有侵权,请联系作者删除,谢谢! 思路分析 一、内容概览 二、请求参数分析

jia666666的博客 1424
上一篇: 【Python】秀儿!两行代码制作你的专属动态二维码
下一篇: 15个让新手爱不释手的Python高级库
Python编程_可乐
博客等级 码龄6年 917粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值