一篇文章带你多方面采集完一个应用评论、视频并自动点赞、评论~

高通QCS2290 SecureBoot实战:密钥生成与NON-HLOS.bin签名全流程 在嵌入式设备开发中,安全启动(Secure Boot)是保障系统完整性的基石,它通过逐级校验机制确保只有经授权的代码才能运行。对于基于高通QCS2290平台的物联网产品,开发者需要深入理解从BootROM到系统镜像的信任链构建过程,掌握RSA密钥体系设计与证书管理方法。本文从信任链原理出发,介绍密钥生成、证书签发等基础操作,并聚焦NON-HLOS.bin镜像的签名与验证流程,探讨工程实践中常见的启动失败问题及排查技巧。无论是BSP工程师还是方案集成商,理解这套安全机制对于设备量产、OTA升级和合规审计都至关 阅读详情

前言

请添加图片描述

自己喜欢的东西,我们通常会想要它留存得久一点,但是往往别人上传得视频并不一定永久留存~

有的不是被下架了,就是作者已删除该视频,不可观看!!

那怎么办呢?一般做法当然是把它下载下来啦~但是,一个自己下还好,多个就不行了

这个时候就会想借助外力来完成这件事,于是我的代码也产生了

首先,我们得来点准备工作 ⛏

当你准备还是写代码前,你的工具没有怎么能行呢~

就像:你信心满满得要去约会,一切已准备稳妥,却发现你最重要的环节——女朋友你还没有!!💘

我想你明白了吧(ps:这里所说言语不管作者的事,请不要上升真人~)狗头.jpj

开发环境

  • python 3.8 运行代码
  • pycharm 2021.2 辅助敲代码
  • requests 第三方模块

如果,你是零基础小白,不会安装软件的话,可以查看左侧主页

你会发现有一个🐎,扫它,你将获得知识的力量(其实就是视频教程啦~找管理员小姐姐领取哦)

模块安装呢,安装有两种方法,我这边都替你写出来啦~(如果报错也可左侧扫🐎,可获得解答哦)

  1. win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源

  2. 在pycharm中点击Terminal(终端) 输入安装命令

你用哪个习惯一点(或比较顺眼)就可以用哪个,都一样哒~

这里说明一下,如果你有基础的话可点击下方目录直接跳转哦~没有基础的小可耐要仔细的看思路分析哦

思路分析

这这里,我们要确定我们想要什么,比如:视频、标题、用户信息、评论等等。。。。那现在,我们先来看看视频

第一步,我们来找到一个-美女小姐姐💞

(不要以为只要你们男孩子喜欢小姐姐,女孩子也喜欢~),点击她的主页

第二步,打开开发者工具刷新网页
  • 右键点击检查 或者 F12 打开
  • 选择network 然后刷新网页

不要忘记刷新哦~不然可能会没数据de

第三步,随便点击打开一个视频


图片怕你们没看清,这边打字写出来

  1. 在标题里面随便复制几个字
  2. 点击开发者工具上的搜索工具
  3. 粘贴你刚刚复制的内容
第四步,点击搜到的内容

  1. 点击打开找到的数据包
  2. 点击Preview预览
第五步,依次展开查看, 去找到我们需要的视频地址

在这里插入图片描述

第六步,确定url地址, 请求方式, 请求参数, 请求头参数

在这里插入图片描述

  • 请求头参数
    在这里插入图片描述
  • 请求参数
    在这里插入图片描述

代码实现:

  1. 发送请求
  2. 获取数据
  3. 解析数据
  4. 保存数据

不要小看它只有小小四个步骤,大多数代码实现可都是按照这小小四步来的 📌

请添加图片描述

正头戏:代码

导入模块

代码里大部分都有注释啦~如果你看完还是不太明白的话,同样可以左侧扫🐎领取视频教程哦

import requests     # 发送请求 第三方模块(第三方应用 pip)
import re

伪装

代码里又两处 headers 地方被我删去了网址,小可耐们可以自己去添加一下哦~

# 1. 选中要替换的代码
# 2. ctrl + R
# 3. 第一个框(.*?): (.*)
# 4. 在第二个框里面输入 '$1': '$2',
# 5. 点击全部替换(* 点亮 * 号)
headers = {
   
   
    'content-type': 'application/json',
    'Cookie': 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_ea128125517a46bd491ae9ccb255e242; client_key=65890b29; didv=1646739254078; userId=270932146; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABctRgGaXi5efEBpnbdtJMp3nnnXqENRWBoFQABtOr1ZFUNAjEo5NTZ4F0leSypsSFE4_-FGTnBqKEYh8Wcrszm3FGF03559Z9bFQCX_8ew_kLKPWVB9ZRlWQgISoG4-XZXIOqiBgkQKsPbpYKiA3X4_0rMDbo9-c0nWXeOoThekj8W3u7_yfI4fUY3h5WgTEDYT0yrXkZmhWlFV_jpVxDrBoSzFZBnBL4suA5hQVn0dPKLsMxIiCo1i0bY9V6-OVEk7yMnH86RNliTZACHvLPjL9FTHHQOigFMAE; kuaishou.server.web_ph=09735672944cbf9e53431bf3e0514a0d058b',
    'Host': '',
    'Origin': '源码、解答、教程加🐧裙:832157862',
    # 防盗链
    'Referer': '',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36',
}
url = ''
def get_page(pcursor):
    # 指定要谁的视频
    data = {
   
   
        "operationName": "visionProfilePhotoList",
        "query": "query visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) {\n  visionProfilePhotoList(pcursor: $pcursor, userId: $userId, page: $page, webPageArea: $webPageArea) {\n    result\n    llsid\n    webPageArea\n    feeds {\n      type\n      author {\n        id\n        name\n        following\n        headerUrl\n        headerUrls {\n          cdn\n          url\n          __typename\n        }\n        __typename\n      }\n      tags {\n        type\n        name\n        __typename\n      }\n      photo {\n        id\n        duration\n        caption\n        likeCount\n        realLikeCount\n        coverUrl\n        coverUrls {\n          cdn\n          url\n          __typename\n        }\n        photoUrls {\n          cdn\n          url\n          __typename\n        }\n        photoUrl\n        liked\n        timestamp\n        expTag\n        animatedCoverUrl\n        stereoType\n        videoRatio\n        profileUserTopPhoto\n        __typename\n      }\n      canAddComment\n      currentPcursor\n      llsid\n      status\n      __typename\n    }\n    hostName\n    pcursor\n    __typename\n  }\n}\n",
        "variables": {
   
   "userId": "3x2vsxyxbbwcjta", "pcursor": pcursor
生物信息学实战:手把手教你复现UK Biobank蛋白质组学中的pQTL分析流程 本文详细介绍了如何从零开始复现UK Biobank蛋白质组学中的pQTL分析流程,涵盖数据质控、遗传关联分析(REGENIE两步法)、结果解读及可视化等关键步骤。通过实战代码示例,帮助生物信息学研究者高效挖掘蛋白质组数据中的遗传调控信号,特别适合初学者和需要快速验证药物靶点的计算生物学家。 阅读详情

相关推荐

用Python写一个自动下载视频、弹幕、评论的软件(2022最新)

哈喽兄弟们,今天来实现一个Python采集视频、弹幕、评论与一体的小软件。 平常咱们都是直接代码运行,不过今天我们做成软件,这样的话,咱们不仅能自己用,还能分享给小伙伴,女朋友一起使用。

轻松学python的博客 9858

python带你采集不可言说网站数据,并带你多重骚操作~

嗨喽,大家好呀,这里是魔王呐~今天我们采集国内知名的shipin弹幕网站!这里有及时的动漫新番,活跃的ACG氛围,有创意的Up主。大家可以在这里找到许多欢乐。 软件的使用 合成视频和音频 需要私我领取我们想要数据内容都是来自于网页源代码I. 用浏览器打开这个所采集的网址II. 在这个网页上面用鼠标右键点击查看网页源代码 会弹出一个新的窗口III. ctrl + F 打开搜索框 搜索playinfo 可以找到相关信息数据IV. ctrl + F 打开搜索框 搜索shipin标题, 也可...

python56123的博客 753

Python采集微博评论做词云图

1. 发送请求 -> 模拟浏览器对于url地址发送请求 2. 获取数据 -> 获取服务器返回响应数据 3. 解析数据 -> 提取评论内容 4. 保存数据 -> 保存本地文件 (文本 csv Excel 数据库)

python56123的博客 906

高清无码的MP4如何采集?python带你保存~

大家早好、午好、晚好吖 ❤ ~又是我,我又来采集小姐姐啦~本文所有模块\环境\源码\教程皆可点击文章下方名片获取此处跳转话不多少,我们赶快开始吧~python 3.8 解释器pycharm 编辑器。

weixin_62853513的博客 4882

【python】带你对近期天气数据进行采集做可视化~

嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~

m0_72282564的博客 2062

拿它们练Python爬虫,是在法律边缘试探吗?爬虫圈香饽饽之视频网站的评论区采集

Python爬虫编写套路,编写技巧,都可以从本文学习到

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

qkspace:小型团队的简约知识库(KB)

QKspace(发音为“快速空间”)是针对小型团队的简约知识库。 它非常适合为教育机构创建课程参考基础,在IT中列出QnA清单,在社会工作团队中交换知识,制作个人报价和注释的主题清单。 用法示例 Ruby新手指南列表: : 有关莫斯科的装修法的信息: : Lovecraft语录: : 特征 创建具有多个页面的项目 Markdown用户友好的编辑器 添加您自己的域 协作项目编辑 私人和公共项目 如何贡献 该项目由非营利性开发商社区运营。 错误和问题列表在这里: : 随时发送您的PR。 如果未关闭任务,则仍然需要完成。 使用获得支持和常见问题。 联络人 如有任何疑问,请通过与我们 关于商业合作,请通过business@qkspace.com与我们联系。 开发者 瓦迪姆·韦尼迪科夫(Vadim Venediktov) 尤金·佐洛塔列夫(Eugene Zolotar

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 732

用74LS190和555定时器复刻经典交通灯:一个电子工程新手的实战避坑记录

本文记录了使用74LS190和555定时器复刻经典交通灯的实战过程,详细介绍了元件选型、电路搭建与调试的关键步骤。特别分享了555定时器参数设置、74LS190级联技巧以及状态机设计的避坑经验,为电子工程新手提供实用参考。

weixin_42629671的博客 307

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的

马猴烧酒└(┐卍^o^)卍ドゥルルル~楪詩月「YUZURIHA SHIZUKI」 2万+

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 665

汇丰外包Java岗面试复盘:Zoom面1.5小时,从英语、粤语到现场敲代码的极限挑战

本文详细记录了汇丰银行外包Java岗位的面试全过程,包括多语言切换(英语、粤语)的技术沟通挑战和现场编码测试的实战经验。从高并发编程到JVM调优,面试不仅考察技术深度,更注重实战问题解决能力。文章分享了应对跨国银行技术面试的实用策略,帮助Java开发者在跨文化环境中提升竞争力。

weixin_42524824的博客 363

《多模态融合改进》支持目标检测、目标分割、OBB、姿态估计,配置教程

本文以为例,讲解如何配置,支持替换专栏里所有的改进方式。

Limiiiing的博客 801

GVINS数据采集(u-blox fp9 + D435i)

1、配置千寻的RTK账号 采集数据当天购买千寻的RTK账号,然后在Window下,输入账号和密码 (具体的步骤如之前面连接所示),查看u-center软件上的信息,确保接收机可以收到RTK信息; 2、查看Linux系统下u-blox是否可以正常接受GPS信号和RTK数据流 1、GPS信号信息 // 打开端口 1 cd ublox_f9p/src // 或者在终端1下也可以 source devel/setup.bash r.....................

努力努力努力 2609

一句话看懂 vibing-steampunk

摘要: vibing-steampunk(vsp)是一个连接SAP ABAP开发工具(ADT)与AI编码代理(如Claude、GitHub Copilot)的桥梁,通过MCP协议实现自动化代码读写、调试和部署。它利用ADT API直接访问SAP系统,绕过传统GUI操作,支持ECC和S/4HANA等环境。工具提供包分析、依赖检查、LUW行为识别等功能,显著提升ABAP项目维护效率。其创新Hyperfocused模式和方法级编辑大幅降低token消耗,而上下文压缩技术则优化了AI对ABAP代码的理解能力,特别适

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 114

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

上一篇: 表情包:有本事来爬我啊,俺有上千条 python:来啦~
下一篇: Python:看我如何全程自动玩游戏带你飞,直接无敌
魔王不会哭
博客等级 码龄5年 6003粉丝 394原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值