字体加密woff(@font-face)防爬-学习记录

字体(@font-face)防爬-学习记录


解析步骤

更新:2021-3-10 08:57:01

  1. 下载、加载woff文件
  2. 百度字体编辑器解析结果,截图识别出汉字,按顺序复制出汉字列表
font = TTFont(woff_path)
base_word= list('这里是按顺序复制出的汉字')
  1. 提取uniname列表,结合2中的汉字列表,构成uni->汉字的映射
base_uniname = font.getGlyphOrder()[2:]
base_uniname_map_word = dict(zip(base_uniname, base_word))
  1. 提取$E->uni的映射
base_hex_map_uniname = font.getBestCmap()
  1. 由4,5构成$E->汉字的映射
dict_hex_map_word = {}
for k, v in base_hex_map_uniname.items():
	if not str(v).startswith('uni'):
		continue
	base_hex_map_uniname[k] = base_uniname_map_word.get(v, '')
	
	str_k = hex(k)
	str_k1 = "<em class='iconfont'>&#x{};</em>".format(str_k[2:])
	# print(str_k1)
	dict_hex_map_word[str_k1] = base_uniname_map_word.get(v, '')






原网址:【http://www.dianping.com/shop/124413166】 ,对应位置数字和文字被加密

在这里插入图片描述

参考

1、针对@font-face反爬
2、第五章(上):诡异的字体

在这里插入图片描述

搜索关键字 “font-face

@font-face {
    font-family: <fontFamily>; /* 自定义的字体名称; */
    src: <source> [<format>][,<source> [<format>]]*;  /* 自定义的字体的存放路径、格式; */
    [font-weight: <weight>]; /*  是否为粗体 */ 
    [font-style: <style>]; /*  定义字体样式,如斜体 */
}

在源码中没有找到, 那就打开开发者调试工具, 在Network中搜索 font 字体, 找到字体的url地址, 进行下载, url太长,使用md5压缩

dataBase64 = r'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'

#我这里拿到的自定义字体是采用js使用base64硬编码在网页里面的
import base64
from fontTools.ttLib import TTFont
import io

data = base64.b64decode(s)
fonts = TTFont(io.BytesIO(data))
#从解析出来的xml找到对应字体编码的结构并读取出来
fonts.saveXML("text.xml")
print(fonts.getBestCmap())

download as 7260090a.woff
将图中url里面的内容复制,在浏览器新标签页面打开,会直接下载一个文件。使用FontCreator字体查看工具 ,可以看到隐藏字符都有一个对应的编码
在这里插入图片描述

在原地址页面中观察目标内容

观察完毕,代码解析

# pip3 install fonttools

from fontTools.ttLib import TTFont

# 解析字体文件,获取字体映射关系
def parse_font():
    font1 = TTFont(r"E:\workspace\20191029_zhaopin\7260090a.woff")
    keys, values = [], []
    for k, v in font1.getBestCmap().items():
        if v.startswith('uni'):
            keys.append(eval("u'\\u{:x}".format(k) + "'"))
            values.append(chr(int(v[3:], 16)))
        else:
            keys.append("&#x{:x}".format(k))
            values.append(v)
#     font1.saveXML('temp.xml')
    return dict(zip(keys, values))

截止到目前,并没有解决大众点评的解析,

参考1、 听说你爬回来的都是乱码?三个案例教你破解字体加密,这个说要建立2个列表:汉字列表和编码列表,然而这2个列表好像需要手动构建,持续搜索别的方法。是不是可以使用 ==> 网上搜到字典列表,可以用。
参考2、 反爬终极方案总结—字体反爬
参考2、 用matplotlib,画出坐标
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

2019-12-11 17:15:21-解决办法:

参考大众点评 数据爬取 (字体反爬)

1、获取woff(2个address.woff and num.woff)

通过观察,页面每次加载的css是同一个,意味着address和num的woff文件是仅有一套
手动下载woff文件,此处以address.woff 为例

2、加载woff文件,获取编码

addrFont = TTFont('address.woff') # 加载woff文件
addrFont.saveXML('addrFont.xml') # 转为xml文件,方便对比

3、构造目标字典

character = list('1234567890店中美家馆小车大市公酒行国品发电金心业商司超生装园场食有新限天面工服海华水房饰城乐汽香部利子老艺花专东肉菜学福饭人百餐茶务通味所山区门药银农龙停尚安广鑫一容动南具源兴鲜记时机烤文康信果阳理锅宝达地儿衣特产西批坊州牛佳化五米修爱北养卖建材三会鸡室红站德王光名丽油院堂烧江社合星货型村自科快便日民营和活童明器烟育宾精屋经居庄石顺林尔县手厅销用好客火雅盛体旅之鞋辣作粉包楼校鱼平彩上吧保永万物教吃设医正造丰健点汤网庆技斯洗料配汇木缘加麻联卫川泰色世方寓风幼羊烫来高厂兰阿贝皮全女拉成云维贸道术运都口博河瑞宏京际路祥青镇厨培力惠连马鸿钢训影甲助窗布富牌头四多妆吉苑沙恒隆春干饼氏里二管诚制售嘉长轩杂副清计黄讯太鸭号街交与叉附近层旁对巷栋环省桥湖段乡厦府铺内侧元购前幢滨处向座下県凤港开关景泉塘放昌线湾政步宁解白田町溪十八古双胜本单同九迎第台玉锦底后七斜期武岭松角纪朝峰六振珠局岗洲横边济井办汉代临弄团外塔杨铁浦字年岛陵原梅进荣友虹央桂沿事津凯莲丁秀柳集紫旗张谷的是不了很还个也这我就在以可到错没去过感次要比觉看得说常真们但最喜哈么别位能较境非为欢然他挺着价那意种想出员两推做排实分间甜度起满给热完格荐喝等其再几只现朋候样直而买于般豆量选奶打每评少算又因情找些份置适什蛋师气你姐棒试总定啊足级整带虾如态且尝主话强当更板知己无酸让入啦式笑赞片酱差像提队走嫩才刚午接重串回晚微周值费性桌拍跟块调糕')

4、目标字典

numDict = {'&#xe3b1': '0', '&#xf4cb': '1', '&#xe211': '2', '&#xf72e': '3', '&#xf87b': '4', '&#xf57d': '5', '&#xebb3': '6', '&#xf2e0': '7', '&#xe7c3': '8', '&#xec91': '9'}
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
addrDict = {'&#xedbf': '店', '&#xe8bd': '中', '&#xe9fc': '美', '&#xf66c': '家', '&#xe2d4': '馆', '&#xf577': '小', '&#xea8f': '车', '&#xec62': '大', '&#xe968': '市', '&#xe6cf': '公', '&#xe47a': '酒', '&#xf898': '行', '&#xe7d7': '国', '&#xeded': '品', '&#xee0e': '发', '&#xf520': '电', '&#xea32': '金', '&#xf387': '心', '&#xe058': '业', '&#xe7ff': '商', '&#xe843': '司', '&#xf3c1': '超', '&#xec5c': '生', '&#xf8f1': '装', '&#xe0a7': '园', '&#xf188': '场', '&#xe72e': '食', '&#xe0a5': '有', '&#xf0e2': '新', '&#xec45': '限', '&#xe6aa': '天', '&#xf7dd': '面', '&#xeae6': '工', '&#xe8f0': '服', '&#xe0cd': '海', '&#xf515': '华', '&#xebc8': '水', '&#xea9c': '房', '&#xebaa': '饰', '&#xf54d': '城', '&#xecbc': '乐', '&#xed22': '汽', '&#xf0aa': '香', '&#xf8cc': '部', '&#xf6bc': '利', '&#xe1f3': '子', '&#xed97': '老', '&#xef7f': '艺', '&#xf0f0': '花', '&#xf34b': '专', '&#xf7af': '东', '&#xe8e3': '肉', '&#xf075': '菜', '&#xf0a8': '学', '&#xe937': '福', '&#xeae1': '饭', '&#xe4ad': '人', '&#xf46f': '百', '&#xeb2a': '餐', '&#xf6ba': '茶', '&#xf895': '务', '&#xeaac': '通', '&#xe211': '味', '&#xf13e': '所', '&#xe6ce': '山', '&#xe452': '区', '&#xf3ee': '门', '&#xeb41': '药', '&#xe5f4': '银', '&#xf8a4': '农', '&#xe195': '龙', '&#xeb37': '停', '&#xe37f': '尚', '&#xf49d': '安', '&#xf210': '广', '&#xf329': '鑫', '&#xf5bb': '一', '&#xea7a': '容', '&#xe578': '动', '&#xf7ed': '南', '&#xef9c': '具', '&#xeead': '源', '&#xe2bf': '兴', '&#xe622': '鲜', '&#xf513': '记', '&#xe9c7': '时', '&#xf8c6': '机', '&#xebe0': '烤', '&#xe3f6': '文', '&#xe317': '康', '&#xecd4': '信', '&#xed01': '果', '&#xf66a': '阳', '&#xe29d': '理', '&#xec1a': '锅', '&#xf0f9': '宝', '&#xec99': '达', '&#xe7c7': '地', '&#xec3f': '儿', '&#xf081': '衣', '&#xe448': '特', '&#xe3bc': '产', '&#xeb6c': '西', '&#xe44d': '批', '&#xf4f3': '坊', '&#xe303': '州', '&#xefbf': '牛', '&#xe92f': '佳', '&#xe455': '化', '&#xf75b': '五', '&#xe675': '米', '&#xeef5': '修', '&#xebf1': '爱', '&#xe01c': '北', '&#xe514': '养', '&#xe173': '卖', '&#xeca2': '建', '&#xe8cd': '材', '&#xeb4f': '三', '&#xe71a': '会', '&#xe150': '鸡', '&#xf309': '室', '&#xf3d3': '红', '&#xeac2': '站', '&#xebe8': '德', '&#xee97': '王', '&#xe6bc': '光', '&#xe236': '名', '&#xf822': '丽', '&#xf63c': '油', '&#xebfe': '院', '&#xe512': '堂', '&#xe7ab': '烧', '&#xec7c': '江', '&#xf6aa': '社', '&#xe389': '合', '&#xf55f': '星', '&#xf893': '货', '&#xeb53': '型', '&#xeb14': '村', '&#xe9f2': '自', '&#xf337': '科', '&#xf055': '快', '&#xeb95': '便', '&#xe3b9': '日', '&#xe7be': '民', '&#xe4bb': '营', '&#xf6e9': '和', '&#xe52a': '活', '&#xed67': '童', '&#xf1c6': '明', '&#xea6d': '器', '&#xe9ba': '烟', '&#xe11f': '育', '&#xe756': '宾', '&#xef6a': '精', '&#xe327': '屋', '&#xf1b7': '经', '&#xebc9': '居', '&#xeaf0': '庄', '&#xe000': '石', '&#xf1f7': '顺', '&#xed1a': '林', '&#xf128': '尔', '&#xe8b9': '县', '&#xe929': '手', '&#xe956': '厅', '&#xf66b': '销', '&#xe748': '用', '&#xf625': '好', '&#xedb1': '客', '&#xe3e7': '火', '&#xe9bc': '雅', '&#xe297': '盛', '&#xf1b2': '体', '&#xf899': '旅', '&#xe396': '之', '&#xe750': '鞋', '&#xe574': '辣', '&#xf06d': '作', '&#xf79a': '粉', '&#xf369': '包', '&#xf2fe': '楼', '&#xf56f': '校', '&#xefba': '鱼', '&#xe001': '平', '&#xe3d6': '彩', '&#xe515': '上', '&#xeff3': '吧', '&#xebd9': '保', '&#xeb45': '永', '&#xe651': '万', '&#xe3a0': '物', '&#xf779': '教', '&#xea6a': '吃', '&#xe550': '设', '&#xe42a': '医', '&#xe28a': '正', '&#xec33': '造', '&#xf517': '丰', '&#xf38f': '健', '&#xec5a': '点', '&#xe016': '汤', '&#xf5b4': '网', '&#xeb91': '庆', '&#xf55e': '技', '&#xe985': '斯', '&#xe6ec': '洗', '&#xefb3': '料', '&#xec86': '配', '&#xee3e': '汇', '&#xeb82': '木', '&#xf720': '缘', '&#xf89d': '加', '&#xf2f1': '麻', '&#xf4a6': '联', '&#xe360': '卫', '&#xf1b0': '川', '&#xf1fa': '泰', '&#xf733': '色', '&#xeb71': '世', '&#xf093': '方', '&#xe465': '寓', '&#xe7c3': '风', '&#xe49b': '幼', '&#xf5b8': '羊', '&#xebda': '烫', '&#xe0bc': '来', '&#xf841': '高', '&#xf8b6': '厂', '&#xf1c5': '兰', '&#xf8e3': '阿', '&#xf51d': '贝', '&#xf8f8': '皮', '&#xf7e7': '全', '&#xe8ef': '女', '&#xe0a8': '拉', '&#xf372': '成', '&#xe2a4': '云', '&#xe72a': '维', '&#xf707': '贸', '&#xf403': '道', '&#xe46b': '术', '&#xe92b': '运', '&#xe35d': '都', '&#xe284': '口', '&#xe464': '博', '&#xf25c': '河', '&#xea7b': '瑞', '&#xe68b': '宏', '&#xf342': '京', '&#xe0ee': '际', '&#xef1d': '路', '&#xf224': '祥', '&#xeabb': '青', '&#xeb7e': '镇', '&#xe358': '厨', '&#xe217': '培', '&#xe096': '力', '&#xe032': '惠', '&#xf573': '连', '&#xef3b': '马', '&#xf76b': '鸿', '&#xf32b': '钢', '&#xe8c6': '训', '&#xf61e': '影', '&#xf57f': '甲', '&#xef0f': '助', '&#xe50e': '窗', '&#xee2a': '布', '&#xea41': '富', '&#xe5fb': '牌', '&#xe9f5': '头', '&#xee98': '四', '&#xe685': '多', '&#xe468': '妆', '&#xebac': '吉', '&#xed9a': '苑', '&#xe90c': '沙', '&#xf5c5': '恒', '&#xe0fe': '隆', '&#xf3f6': '春', '&#xf46c': '干', '&#xf7c3': '饼', '&#xe7d0': '氏', '&#xf0e8': '里', '&#xe4aa': '二', '&#xf359': '管', '&#xe820': '诚', '&#xf1e6': '制', '&#xf085': '售', '&#xf850': '嘉', '&#xe8cb': '长', '&#xf776': '轩', '&#xe895': '杂', '&#xe8f9': '副', '&#xe1c1': '清', '&#xf7c6': '计', '&#xf112': '黄', '&#xe83d': '讯', '&#xeebe': '太', '&#xed62': '鸭', '&#xeb18': '号', '&#xf3a6': '街', '&#xe30e': '交', '&#xee4c': '与', '&#xec32': '叉', '&#xeda2': '附', '&#xf80f': '近', '&#xe9e8': '层', '&#xf407': '旁', '&#xeadd': '对', '&#xe792': '巷', '&#xf8bc': '栋', '&#xf03d': '环', '&#xe503': '省', '&#xe603': '桥', '&#xee10': '湖', '&#xebde': '段', '&#xf1c3': '乡', '&#xf443': '厦', '&#xf21c': '府', '&#xe2fc': '铺', '&#xf3cd': '内', '&#xf1f1': '侧', '&#xe9d7': '元', '&#xe439': '购', '&#xef9f': '前', '&#xe370': '幢', '&#xe266': '滨', '&#xe64a': '处', '&#xe291': '向', '&#xf2ee': '座', '&#xedd7': '下', '&#xf14b': '県', '&#xf327': '凤', '&#xedf4': '港', '&#xf69b': '开', '&#xf531': '关', '&#xe49e': '景', '&#xe099': '泉', '&#xe419': '塘', '&#xeb5a': '放', '&#xf1d2': '昌', '&#xf358': '线', '&#xe376': '湾', '&#xe2cb': '政', '&#xe7ae': '步', '&#xe0df': '宁', '&#xefc3': '解', '&#xf11c': '白', '&#xed15': '田', '&#xf396': '町', '&#xeeeb': '溪', '&#xefec': '十', '&#xec4f': '八', '&#xf08d': '古', '&#xf856': '双', '&#xf35f': '胜', '&#xeed6': '本', '&#xec47': '单', '&#xf008': '同', '&#xf2a9': '九', '&#xed04': '迎', '&#xe48a': '第', '&#xf39f': '台', '&#xe1f8': '玉', '&#xf67c': '锦', '&#xe476': '底', '&#xee48': '后', '&#xf4a1': '七', '&#xe416': '斜', '&#xf1f0': '期', '&#xe04c': '武', '&#xf7d6': '岭', '&#xe533': '松', '&#xe1ec': '角', '&#xf812': '纪', '&#xe2e8': '朝', '&#xe225': '峰', '&#xecb6': '六', '&#xf6de': '振', '&#xf09d': '珠', '&#xf1db': '局', '&#xe068': '岗', '&#xee29': '洲', '&#xf123': '横', '&#xf097': '边', '&#xe99d': '济', '&#xefe3': '井', '&#xe9df': '办', '&#xf610': '汉', '&#xe1bd': '代', '&#xec0f': '临', '&#xeca3': '弄', '&#xf4d4': '团', '&#xec10': '外', '&#xe7d1': '塔', '&#xe4de': '杨', '&#xe6d5': '铁', '&#xe55c': '浦', '&#xf7b1': '字', '&#xe269': '年', '&#xe187': '岛', '&#xee47': '陵', '&#xed78': '原', '&#xeb9e': '梅', '&#xf7f3': '进', '&#xf773': '荣', '&#xf2ff': '友', '&#xe061': '虹', '&#xf75c': '央', '&#xf7b0': '桂', '&#xe336': '沿', '&#xe11a': '事', '&#xec6f': '津', '&#xebf3': '凯', '&#xed58': '莲', '&#xf5b1': '丁', '&#xf214': '秀', '&#xf40e': '柳', '&#xef60': '集', '&#xed79': '紫', '&#xf658': '旗', '&#xed23': '张', '&#xeb7f': '谷', '&#xef2d': '的', '&#xeaca': '是', '&#xee5b': '不', '&#xeba0': '了', '&#xf2f2': '很', '&#xee87': '还', '&#xea7c': '个', '&#xf20c': '也', '&#xeeb7': '这', '&#xf67b': '我', '&#xf3b5': '就', '&#xf0de': '在', '&#xf371': '以', '&#xf697': '可', '&#xe1cd': '到', '&#xf18c': '错', '&#xea3a': '没', '&#xe995': '去', '&#xe00d': '过', '&#xf8f4': '感', '&#xe0f6': '次', '&#xe67d': '要', '&#xea5b': '比', '&#xf63f': '觉', '&#xe62c': '看', '&#xe3ef': '得', '&#xe6fa': '说', '&#xe870': '常', '&#xf78e': '真', '&#xf42f': '们', '&#xeca4': '但', '&#xe693': '最', '&#xea9a': '喜', '&#xeeff': '哈', '&#xf37a': '么', '&#xf553': '别', '&#xef4f': '位', '&#xf4f4': '能', '&#xef7b': '较', '&#xecb7': '境', '&#xe6f0': '非', '&#xe667': '为', '&#xf6a8': '欢', '&#xe207': '然', '&#xedd0': '他', '&#xe981': '挺', '&#xe836': '着', '&#xe8a2': '价', '&#xe74b': '那', '&#xf52c': '意', '&#xe0ad': '种', '&#xf609': '想', '&#xedde': '出', '&#xf580': '员', '&#xf4d3': '两', '&#xece2': '推', '&#xf795': '做', '&#xf4e5': '排', '&#xf43f': '实', '&#xe7dd': '分', '&#xe5ed': '间', '&#xe095': '甜', '&#xf458': '度', '&#xe2d5': '起', '&#xf3e7': '满', '&#xf1e0': '给', '&#xe14b': '热', '&#xe11c': '完', '&#xf722': '格', '&#xeed5': '荐', '&#xe87f': '喝', '&#xe6c9': '等', '&#xf263': '其', '&#xebc2': '再', '&#xecc3': '几', '&#xec17': '只', '&#xf01d': '现', '&#xe033': '朋', '&#xeb90': '候', '&#xf6d5': '样', '&#xf192': '直', '&#xe354': '而', '&#xf69d': '买', '&#xf85d': '于', '&#xeb94': '般', '&#xe813': '豆', '&#xefeb': '量', '&#xf72b': '选', '&#xec42': '奶', '&#xe136': '打', '&#xe846': '每', '&#xf0bb': '评', '&#xeeb1': '少', '&#xedec': '算', '&#xf03c': '又', '&#xec9d': '因', '&#xf6f3': '情', '&#xeb2c': '找', '&#xe610': '些', '&#xe2e0': '份', '&#xe0c5': '置', '&#xe1f0': '适', '&#xf8e8': '什', '&#xf2ed': '蛋', '&#xf7b3': '师', '&#xe56e': '气', '&#xf2a3': '你', '&#xea76': '姐', '&#xf814': '棒', '&#xe17c': '试', '&#xed6b': '总', '&#xe72b': '定', '&#xe531': '啊', '&#xf858': '足', '&#xf58e': '级', '&#xf876': '整', '&#xf653': '带', '&#xf0c3': '虾', '&#xe377': '如', '&#xf6a6': '态', '&#xe5aa': '且', '&#xf0fc': '尝', '&#xe49c': '主', '&#xe95a': '话', '&#xe340': '强', '&#xf16b': '当', '&#xf590': '更', '&#xf3f1': '板', '&#xee28': '知', '&#xe3fc': '己', '&#xe8e6': '无', '&#xf42b': '酸', '&#xf526': '让', '&#xe43a': '入', '&#xf525': '啦', '&#xeb11': '式', '&#xec77': '笑', '&#xf5ba': '赞', '&#xe1e0': '片', '&#xf2d4': '酱', '&#xf84b': '差', '&#xe63e': '像', '&#xf4a4': '提', '&#xea22': '队', '&#xed8f': '走', '&#xe352': '嫩', '&#xe080': '才', '&#xe443': '刚', '&#xefd0': '午', '&#xea17': '接', '&#xe43b': '重', '&#xeb55': '串', '&#xf1c0': '回', '&#xf333': '晚', '&#xe6eb': '微', '&#xe2ab': '周', '&#xf874': '值', '&#xf5d5': '费', '&#xeeb3': '性', '&#xeb1a': '桌', '&#xede5': '拍', '&#xebbd': '跟', '&#xf206': '块', '&#xe167': '调', '&#xecee': '糕'}

5、替换规则

def parseHtmlToGetCSSUrl2(companyInfoHtmlText=None):
    parseHtml = r"parseHtml.html"
    with open(parseHtml, 'r', encoding='utf-8') as f:
        fReadLines = f.readlines()
    companyInfoHtmlText = ''.join([text for text in fReadLines])
    assert companyInfoHtmlText, "html must is not None"

    companyInfoHtmlText = re.sub(r'[\n|\t]?', '', companyInfoHtmlText)

    # 替换 Num
    for key in numDict:
        strReplace1 = "class=\"num\">{};".format(key)
        strReplace2 = "class=\"num\">{}".format(numDict[key])
        companyInfoHtmlText = companyInfoHtmlText.replace(strReplace1, strReplace2)
    # 替换 address
    for key in addrDict:
        strReplace1 = "class=\"address\">{};".format(key)
        strReplace2 = "class=\"address\">{}".format(addrDict[key])
        companyInfoHtmlText = companyInfoHtmlText.replace(strReplace1, strReplace2)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值