python自动保存百度网盘资源,一定要看

python实例:自动保存百度盘资源到百度盘中 本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中 全部代码如下: 复制代码 # -*-coding:utf8-*- # encoding:utf-8 import time from selenium import webdriver browser = webdriver.C... 阅读详情

开始

在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存并不现实,所以本文尝试了批量保存资源,如您还没看过上文,这里可以跳转。

观察请求

以下面资源链接为例:

https://pan.baidu.com/s/1tHSxZQueF-Wsa2T0NlT3vQ

在浏览器中输入以上链接,会自动跳转到 https://pan.baidu.com/share/init?surl=tHSxZQueF-Wsa2T0NlT3vQ ,

输入正确提取码后发现直接跳转到资源保存页面了,F12 NETWORK里也看不到此请求的返回值,这时候只能使用Fiddler才能抓到包了。

Fiddler抓包

打开Fiddler,为了不让其它各类请求影响到我们,首先进行简单设置,以此来显示我们想要的请求,点击Filters 进行如下设置,最后点击Actions里的Run Filterset now,就只会显示 pan.baidu.com 域名的请求:

测试post数据

为了得到点击提取文件按钮时发送的请求和post的数据,先尝试输入一个错误的提取码123,查看请求:

https://pan.baidu.com/share/verify?surl=tHSxZQueF-Wsa2T0NlT3vQ&t=1593142082616&channel=chunlei&web=1&app_id=250528&bdstoken=855345cbf66bbfba3d30d5e201ea346f&logid=MTU5MzE0MjA4MjYyMDAuNTM5MjA2Nzg2ODEyNTcxNA==&clienttype=0

看来上面这个url就提取数据的请求,接下来具体看一下都提交了哪些数据:

Form Data中的pwd就是刚才输入的错误提取码,而其它两个参数vcode和vcode_str在没有验证码的情况下也不用管,再看看Query String中的参数,为了测试这些参数有哪些是变化的,我挑选了一些资源链接去尝试,具体过程就省略了,总结如下:

 

 

从上面表格来看,需要手动获取的就是logid,稍微有点经验的话应该都能想到这会不会是js动态生成的,抱着这个心态来到sources标签下,搜索logid关键字,果不其然,有个JS文件里有这个参数,直接定位到相应的行数:

直接在68行打一个断点,查看运行状态:

细心的同学一个很快就能发现上图红框里的值就是第一次请求 https://pan.baidu.com/share/init?surl=tHSxZQueF-Wsa2T0NlT3vQ cookies里的 BAIDUID 的值, logid 就是通过上面一些js代码中的一些算法得到的,cookies如下:

BIDUPSID=EC39F255CF7B146E8ADD4FA37DB16739;BAIDUID=BBBC2B2C1269AF3AA7D113D07FAC5E80:FG=1;  PSTM=1587390447; PANWEB=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDCLND=C4jsJ4aHacfrqq02TYbUOKGFFDefnJAMNmU%2BI3v5FNM%3D;

水平有限,没办法将这段js改写为python,不过好在python提供了一个执行js代码的库 pyexecjs ,该库运行于Nodejs环境,首先要保证你的机器安装了Nodejs:

pip install pyexecjs

下图即代表安装正确了,execjs可以正常使用

将js代码稍微修改一下,保存为 yunpan.js :

var u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/~!@#¥%……&"
    , l = String.fromCharCode
    , d = function (e) {
    if (e.length < 2) {
        var n = e.charCodeAt(0);
        return 128 > n ? e : 2048 > n ? l(192 | n >>> 6) + l(128 | 63 & n) : l(224 | n >>> 12 & 15) + l(128 | n >>> 6 & 63) + l(128 | 63 & n)
    }
    var n = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
    return l(240 | n >>> 18 & 7) + l(128 | n >>> 12 & 63) + l(128 | n >>> 6 & 63) + l(128 | 63 & n)
}
    , f = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g
    , g = function (e) {
    return (e + "" + Math.random()).replace(f, d)
}
    , h = function (e) {
    var n = [0, 2, 1][e.length % 3]
        , t = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0)
        ,
        o = [u.charAt(t >>> 18), u.charAt(t >>> 12 & 63), n >= 2 ? "=" : u.charAt(t >>> 6 & 63), n >= 1 ? "=" : u.charAt(63 & t)];
    return o.join("")
}
    , m = function (e) {
    return e.replace(/[\s\S]{1,3}/g, h)
}
    , p = function () {
    return m(g((new Date).getTime()))
}
    , w = function (e, n) {
    return n ? p(String(e)).replace(/[+\/]/g, function (e) {
        return "+" == e ? "-" : "_"
    }).replace(/=/g, "") : p(String(e))
};

#获取logid函数,自己添加的
function getlogid(e) {
    var logid = w(e)
    return logid
}

使用execjs执行一下

def get_logid(self, bid):
        with open('..//js//yunpan.js', encoding='utf-8') as f:
            yunpan = f.read()
        js = execjs.compile(yunpan)
        logid = js.call('getlogid', bid)
        return logid

得到所有的变化参数后就可以提交数据了:

requests.packages.urllib3.disable_warnings()
class YunPan(SpiderBase):
    def __init__(self):
        super(YunPan, self).__init__()
        self.index_url = "https://pan.baidu.com/s/1wy0LC4O6iY7l9M6RD25k6w"
        #提交提取码的链接
        self.submmit_url = "https://pan.baidu.com/share/verify?surl={}&t={}&channel=chunlei&web=1&app_id=250528&bdstoken=7a8e1e34b454fd27de65b7662f67c2fa&logid={}==&clienttype=0"
        #保存链接
		self.save_url = "https://pan.baidu.com/share/transfer?shareid={}&from={}&ondup=newcopy&async=1&channel=chunlei&web=1&app_id=250528&bdstoken=7a8e1e34b454fd27de65b7662f67c2fa&logid={}&clienttype=0"
        self.pan_code = "Love"
        
    def get_logid(self, bid):
        with open('..//js//yunpan.js', encoding='utf-8') as f:
            yunpan = f.read()
        js = execjs.compile(yunpan)
        logid = js.call('getlogid', bid)
        return logid
        
    def init(self):
        ua = random.choice(self.ua)
        header = {
            "User-Agent": ua
        }
        resp = self.download_page(self.index_url, headers=header, verify=False)
        resp.encoding = resp.apparent_encoding
        bid = resp.cookies.get("BAIDUID", "")
        logid = self.get_logid(bid)
        key = self.index_url.split("surl=")[-1]
        key = self.index_url.split("/")[-1][1:]
        return bid, logid, key
   
	def post_pan_code(self):
        ua = random.choice(self.ua)
        # 跳转
        data = {
            "pwd": "Love",
            "vscode": "",
            "vscode_str": "",
        }
        bid, logid, key = self.init()
        url = self.submmit_url.format(key, timestep, logid, )
        resp = self.download_page(url, method="post", headers=self.headers(), data=data, verify=False)
        res = json.loads(resp.text)
		print(res)
		return res

通过Fiddler抓包发现返回的res为下,errno为0即代表提交成功:

{"errno":0,"err_msg":"","request_id":8738382064533520558,"randsk":"g2VwUSYs1KSuOMh9%2FQDVUUwc7ICFq4CZNmU%2BI3v5FNM%3D"}

留意上面的 randsk 。

如果你是用浏览器抓包就会发现输对提取码点击按钮后请求会全部刷新一次,就不能确认到底是哪个请求跳转到资源页面的,只能使用Fiddler才能抓到 POST 成功后的请求,经过测试,发现POST数据后又再次请求了 https://pan.baidu.com/s/1wy0LC4O6iY7l9M6RD25k6w 这个链接,没错,就是上面一开始请求的链接,区别就是这次请求cookie中携带了刚才返回的 randsk 的值。所以再次请求时添加上 randsk :

res = self.post_pan_code()
 randsk = res.get("randsk", "")
 c = requests.cookies.RequestsCookieJar()
 c.set("BDCLND", randsk)
 self.session.cookies.update(c)
 #之所以加 verify=False是因为https请求有时候会报OPEN SSL的异常错误
 #最好在导库时加上requests.packages.urllib3.disable_warnings()
 resp = self.download_page(self.index_url, headers=headers, verify=False)
 #保证没有乱码
 resp.encoding = resp.apparent_encoding
 #这时候resp里已经时资源页面的内容了

保存资源

抓包分析

抓包保存资源链接发现为:

#保存链接
https://pan.baidu.com/share/transfer?shareid=4180912663&from=2693937402&ondup=newcopy&async=1&channel=chunlei&web=1&app_id=250528&bdstoken=7a8e1e34b454fd27de65b7662f67c2fa&logid=MTU5MzE4MTYzNDY0NDAuOTE1MzE0NDI5MzI1NTY4OA==&clienttype=0"

Query String 和 Form Data 为:

Query String大部分参数都提到过,可以参考上面,这里出现了新的两个参数 shareid 和 from,经过测试除了这两个参数和上文中 logid ,其它参数均为固定。

 

到这里又稍微被 shareid 和 from 、 fsidlist 三个参数卡住了,在页面中搜索这三个参数也没有结果,在source中搜索了一下,倒是又一个shareid,但是貌似也关系不大,折腾了一会就想到既然参数名搜不到,那我搜一下参数值试试?,果然在资源页面中搜到了三个参数的值(即 https://pan.baidu.com/s/1wy0LC4O6iY7l9M6RD25k6w 这页面),如下图:

正则表达式即可提取出三个值。

def extract_data(self, html):
    	#提取三个值
        import re
        share_id_pattern = 'yunData.SHARE_ID = "(.*?)";'
        from_pattern = 'yunData.SHARE_UK = "(.*?)";'
        fsid_pattern = 'yunData.FS_ID = "(.*?)";'
        try:
            share_id = re.findall(share_id_pattern, html, re.S)[0]
            _from = re.findall(from_pattern, html, re.S)[0]
            fsid = re.findall(fsid_pattern, html, re.S)[0]
        except IndexError:
            print("提取shareid、from、fsid失败")
        return share_id, _from, fsid

转存

转存时候注意cookie里要携带 BDUSS 和 STOKEN ,这两个参数在资源页面的cookies里,且都为固定的,没有登录的话只有 STOKEN , BDUSS 的值要在登录状态下才能看到,下图时登录后的cookie:

代码如下:

def transfer_resource(self,share_id, from_id, fsid,logid,randmsk):
        url = self.save_url.format(share_id,from_id,logid)
        data = {
            "fsidlist":"["+fsid+"]",
            "path":"/我的资源",
            "type":'1'
        }
        BDUSS="你的cookies里的BDUSS"
        self.session.cookies.set("STOKEN","STOKEN",domain=".baidu.com")
        self.session.cookies.set("BDUSS",BDUSS,domain=".baidu.com")

        resp = self.download_page(url,method="post",headers=self.headers(),data=data,verify=False)
        #这里返回resp errno为0即代表成功

完结,撒花完整demo代码地址:源码这里获取

到这里就结束了,本文讲解了如何使用python转存百度云盘资源。

 

绕过Selenium检测!用Python+Chrome调试模式批量保存百度网盘分享链接(附验证码处理) 本文详细介绍了如何利用Python和Chrome调试模式绕过Selenium检测,实现百度网盘分享链接的批量保存与验证码处理。通过实战案例和代码示例,帮助开发者高效自动化处理云端资源,提升工作效率。 阅读详情

相关推荐

Python视频教程 百度云下载

Python视频教程,文件内含百度云下载链接,请自行下载观看,链接失效时可联系邮箱补发,谢谢,赶快下载吧,即下即用~

python教学资源百度网盘,python教程百度网盘资源

易于维护:Python的成功在于它的源代码是相当容易维护的。一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。这里有一份Python3.8教程,个人感觉主要还是偏基础,包括数据类型和结构、变量、函数、逻辑语句(判断、循环)、匿名函数、错误处理、遍历和迭代、进程和线程、库的使用。python可以用作爬虫、web开发、AI、脚本、测试、数据分析等各个领域,每个领域对python的学习要求和深度不一样,数据分析不要求掌握很深的编程知识。

小发猫 4591

python24期全套视频编程课程百度网盘

python24期全套视频课程是一套涵盖了Python编程的基础知识、Web开发、爬虫、数据分析等方面的视频教程。该课程共包含60个课时,每个课时时长约为1-2小时。以下是该课程的详细介绍: 1. Python基础语法:介绍Python的基本语法、变量、数据类型、运算符、流程控制语句等基础知识。 2. 面向对象编程:介绍Python的面向对象编程思想、类、对象、继承、多态等概念。 3. 文件操作:介绍Python的文件操作、读写文件、文件路径等知识。 4. 正则表达式:介绍正则表达式的基本语法、匹配模式、替换等操作。 5. 网络编程:介绍Python的网络编程、socket编程、TCP/UDP协议等知识。 6. 多线程编程:介绍Python的多线程编程、线程的创建、同步、锁等知识。 7. Web开发:介绍Python的Web开发、Django框架、MVC模式、ORM等知识。 8. 数据库操作:介绍Python的数据库操作、MySQL、MongoDB等数据库的使用。 9. 爬虫:介绍Python的爬虫、爬虫的

GUI编程--基于PyQt5(1)

该系列主要介绍GUI编程的一些知识,来自网易课堂,王顺子课程。 免费网课地址:https://www.bilibili.com/video/av61686342/?redirectFrom=h5 这部分主要是一些基础介绍,包括以下内容: GUI 全称为: Graphical User Interface =图形化用户接口 简单理解就是: - 使用Python开发出一个软件的界面, -...

Tina姐的博客 1045

python自动保存百度盘资源到百度盘中的实例代码

主要介绍了python自动保存百度盘资源到百度盘中的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

如何在iPhone上本地运行SmolVLM?5亿参数模型实战指南(附Swift代码)

本文详细介绍了如何在iPhone上本地部署和运行轻量高效的SmolVLM多模态模型。通过实战指南,分享了使用Swift和MLX框架进行环境配置、模型加载、内存优化以及实现实时图像分析与文本生成的完整流程,帮助开发者在移动端高效运行AI视觉语言模型。

echo99的专栏 657

python123 百度网盘_python自动保存百度网盘资源,一定要看

觉得有帮助的别忘了关注一下知识图谱与大数据公众号开始在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存并不现实,所以本文尝试了批量保存资源,如您还没看过上文,这里可以跳转。爬虫学习3:搭建自己的电影资源网保姆式教学观察请求以下面资源链接为例:https://pan.baidu.com/s/1tHSxZQu...

weixin_42349469的博客 1826

解决fetch_california_housing数据集403错误的3种实用方法(附手动下载地址)

本文针对机器学习中常见的fetch_california_housing数据集403 Forbidden错误,提供了三种实用的解决方案。从理解HTTP 403错误的根源出发,详细介绍了修改源码路径、使用国内镜像源以及手动下载并配置数据文件这三种方法,并附带了可靠的手动下载地址,帮助开发者彻底解决数据加载障碍,确保机器学习项目顺利进行。

weixin_29062963的博客 561

python自动发邮件 百度网盘_python自动保存百度盘资源到百度盘中的实例代码

本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中全部代码如下:# -*-coding:utf8-*-# encoding:utf-8import timefrom selenium import webdriverbrowser = webdriver.Chrome()def login...

weixin_39964660的博客 188

ADF4002分频器避坑指南:常见配置错误及解决方案

本文深入解析了ADF4002分频器在实战应用中的常见陷阱与解决方案。内容涵盖寄存器配置逻辑、硬件PCB布局要点、软件驱动时序细节及系统化调试方法,重点阐述了如何避免因配置错误导致芯片无法正常工作的问题,帮助工程师高效完成高精度频率合成系统设计。

weixin_29192141的博客 96

正版63棋牌源代码游戏+728游戏全套带前端源代码解析

这俩天抽时间仔细看了一下这套项目包含完整的前端、后端及后台管理系统。从上传的截图可以看出,前端基于资源目录,后端采用和,后台管理界面提供数据查询与管理功能。本篇文章将从前端结构、后端接口、数据库设计、常见 BUG 及优化方法等方面逐步拆解,并给出相应的代码示例和实践经验。

aa2031171的博客 3588

python经典实例 百度网盘-python自动保存百度盘资源到百度盘中的实例代码

本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中全部代码如下:# -*-coding:utf8-*-# encoding:utf-8import timefrom selenium import webdriverbrowser = webdriver.Chrome()def login...

weixin_37988176的博客 1566

用 dism 合并与删除 wim 映像

一、合并 假设 installA.wim 有 3 个映像,installB.wim 有 1 个映像。 1、全部合并 将 installA.wim 中的 3 个卷映像合并到 installB.wim 中,这样 installB.wim 中的卷映像增加到 4 个。 dism/export-image/sourceimagefile:d:\installA.wim/sourceindex:1/destinationimagefile:d:\installB.wim dism/export-image/source

KefanWon的博客 5201

如何使用python来自动保存百度网盘资源-这样的操作你会吗?

开始 在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存并不现实,所以本文尝试了批量保存资源,如您还没看过上文,这里可以跳转。 爬虫学习3:搭建自己的电影资源网保姆式教学 观察请求 以下面资源链接为例: 在浏览器中输入以上链接,会自动跳转到https://pan.baidu.com/share/init?surl=tHSxZQueF-Wsa2T0NlT3vQ, 输入正确提取码后发现直接跳转到..

y4544159的博客 1693

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

6、SAP HANA 建模全解析

本文全面解析了 SAP HANA 建模的核心内容,包括属性视图、分析视图和计算视图的创建与使用。文章详细介绍了建模工具的安装、不同视图类型的适用场景及操作步骤,并通过对比和案例分析帮助读者更好地理解建模流程。此外,还涵盖了建模过程中的注意事项及性能优化建议,为 SAP HANA 用户提供实用的建模指导。

juice的博客 203

python资料百度网盘-python自动保存百度盘资源到百度盘中的实例代码

本实例的实现逻辑是,应用selenium UI自动化登录百度盘,读取存储百度分享地址和提取码的txt文档,打开百度盘分享地址,填入提取码,然后保存到指定的目录中全部代码如下:# -*-coding:utf8-*-# encoding:utf-8import timefrom selenium import webdriverbrowser = webdriver.Chrome()def login...

weixin_37988176的博客 512

Smart PLC高速脉冲输入计米轮模块(编码器测速/计米详细讲解)

线缆行业单绞机PLC控制算法详细解读可以参看下面的文章链接:线缆行业单绞机控制算法(详细图解+代码)_RXXW_Dor的博客-优快云博客在了解单绞机之前需要大家对收放卷以及排线控制有一定的了解,不清楚的可以参看下面几篇博客,这里不再赘述,受水平和能力所限,文中难免出现错误和不足之处,诚恳的欢迎大家批评和指正。PLC张力控制(开环闭环算法分析)_RXXW_Dor的博客-优快云博客_plc闭环控制实例。SMART PLC时间间隔定时器应用(高速脉冲测频/测速)_RXXW_Dor的博客-优快云博客。

RXXW_Dor的博客 2820

python123 百度网盘_如何使用python来自动保存百度网盘资源-这样的操作你会吗?...

开始在上一文中,我们保存了百度云盘的地址和提取码,但是这种分享链接很容易被屏蔽,最好的做法就是保存资源到自己的网盘,不过采集的链接有上万个,人肉保存并不现实,所以本文尝试了批量保存资源,如您还没看过上文,这里可以跳转。观察请求以下面资源链接为例:​在浏览器中输入以上链接,会自动跳转到https://pan.baidu.com/share/init?surl=tHSxZQueF-Wsa2T0NlT...

weixin_42500616的博客 1082

IMSL CNL 7.0.0 (x86-64)Crack

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

火影推荐程序连载40-python自动保存百度网盘资源,一定要看

一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。在本篇教程,笔者将讲述如何使用Magicodes.IE的导入导出筛选器。在开始之前,我们需要先了解Magicodes.IE目前支持的筛选器: 接口 说明 IImportResultFilter 导入结果筛选器,可以修改导入结果包括验证错误信息(比如动态修改错误标注) IImportHeaderFilter 导入列头筛选器,可以修改列名、值映射集合等等 IExporterHe

li123128的博客 550

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

百度网盘分享保存到自己的网盘

【代码】百度网盘分享保存到自己的网盘。

weixin_43125772的博客 424

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用python实现带密码的百度云资源自动保存以及文件夹创建

实现功能 将网盘的密码自动输入,得到真实的链接页面,并得到参数将文件自动保存到指定的文件夹,文件夹可以自己创建 只需要提供网盘的链接和密码,以及自己登陆百度网盘后得到的两个cookie python的版本为3.6.5 使用selenium进行浏览器模拟 使用了谷歌的浏览器驱动(Handless Chrome,即不调用GUI的驱动) 参考的教程 使用的库 import jso...

madonghyu的博客 6884

python自动化之转存资源到自己网盘中

python自动化之转存资源到自己网盘中 python自动化之转存资源到自己网盘中 python自动化之转存资源到自己网盘中

程序员蜗牛的博客 785

基于selenium爬取图片并转存到百度网盘

初学python,花了一天时间鼓捣了一个爬虫。#coding=utf-8 import requests from bs4 import BeautifulSoup import re import string from selenium import webdriver import time urlprelix = 'http://www.******.com/' def webcraw

whueratsjtuer的博客 1396
上一篇: 再见所有的翻译工具!我使用了有道云+Python开发一个批量文档翻译工具!
下一篇: Python爬虫练习:爬取800多所大学学校排名、星级等!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值