爬虫从入门到精通(21) |字体加密通杀方案

文章目录

  • 一、了解什么是字体加密
  • 二、Python打开字体加密文件
  • 三、字体加密的通杀
    • 1.静态的字体文件+固定顺序的字体
    • 2.其他动态变化情况

一、了解什么是字体加密

字体加密是页面和前端字体文件想配合完成的一个反爬策略。通过css对其中一些重要数据进行加密,使我们在代码获取的和在页面上看到的数据是不同的。

在这里插入图片描述

前端人员通过使用font-face来达到这个目的,font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中。而font-face的格式为:

@font-face {font-family: <FontName>;      # 定义字体的名称。             src: <source> [<format>][,<source> [<format>]]*;  # 定义该字体下载的网址,包括ttf,eof,woff格式等
}

我们要打开ttf,eof,woff这些格式的字体文件有两种方式:

  • FontCreator工具:https://www.high-logic.com/font-editor/fontcreator
  • 在线FontEditor工具:http://fontstore.baidu.com/static/editor/index.html

我们抓包一个字体文件,在Font那一列,复制这个url到浏览器就可以下载下来

在这里插入图片描述
下载下来后,我们使用FontCreator打开

在这里插入图片描述

对应页面的数字。页面源码的字符前缀是&#x,woff文件的前缀是uni
在这里插入图片描述

二、Python打开字体加密文件

刚才是直观的看到我们的对应关系,但是我们主要是通过python代码,自动的替换加密字体。这个时候就需要借助其他模块来实现。

pip install fontTools

然后一些常见方法见 https://blog.csdn.net/weixin_43411585/article/details/103484643

这里我们演示打开woff格式的文件。文件下载地址

https://www.python-spider.com/static/font/challenge12/aiding.woff

演示代码

from fontTools.ttLib import TTFont# 加载字体文件
font = TTFont('local.woff')# 保存为xml文件
font.saveXML('local.xml')# 获取各节点名称,返回为列表
print(font.keys())
# ['GlyphOrder', 'head', 'hhea', 'maxp', 'OS/2', 'hmtx', 'cmap', 'loca', 'glyf', 'name', 'post', 'GSUB']# 获取getGlyphOrder节点的name值,返回为列表
print(font.getGlyphOrder())  # ['glyph00000', 'x', 'uniF013', 'uniF4D4', 'uniEE40', 'uniF7E1', 'uniF34B', 'uniE1A0', 'uniF1BE', 'uniE91E', 'uniF16F', 'uniF724']
print(font.getGlyphNames())  # ['glyph00000', 'uniE1A0', 'uniE91E', 'uniEE40', 'uniF013', 'uniF16F', 'uniF1BE', 'uniF34B', 'uniF4D4', 'uniF724', 'uniF7E1', 'x']# 获取cmap节点code与name值映射, 返回为字典
print(font.getBestCmap())  # {120: 'x', 57760: 'uniE1A0', 59678: 'uniE91E', 60992: 'uniEE40', 61459: 'uniF013', 61807: 'uniF16F', 61886: 'uniF1BE', 62283: 'uniF34B', 62676: 'uniF4D4', 63268: 'uniF724', 63457: 'uniF7E1'}# 获取glyf节点TTGlyph字体xy坐标信息
print(font['glyf']['uniE1A0'].coordinates)  # GlyphCoordinates([(50, 335),(50, 468),(76, 544),(95, 638),(148, 676),(202, 710),(282, 710),(402, 710),(459, 617),(487, 574),(504, 501),(520, 437),(519, 335),(520, 271),(508, 166),(494, 126),(466, 46),(362, -39),(282, -49),(176, -35),(115, 37),(43, 121),(43, 335),(135, 335),(135, 154),(177, 95),(229, 35),(282, 35),(343, 35),(385, 107),(428, 155),(428, 339),(428, 515),(385, 576),(344, 635),(286, 635),(218, 635),(179, 583),(135, 506)])# 获取glyf节点TTGlyph字体xMin,yMin,xMax,yMax坐标信息
print(font['glyf']['uniE1A0'].xMin, font['glyf']['uniE1A0'].yMin,font['glyf']['uniE1A0'].xMax, font['glyf']['uniE1A0'].yMax)  # 0 -49 521 711# 获取glyf节点TTGlyph字体on信息
print(font['glyf']['uniE1A0'].flags)  # array('B', [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0])# 获取GlyphOrder节点GlyphID的id信息, 返回int型
print(font.getGlyphID('uniE1A0'))  # 7

生成的xml文件
在这里插入图片描述

三、字体加密的通杀

1.静态的字体文件+固定顺序的字体

这类就是字体文件是固定的,而且坐标不变,字体的顺序也是不变的。这一类我们直接找到映射关系后可以直接写死替换,一劳永逸,也是最简单的字体反爬。

例如从这个网站下载woff文件:https://www.python-spider.com/static/font/challenge12/aiding.woff
,下载完打开woff
在这里插入图片描述
python解析出映射关系,直接replace替换字典

from fontTools.ttLib import TTFontfont = TTFont('./aiding.woff')
font.saveXML('./aiding.xml')
font_names = font.getGlyphOrder()
print(font_names)
woff_dict = {}
for name in font_names[1:]:woff_dict[name.replace('uni', '&#x')] = font.getGlyphID(name) if font.getGlyphID(name) != 10 else 0
print(woff_dict)

在这里插入图片描述

2.其他动态变化情况

这里把不是第一种的统一看成其他

  • 动态字体文件+固定字体顺序
  • 动态字体文件+动态编码+固定字体信息
  • 动态字体文件+动态编码+固定字体信息
  • 动态字体文件+动态编码+动态字体信息

这些的解决办法我们现在有一种大佬想的新方案:

传统的方式就是找到目标ttf 文件,人为得映射乱码和真实字符。但是当ttf更新频繁时,人为对照成本就很高了。针对上面的痛点,想了一种成本较低得方法来解决这个问题。通过调研发现Python 的image类是可以加载字体文件的,那结合机器学习文字识别那就可以很轻松的拿到乱码和字体的映射。现在问题是找到一个靠谱的汉字识别模型。对比市面上的汉字识别模型, 最终采用了cnocr 模型。当然使用模型是有准确率的,最终的结果最好还是自己验证一次。

环境安装:

python : 3.8.8安装cnocr: pip install cnocr
如果报错 :ERROR: Failed building wheel for Polygon3
直接通过whl 安装Polygon3https://www.lfd.uci.edu/~gohlke/pythonlibs/#polygon
即在上述链接中 选择 Polygon3-3.0.9.1-cp38-cp38-win_amd64.whl 下载安装即可在实际执行中发现 cv2找不到 某个函数,不要犹豫,大概率是opencv-python 的差异
建议直接升级到最高版本
pip install --user opencv-python --upgrade

代码演示:

import os
from PIL import ImageFont, Image, ImageDrawfrom cnocr import CnOcr
import numpy as np
from fontTools.ttLib import TTFont
import requests
from io import BytesIOdef font_to_img(code_list, filename, ignore_flag=True, score=0.95):normal_dict = {}be_padding_dict = {}ocr = CnOcr()"""将字体画成图片code_list: 加密字符列表filename: 字体文件ignore_flag:是否忽视 sorce 返回结果score: 识别准确率默认 95%以上"""for char_list in code_list:char_code = char_list.encode().decode()img_size = 1024img = Image.new('1', (img_size, img_size), 255)draw = ImageDraw.Draw(img)font = ImageFont.truetype(filename, int(img_size * 0.7))x, y = draw.textsize(char_code, font=font)draw.text(((img_size - x) // 2, (img_size - y) // 2), char_code, font=font, fill=0)# 将单通道 转为 三通道img = img.convert("RGB")# word = ocr.ocr_for_single_line("%s.jpg" % mame_ocr)word = ocr.ocr_for_single_line(np.array(img))if word["score"] >= score:# 处理重复名字# img.save("%s_%s.jpg" % (char_code, word["text"]))normal_dict[char_code] = word["text"]else:be_padding_dict[char_code] = wordimg.save("%s_%s_be_padding.jpg" % (char_code, word["text"]))if ignore_flag:normal_dict[char_code] = word["text"]return normal_dict, be_padding_dictdef ttf_parse(url, ttf_name):"""根据url 获取返回值"""response = requests.get(url).contentfont_parse = TTFont(BytesIO(response))font_parse.save(ttf_name)m_dict = font_parse.getBestCmap()unicode_list = []for key, _ in m_dict.items():unicode_list.append(key)# 获取需要判断的字符char_list = [chr(ch_unicode) for ch_unicode in unicode_list]normal_dict, error_dict = font_to_img(char_list, ttf_name)print(normal_dict)print(error_dict)# 删除字体文件os.remove(ttf_name)if __name__ == '__main__':ttf_parse('https://s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/616c0c0d.woff', '1.jpg')

结果:

{'x': '', '\ue006': '其', '\ue00f': '町', '\ue03a': '觉', '\ue042': '意', '\ue055': '串', '\ue05e': '所', '\ue069': '气','\ue07e': '3', '\ue083': '跟', '\ue084': '旅', '\ue08f': '际', '\ue0d1': '前', '\ue0dd': '费', '\ue0e5': '清','\ue0ee': '成', '\ue0f8': '关', '\ue10b': '宾', '\ue10f': '苑', '\ue11c': '张长', '\ue11e': '楼', '\ue133': '5','\ue143': '临', '\ue154': '笑', '\ue159': '凯', '\ue161': '色', '\ue16c': '拍', '\ue177': '少', '\ue17d': '座','\ue189': '了', '\ue195': '差', '\ue19c': '房', '\ue1b7': '角', '\ue1be': '着', '\ue1d0': '的', '\ue1ea': '自','\ue1ee': '也', '\ue1fc': '要', '\ue20a': '向', '\ue215': '没', '\ue216': '值', '\ue229': '客', '\ue22f': '金','\ue236': '营', '\ue23b': '镇', '\ue247': '衣', '\ue24d': '度', '\ue257': '浦', '\ue26f': '啦', '\ue290': '餐','\ue29f': '情', '\ue2a0': '让', '\ue2bb': '子', '\ue2c3': '纪', '\ue2d8': '于', '\ue2f3': '路', '\ue2f4': '机','\ue2fa': '样', '\ue2fe': '宏', '\ue304': '宝', '\ue336': '横', '\ue337': '因', '\ue338': '人', '\ue33a': '京','\ue34b': '找', '\ue34c': '线', '\ue358': '庆', '\ue36b': '真', '\ue374': '同', '\ue376': '排', '\ue379': '造','\ue37c': '青', '\ue389': '馆', '\ue38e': '寓', '\ue390': '西', '\ue397': '总', '\ue3a0': '特', '\ue3a4': '带','\ue3a7': '校', '\ue3ac': '光', '\ue3ae': '港', '\ue3cf': '春', '\ue3e4': '售', '\ue3f0': '正', '\ue402': '助','\ue406': '香', '\ue40b': '适', '\ue416': '做', '\ue425': '容', '\ue42b': '余科', '\ue430': '讯', '\ue435': '面','\ue440': '舟受', '\ue445': '锦', '\ue44e': '全', '\ue455': '惠', '\ue463': '玉', '\ue467': '窗', '\ue469': '员','\ue487': '代', '\ue488': '学', '\ue492': '我', '\ue495': '都', '\ue498': '9', '\ue49b': '保', '\ue4a0': '铺','\ue4a8': '巷', '\ue4ab': '饭', '\ue4ae': '顺', '\ue4b8': '8', '\ue4ba': '内', '\ue4c3': '栋', '\ue4ce': '发','\ue4f3': '央', '\ue4f7': '器', '\ue4ff': '酸令', '\ue505': '用', '\ue508': '几', '\ue536': '在', '\ue537': '七','\ue53c': '松', '\ue548': '2', '\ue553': '步', '\ue558': '卫', '\ue55e': '古', '\ue55f': '生', '\ue56c': '经','\ue583': '杂', '\ue591': '店', '\ue597': '中', '\ue5b4': '嘉', '\ue5c2': '事', '\ue5c4': '庄', '\ue5c9': '艺','\ue5d3': '无', '\ue5ec': '有', '\ue609': '然', '\ue60c': '谷', '\ue619': '社', '\ue61d': '专', '\ue634': '农','\ue63b': '桌', '\ue63d': '能', '\ue640': '火', '\ue652': '品', '\ue656': '起', '\ue66a': '药', '\ue66b': '喝','\ue66c': '每', '\ue673': '强', '\ue678': '公', '\ue688': '酱', '\ue697': '车', '\ue69b': '接', '\ue6a2': '富','\ue6a7': '式', '\ue6a8': '江', '\ue6ac': '这', '\ue6ae': '美', '\ue6b4': '销', '\ue6b7': '算', '\ue6bd': '打','\ue6e4': '景', '\ue6f2': '且', '\ue724': '材', '\ue730': '湾', '\ue744': '修', '\ue74c': '制', '\ue755': '文','\ue756': '诚', '\ue758': '方', '\ue75a': '司', '\ue76e': '利', '\ue778': '泉', '\ue78d': '名', '\ue792': '东','\ue795': '超', '\ue797': '底', '\ue7a0': '六', '\ue7ad': '字', '\ue7ba': '走', '\ue7be': '个', '\ue7c7': '钢','\ue7d9': '是', '\ue7e4': '岭', '\ue7ff': '博', '\ue80d': '影', '\ue818': '完', '\ue829': '妆', '\ue831': '不','\ue838': '更', '\ue848': '比', '\ue849': '赞', '\ue856': '候', '\ue85b': '安', '\ue85c': '院', '\ue85d': '便','\ue862': '麻', '\ue864': '元', '\ue870': '坊', '\ue88c': '福', '\ue88d': '天', '\ue897': '心', '\ue89e': '太','\ue8ad': '6', '\ue8b9': '与', '\ue8ce': '弄', '\ue8e2': '试', '\ue8ed': '限良', '\ue90d': '康', '\ue916': '省','\ue917': '兴', '\ue91a': '管', '\ue920': '0', '\ue92a': '地', '\ue934': '银', '\ue941': '可', '\ue959': '时','\ue967': '风', '\ue97e': '海', '\ue981': '但', '\ue989': '吉', '\ue990': '堂', '\ue996': '理', '\ue99e': '达','\ue9a3': '胜', '\ue9b8': '年', '\ue9bb': '叉', '\ue9c0': '4', '\ue9ca': '网', '\ue9cc': '层', '\ue9de': '八','\ue9e0': '粉', '\ue9e5': '上', '\ue9e6': '去', '\ue9ea': '处', '\ue9f1': '童', '\ue9fa': '性', '\uea01': '种','\uea09': '量', '\uea0d': '彩', '\uea12': '健', '\uea27': '连', '\uea3b': '府', '\uea45': '湖', '\uea4f': '第','\uea56': '厂', '\uea59': '较', '\uea6f': '贸', '\uea7c': '错', '\uea7f': '木', '\uea84': '段', '\uea98': '城','\ueaa6': '门', '\ueaa7': '工', '\ueaab': '出', '\ueab1': '昌', '\ueabe': '重', '\ueac8': '日', '\uead0': '份','\ueadc': '计', '\ueadd': '育', '\ueae2': '型', '\ueaf3': '矢口', '\ueafd': '三', '\ueb02': '产', '\ueb11': '泰','\ueb1b': '停', '\ueb1d': '多', '\ueb3f': '汇', '\ueb49': '杨', '\ueb5a': '务', '\ueb64': '解', '\ueb67': '会','\ueb6f': '斯', '\ueb75': '1', '\ueb8e': '果', '\uebb1': '训', '\uebbf': '部', '\uebfa': '振', '\uebfe': '汽','\uec04': '贝', '\uec07': '盛', '\uec0b': '干', '\uec10': '沙', '\uec14': '放', '\uec1d': '奶', '\uec1f': '双','\uec23': '维', '\uec29': '源', '\uec2f': '汉', '\uec4e': '武', '\uec54': '一', '\uec5d': '州', '\uec5e': '屋','\uec6e': '养', '\uec6f': '选', '\uec83': '下', '\uec84': '和', '\uec9f': '边', '\ueca0': '星', '\uecb4': '开','\uecbc': '买', '\uecbf': '瑞', '\uecce': '欢', '\uecd5': '石', '\uecd9': '医', '\uecda': '包', '\uecdd': '鑫','\uecde': '爱', '\uece2': '以', '\ueceb': '家', '\uecf4': '迎', '\uecf6': '朝月', '\ued05': '很', '\ued09': '团','\ued15': '饼', '\ued28': '快', '\ued2d': '明月', '\ued32': '祥', '\ued3b': '岗', '\ued4d': '周', '\ued6c': '活','\ued7d': '服', '\ued89': '米', '\ued8a': '7', '\ued8e': '实', '\ued98': '四', '\ueda2': '马', '\uedb1': '鸡','\uedc3': '桂', '\uedce': '作', '\uedd0': '棒', '\uedd8': '鞋', '\ueddd': '井', '\uede1': '记', '\uedf0': '微','\uedf7': '黄', '\uedfb': '氏', '\uee16': '之', '\uee1a': '手', '\uee20': '还', '\uee24': '加', '\uee34': '尚','\uee38': '力', '\uee44': '间', '\uee52': '才', '\uee56': '当', '\uee59': '评', '\uee73': '教', '\uee80': '境','\uee81': '卖', '\uee9a': '近', '\uee9d': '酒', '\uee9e': '吧', '\ueeb0': '汤', '\ueebe': '头', '\ueec1': '鸿','\ueec3': '室', '\ueec7': '世', '\ueecf': '德', '\ueed0': '热', '\ueef2': '看', '\uef13': '块', '\uef3c': '等','\uef46': '龙', '\uef4b': '桥', '\uef57': '津', '\uef61': '滨', '\uef62': '局', '\uef64': '副', '\uef6f': '别','\uef81': '旁', '\uef8b': '拉', '\uef8d': '体', '\uef8f': '万', '\uef90': '台', '\uefad': '十', '\uefae': '分','\uefbd': '布', '\uefc4': '片牌', '\uefec': '办', '\uefee': '兰', '\ueff2': '山', '\ueff8': '单', '\uf00a': '料','\uf01d': '回', '\uf01e': '园', '\uf020': '洗', '\uf034': '大', '\uf03f': '妇', '\uf042': '又', '\uf055': '蛋','\uf05d': '烟', '\uf067': '行', '\uf069': '珠', '\uf081': '原', '\uf092': '南', '\uf0ab': '置', '\uf0b8': '后','\uf0ba': '位', '\uf0bd': '配', '\uf0d0': '哈', '\uf0d4': '里', '\uf0d8': '丰', '\uf0dc': '皮', '\uf0e3': '想','\uf0e4': '乡', '\uf0f9': '站', '\uf10a': '而', '\uf11c': '电', '\uf11e': '对', '\uf136': '峰', '\uf138': '云','\uf14d': '凤', '\uf155': '厅', '\uf15a': '阿', '\uf15f': '刚', '\uf16a': '水', '\uf187': '丁', '\uf18a': '他','\uf18c': '次', '\uf18e': '主', '\uf194': '来', '\uf199': '像', '\uf1af': '整', '\uf1b0': '道', '\uf1b1': '百','\uf1ce': '区', '\uf1ee': '小', '\uf1f4': '铁', '\uf1fa': '培', '\uf20a': '环', '\uf211': '羊', '\uf22d': '感','\uf237': '们', '\uf243': '那', '\uf244': '嫩', '\uf248': '点', '\uf250': '红', '\uf252': '购', '\uf261': '片','\uf272': '批', '\uf282': '虾', '\uf289': '长', '\uf28d': '村', '\uf291': '果', '\uf29b': '如', '\uf2bc': '就','\uf2c2': '信', '\uf2cb': '荣', '\uf2d3': '队人', '\uf2df': '塘', '\uf2ef': '紫', '\uf2fb': '糕', '\uf2fe': '虫工','\uf309': '锅', '\uf30c': '口', '\uf31b': '味末', '\uf325': '过', '\uf329': '陵', '\uf32b': '饰', '\uf32d': '商','\uf336': '食', '\uf33f': '甜', '\uf349': '态', '\uf34d': '友', '\uf35f': '女', '\uf362': '九', '\uf365': '货','\uf36b': '合', '\uf373': '入', '\uf375': '幢童', '\uf393': '秀', '\uf396': '洲', '\uf3a1': '得', '\uf3a8': '绿','\uf3bf': '永', '\uf3c1': '高', '\uf400': '价', '\uf41f': '五', '\uf422': '板', '\uf428': '挺', '\uf42d': '好','\uf431': '老', '\uf438': '荐', '\uf443': '溪', '\uf45f': '业', '\uf462': '话', '\uf478': '术', '\uf49e': '二','\uf4a0': '居', '\uf4a4': '科', '\uf4b0': '尔', '\uf4db': '街', '\uf4ec': '动', '\uf4fd': '市', '\uf50f': '佳','\uf516': '非', '\uf51c': '厦', '\uf53d': '满', '\uf540': '塔', '\uf548': '幼', '\uf555': '政', '\uf55d': '本','\uf57f': '些', '\uf590': '轩', '\uf594': '尝', '\uf5a2': '鱼', '\uf5ac': '最', '\uf5bd': '王', '\uf5c7': '定','\uf5de': '附', '\uf5e8': '说', '\uf5ec': '联', '\uf5f4': '进', '\uf5f6': '技', '\uf5f7': '外', '\uf5f8': '华','\uf5fa': '级', '\uf602': '沿', '\uf603': '安束', '\uf606': '济', '\uf630': '丽', '\uf632': '吃', '\uf63e': '烤','\uf653': '期', '\uf655': '集', '\uf668': '牛', '\uf670': '岛', '\uf67c': '直', '\uf68d': '化', '\uf691': '北','\uf698': '午', '\uf69d': '民', '\uf6b9': '鲜羊', '\uf6cd': '川', '\uf6d0': '油', '\uf6d8': '现', '\uf6f1': '隆','\uf6f7': '己', '\uf6f8': '鸭', '\uf702': '田', '\uf712': '广', '\uf715': '柳', '\uf71d': '阿', '\uf722': '场','\uf727': '花', '\uf72c': '甲', '\uf735': '调', '\uf746': '国', '\uf759': '肉', '\uf75f': '格', '\uf764': '精','\uf778': '豆', '\uf779': '雅', '\uf780': '阳', '\uf78f': '师', '\uf7a7': '推', '\uf7ac': '为', '\uf7ad': '提','\uf7b2': '旗', '\uf7b6': '建', '\uf7b7': '什', '\uf7c8': '平', '\uf7d0': '具', '\uf7d6': '号', '\uf7d7': '侧','\uf7d9': '到', '\uf7e1': '梅', '\uf7f0': '茶', '\uf7f3': '设', '\uf7f6': '晚', '\uf803': '白', '\uf805': '莲','\uf813': '只', '\uf814': '运', '\uf816': '给', '\uf821': '恒', '\uf824': '菜', '\uf838': '么', '\uf843': '足','\uf84d': '你', '\uf853': '厨', '\uf85c': '烫', '\uf85f': '喜', '\uf867': '装', '\uf86c': '两', '\uf87d': '物','\uf884': '河', '\uf888': '再', '\uf891': '交', '\uf89c': '朋', '\uf8c7': '常', '\uf8ca': '烧', '\uf8cf': '宁','\uf8d7': '乐', '\uf8e1': '林', '\uf8ee': '通', '\uf8f9': '县', '\uf8fb': '儿', '\uf8fe': '新'}

以评分95% 做分割 ,下面是可能不对的,经过对比图片发现没有错误。只是评分较低。

{'\ue05e': {'text': '所', 'score': 0.7101963758468628}, '\ue069': {'text': '气', 'score': 0.8201217651367188},'\ue07e': {'text': '3', 'score': 0.9448353052139282}, '\ue08f': {'text': '际', 'score': 0.8827687501907349},'\ue0dd': {'text': '费', 'score': 0.9348242282867432}, '\ue11c': {'text': '张长', 'score': 0.8512042164802551},'\ue133': {'text': '5', 'score': 0.8904429078102112}, '\ue154': {'text': '笑', 'score': 0.9278842210769653},'\ue159': {'text': '凯', 'score': 0.9020307064056396}, '\ue161': {'text': '色', 'score': 0.6160538196563721},'\ue17d': {'text': '座', 'score': 0.9377821683883667}, '\ue189': {'text': '了', 'score': 0.9472777843475342},'\ue1b7': {'text': '角', 'score': 0.9137881398200989}, '\ue1be': {'text': '着', 'score': 0.9061774611473083},'\ue29f': {'text': '情', 'score': 0.6765124201774597}, '\ue3f0': {'text': '正', 'score': 0.9489812254905701},'\ue406': {'text': '香', 'score': 0.9193495512008667}, '\ue42b': {'text': '余科', 'score': 0.31485822796821594},'\ue430': {'text': '讯', 'score': 0.7896761894226074}, '\ue440': {'text': '舟受', 'score': 0.4272177815437317},'\ue445': {'text': '锦', 'score': 0.93426513671875}, '\ue495': {'text': '都', 'score': 0.9491526484489441},'\ue498': {'text': '9', 'score': 0.9058276414871216}, '\ue4ae': {'text': '顺', 'score': 0.8457756638526917},'\ue4b8': {'text': '8', 'score': 0.745848536491394}, '\ue4ff': {'text': '酸令', 'score': 0.23059628903865814},'\ue536': {'text': '在', 'score': 0.9107916355133057}, '\ue53c': {'text': '松', 'score': 0.8348405957221985},'\ue548': {'text': '2', 'score': 0.7965168356895447}, '\ue5c2': {'text': '事', 'score': 0.9056740999221802},'\ue61d': {'text': '专', 'score': 0.780048131942749}, '\ue640': {'text': '火', 'score': 0.901986300945282},'\ue673': {'text': '强', 'score': 0.9025680422782898}, '\ue6a7': {'text': '式', 'score': 0.9470093846321106},'\ue6ae': {'text': '美', 'score': 0.9245206713676453}, '\ue6e4': {'text': '景', 'score': 0.5590194463729858},'\ue74c': {'text': '制', 'score': 0.7929206490516663}, '\ue755': {'text': '文', 'score': 0.9355360269546509},'\ue756': {'text': '诚', 'score': 0.9329637289047241}, '\ue758': {'text': '方', 'score': 0.9357324242591858},'\ue76e': {'text': '利', 'score': 0.7340298891067505}, '\ue7e4': {'text': '岭', 'score': 0.6351971626281738},'\ue7ff': {'text': '博', 'score': 0.9468564987182617}, '\ue848': {'text': '比', 'score': 0.8979260325431824},'\ue849': {'text': '赞', 'score': 0.8741719126701355}, '\ue856': {'text': '候', 'score': 0.7024070024490356},'\ue85d': {'text': '便', 'score': 0.61191725730896}, '\ue897': {'text': '心', 'score': 0.9427058100700378},'\ue8ad': {'text': '6', 'score': 0.7724475860595703}, '\ue8ed': {'text': '限良', 'score': 0.8311377763748169},'\ue920': {'text': '0', 'score': 0.5414958000183105}, '\ue92a': {'text': '地', 'score': 0.47658202052116394},'\ue967': {'text': '风', 'score': 0.9264501929283142}, '\ue9c0': {'text': '4', 'score': 0.8089628219604492},'\ue9de': {'text': '八', 'score': 0.4221823215484619}, '\ue9e6': {'text': '去', 'score': 0.9465771317481995},'\ue9ea': {'text': '处', 'score': 0.729453444480896}, '\ue9f1': {'text': '童', 'score': 0.8890518546104431},'\ue9fa': {'text': '性', 'score': 0.8406746983528137}, '\uea01': {'text': '种', 'score': 0.9463455677032471},'\uea0d': {'text': '彩', 'score': 0.9497383832931519}, '\uea56': {'text': '厂', 'score': 0.9360781311988831},'\ueaa6': {'text': '门', 'score': 0.9319864511489868}, '\ueab1': {'text': '昌', 'score': 0.8610723614692688},'\ueaf3': {'text': '矢口', 'score': 0.9479916095733643}, '\ueafd': {'text': '三', 'score': 0.9098818302154541},'\ueb1d': {'text': '多', 'score': 0.9341955780982971}, '\ueb3f': {'text': '汇', 'score': 0.926189661026001},'\ueb6f': {'text': '斯', 'score': 0.9391093254089355}, '\ueb8e': {'text': '果', 'score': 0.39117464423179626},'\uebb1': {'text': '训', 'score': 0.9340453743934631}, '\uec0b': {'text': '干', 'score': 0.5374392867088318},'\uec4e': {'text': '武', 'score': 0.9499560594558716}, '\uec54': {'text': '一', 'score': 0.8632733821868896},'\uec83': {'text': '下', 'score': 0.9410864114761353}, '\ueca0': {'text': '星', 'score': 0.9497742056846619},'\uecf6': {'text': '朝月', 'score': 0.8974940776824951}, '\ued2d': {'text': '明月', 'score': 0.5373875498771667},'\ued7d': {'text': '服', 'score': 0.4188182055950165}, '\ued8a': {'text': '7', 'score': 0.7986817359924316},'\uedb1': {'text': '鸡', 'score': 0.6929422616958618}, '\uedce': {'text': '作', 'score': 0.6247490644454956},'\ueddd': {'text': '井', 'score': 0.9002070426940918}, '\uee1a': {'text': '手', 'score': 0.9290779829025269},'\uee24': {'text': '加', 'score': 0.9063721895217896}, '\uee9e': {'text': '吧', 'score': 0.9220173358917236},'\ueec7': {'text': '世', 'score': 0.925752580165863}, '\ueecf': {'text': '德', 'score': 0.9239265322685242},'\uef64': {'text': '副', 'score': 0.9384047985076904}, '\uef6f': {'text': '别', 'score': 0.8920194506645203},'\uefad': {'text': '十', 'score': 0.8840975165367126}, '\uefc4': {'text': '片牌', 'score': 0.4957613945007324},'\uf03f': {'text': '妇', 'score': 0.8898952007293701}, '\uf042': {'text': '又', 'score': 0.8956716656684875},'\uf05d': {'text': '烟', 'score': 0.8573434948921204}, '\uf069': {'text': '珠', 'score': 0.75028395652771},'\uf0bd': {'text': '配', 'score': 0.7989603877067566}, '\uf0d8': {'text': '丰', 'score': 0.7629039883613586},'\uf0e4': {'text': '乡', 'score': 0.7125524878501892}, '\uf10a': {'text': '而', 'score': 0.9461195468902588},'\uf136': {'text': '峰', 'score': 0.9324420690536499}, '\uf14d': {'text': '凤', 'score': 0.8371238708496094},'\uf15f': {'text': '刚', 'score': 0.8563844561576843}, '\uf1ee': {'text': '小', 'score': 0.6941447257995605},'\uf20a': {'text': '环', 'score': 0.8093100786209106}, '\uf211': {'text': '羊', 'score': 0.817395806312561},'\uf22d': {'text': '感', 'score': 0.9368784427642822}, '\uf237': {'text': '们', 'score': 0.9287102818489075},'\uf244': {'text': '嫩', 'score': 0.7814606428146362}, '\uf29b': {'text': '如', 'score': 0.32676398754119873},'\uf2d3': {'text': '队人', 'score': 0.5490540862083435}, '\uf2fe': {'text': '虫工', 'score': 0.5634275674819946},'\uf309': {'text': '锅', 'score': 0.8993457555770874}, '\uf31b': {'text': '味末', 'score': 0.24660344421863556},'\uf32b': {'text': '饰', 'score': 0.6643277406692505}, '\uf375': {'text': '幢童', 'score': 0.3151859641075134},'\uf3a8': {'text': '绿', 'score': 0.7714439034461975}, '\uf42d': {'text': '好', 'score': 0.8344385027885437},'\uf45f': {'text': '业', 'score': 0.7493254542350769}, '\uf49e': {'text': '二', 'score': 0.8919293284416199},'\uf4ec': {'text': '动', 'score': 0.6594783663749695}, '\uf50f': {'text': '佳', 'score': 0.8723465204238892},'\uf516': {'text': '非', 'score': 0.9436918497085571}, '\uf5ec': {'text': '联', 'score': 0.5172083973884583},'\uf603': {'text': '安束', 'score': 0.613476037979126}, '\uf630': {'text': '丽', 'score': 0.9419771432876587},'\uf653': {'text': '期', 'score': 0.9299824237823486}, '\uf668': {'text': '牛', 'score': 0.643532931804657},'\uf67c': {'text': '直', 'score': 0.9217656850814819}, '\uf6b9': {'text': '鲜羊', 'score': 0.7307806015014648},'\uf6f8': {'text': '鸭', 'score': 0.7272024750709534}, '\uf712': {'text': '广', 'score': 0.9106811285018921},'\uf715': {'text': '柳', 'score': 0.8577496409416199}, '\uf722': {'text': '场', 'score': 0.6829107403755188},'\uf72c': {'text': '甲', 'score': 0.9237180948257446}, '\uf735': {'text': '调', 'score': 0.9441312551498413},'\uf78f': {'text': '师', 'score': 0.8918313980102539}, '\uf7b7': {'text': '什', 'score': 0.6794707179069519},'\uf803': {'text': '白', 'score': 0.949399471282959}, '\uf805': {'text': '莲', 'score': 0.939042866230011},'\uf814': {'text': '运', 'score': 0.9052926301956177}, '\uf838': {'text': '么', 'score': 0.9014909863471985},'\uf888': {'text': '再', 'score': 0.9475842714309692}, '\uf8fb': {'text': '儿', 'score': 0.8162266612052917}}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/236814.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是企业资金

我从两个方面来诠释企业资金管理&#xff1a; 1、企业资金管理是什么&#xff1f; 2、企业资金管理包括什么&#xff1f; 一、企业资金管理是什么&#xff1f; 众所周知&#xff0c;每个企业都有对应的财务部门&#xff0c;专门负责管理企业的“钱”&#xff0c;和企业的“帐…

【赠书第10期】从概念到现实:ChatGPT和Midjourney的设计之旅

文章目录 前言 1 ChatGPT的崛起 2 Midjourney的探索 3 技术创新的交汇 4 对未来的影响 5 结论 6 推荐图书 7 粉丝福利 前言 在过去的几年里&#xff0c;自然语言处理和聊天模型的领域取得了飞速的发展。ChatGPT 作为一个由OpenAI 开发的大型语言模型&#xff0c;以其强…

AI 文本转视频(视频生产工具分享)

AI 文本转视频&#xff08;视频生产工具分享&#xff09; 介绍 ​ 想要根据任何描述轻松创建有趣的视频吗&#xff1f;然后&#xff0c;您应该尝试使用人工智能视频生成工具。毫无疑问&#xff0c;人工智能是未来。人工智能视频生成器可以轻松地从任何文本制作视频。只需几分…

中国毫米波雷达产业分析5——毫米波雷达应用案例介绍

一、上海某区康养标杆工程 项目甲方&#xff1a;上海某康养中心 项目地点&#xff1a;上海徐汇区 项目时间&#xff1a;2023年8月 供应商&#xff1a;南京苗米科技有限公司 &#xff08;一&#xff09;项目需求 该康养社区集中收治了区内75岁以上老龄化人群和部分阿尔茨海默…

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…

Spring-SpringFramework特性以及IOC相关知识

SpringFramework五大模块 特性 IOC思想和DI IOC是容器&#xff0c;用于管理资源 IOC&#xff1a;Inversion of Control 反转控制 DI&#xff1a;Dependecy Injection 依赖注入 组件以预先定义好的方式接受来自容器的资源注入 IOC在Spring中的实现 spring提供两种方式&…

算法与数据结构有区别吗?

算法和数据结构并不是同一件事。严格来说&#xff0c;它们并不是等效的。但是&#xff0c;我们通常在使用的时候会互换这两个术语。为了简便&#xff0c;后文我们会用数据结构这个术语来指代“数据结构及其所有相关的方法”。 有很多方法可以用来说明这两个术语之间的区别&…

【数据结构】循环链表和双向链表

【循环链表】 (有头结点) pR1->next; R1->nextR2->next->next; free(R2->next); R2->nextp; 例&#xff1a;对于两个单循环链表a&#xff0c;b&#xff0c;将其连接起来&#xff0c;变成一个单循环链表 #include<stdio.h> #include<stdlib.h> …

Linux安全配置

进入ssh配置文件 vim /etc/ssh/sshd_config将port 22中的端口号改为5001 重启ssh服务 systemctl restart sshd拓展 sh与bash iptable与firewall ssh与sshd vps与ssh 参考&#xff1a; 【安全-SSH】SSH安全设置 - CSDN AppLinux VPS服务器SSH端口一键修改脚本​Linux脚本…

常见算法

简单认识算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法&#xff01; 排序算法 冒泡排序 选择排序 冒泡排序 每次从数组中找到最大值放在数组的后面去 import java.util.Arrays;public class Work1 {public static void main(String[] args) {//准备一个数组in…

rest_framework_django 学习笔记二(视图路由)

rest_framework_django 学习笔记二&#xff08;视图路由&#xff09; rest_framwork_django学习笔记一(序列化器) 一、rest framework 中Request 与 Response 1、Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象&#xff0c;二是REST Fame…

Andrioid T 实现充电动画(2)

Andrioid T 实现充电动画&#xff08;2&#xff09; 以MTK平台为例&#xff0c;实现充电动画 效果图 资源包 修改文件清单 system/vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/prize_charge_layout.xmlsystem/vendor/mediatek/proprietary/packages/ap…