关于网站自定义字体css加密篇
平常在浏览网页时会发现有很多网页的文字是无法直接复制的,例如这个:中国供应商网
最新采购-采购中心-中国供应商
其实这就是一种网站自定义的字体,
@font-face{
font-family:
src:
其中font-family就是你自定义的字体名称,而src则是存放字体的路径。
这个网站其实我们可以很清楚的看到是ttf形式的文件,并且采用了base64加密。而后面的那一长串就是经过加密后的文件。所以我们第一步采用base64解码。
bs = base64.b64decode()
将解码后的文件命名并保存
with open("filename.ttf", mode="wb") as f:
f.write()
因为文件是ttf形式的,所以我们需要打开文件并保存为xml形式,
font = TTFont('filename.ttf')
font.saveXML('filename.xml')
第一步就完成了,
我们打开所得到的xml文件后会发现这样一个字段:CharString name="uni1005b",uni1005b会不会就是我们所需要的unicode与字符的对应关系呢。其中有两个字符串引起了我的注意,rlineto和rmoveto。这可能是一种坐标的表示,我们导入reportlab和fontTools.pens来画一下
from fontTools.pens.basePen import BasePen
from reportlab.graphics.shapes import Path
from reportlab.lib import colors
from reportlab.graphics import renderPM
from reportlab.graphics.shapes import Group, Drawing, scale
import base64
fontTools是python的一个对字体进行解析的第三方库,Pen是一个用于标准化的”画”出轮廓的对象,或者是数据和实际轮廓间的媒介。具体来说,Pen对象的子类包含将上述两种轮廓数据转化为画线、移动等模拟实际轮廓的方法。在fontTools的pen库中包含将轮廓数据转化为qt、reportLab等第三方库中实例的Pen子类。总体的思路就是先定义rlineto和rmoveto两种方法,根据坐标画出所有的图,再将画出的图像利用tesseract-ocr识别,就可以找到所有unicode和字符的对应关系了。
class ReportLabPen(BasePen):
"""A pen for drawing onto a reportlab.graphics.shapes.Path object."""
def __init__(self, glyphSet, path=None):
BasePen.__init__(self, glyphSet)
if path is None:
path = Path()
self.path = path
def _moveTo(self, p):
(x, y) = p
self.path.moveTo(x, y)
def _lineTo(self, p):
(x, y) = p
self.path.lineTo(x, y)
def _curveToOne(self, p1, p2, p3):
(x1, y1) = p1
(x2, y2) = p2
(x3, y3) = p3
self.path.curveTo(x1, y1, x2, y2, x3, y3)
def _closePath(self):
self.path.closePath()
def ttfToImage(fontName, imagePath, fmt="png"):
font = TTFont(fontName)
gs = font.getGlyphSet()
glyphNames = font.getGlyphNames()
for i in glyphNames:
if i[0] == '.': # 跳过'.notdef', '.null'
continue
g = gs[i]
pen = ReportLabPen(gs)
g.draw(pen)
w, h = g.width, g.width + 500
g = Group(pen.path)
g.translate(0, 200)
d = Drawing(w, h)
d.add(g)
print(d)
imageFile = imagePath + "/" + i + ".png"
renderPM.drawToFile(d, imageFile, fmt)
值得一提的是tesseract-ocr是一个很强大的图片识别工具,安装和使用方法可以自行了解。
关于网站自定义字体css加密篇相关推荐
- html css调用自定义字体,css怎么自定义字体样式?
在CSS中,可以通过@font-face规则来指定一个用于显示文本的自定义字体.@font-face规则允许网页开发者为其网页指定自定义的字体, 通过这种自定义字体的方式,可以消除对用户电脑字体的依赖 ...
- html css调用自定义字体,css怎么自定义字体?
css自定义字体的方法步骤:1.下载所需字体,并将下载的字体文件放入font文件夹中.2.使用css的@font-face规则引入下载的字体即可使用自定义的字体了. css自定义字体的方法详解: 1. ...
- 第35篇-某众点评字体CSS加密分析
提前声明:该专栏涉及的所有案例均为学习使用,如有侵权,请联系本人删帖! 文章目录 一.基本流程 二.发现woff文件 三.查看woff文件 四.确定woff文件 五.python读取woff 六.分析 ...
- 文字05 自定义字体
自定义字体 CSS3引入的@font-face,让我们为我们的文本引入自定义字体,指定的字体可以从远程服务器或者用户本地安装的字体加载.@font-face规则不仅仅可以使用在CSS的顶层,还可以用在 ...
- 控制元素显示和隐藏的方式及区别、内容溢出处理(区域滚动)、透明性、字体图标、常见字体、自定义字体设计、网站图标、CSS代码分析
元素的显示与隐藏: 常见控制元素的显示和隐藏的属性有display.visibility.overflow,需要清楚的理解三者之间的区别. display显示: 当值为none时为销毁对象,不保留原位 ...
- html中css如何引用自定义字体 - 案例篇
html中css引用自定义字体,实现自定义字体样式效果(含案例) 网页中不同的字体,代码是怎么定义的?怎么引用外来字体文件? html 案例 · 代码如下: <!DOCTYPE html> ...
- python爬虫反爬 css 知乎 专栏_python爬虫反反爬 | 像猫眼电影、大众点评等自定义 css 加密字体怎么破?...
我们上次说了如何建立反反爬 当时还新建一个简单的帅b网页 具体可以戳以下链接 现在你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 &qu ...
- html字体整体偏移,CSS自定义字体垂直偏移(错误?)
ScottS.. 5 你可能没有做错任何事情.以下是一些可能适用的要点,有些可以由您控制,有些则不可以. 只是为了确定,明确设置vertical-align: baseline. 不同的文件(.eof ...
- 【前端学习之HTMLCSS进阶篇】-- CSS第一篇 -- @规则与web字体图标
[前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 文章目录 [前端学习之HTML&CSS进阶篇]- CSS第一篇 - @规则与web字体图标 前言 一. ...
最新文章
- 如何优雅的使用Mock Server
- 2021 4 21 管理心得
- 不同型号服务器如何做双击热备,服务器做双机热备教程
- Java高并发编程详解系列-Guarded Suspension设计模式
- 产品 观察体会微信界面心得(一)
- sql server中的架构,模式,用户,角色,登录名,所有者,登录名,dbo之间的关系
- 3. Python脚本学习笔记三字符串
- 弱网测试究竟要怎么做,才能防止漏测?
- activity_manager_server
- 出行助手Vue项目中高德API的使用
- mysql以及DBeaver的使用
- 文化传播有限公司网站源码dian
- C#实现压缩与解压缩方案
- 如何将网址链接生成在微信可用的网址二维码
- c语言中求奇数的简单代码
- html5css背景色代码,background css背景
- 游戏设计模式之策略模式(二)
- 优雅代码 - 业务层代码命名
- LoRa与NB各领风骚,激荡百亿级物联网连接
- 微机原理第十章 A/D转换与D/A转换
热门文章
- 2010北京联合大学计算机答案,2010年、2011年单考单招考试练习题 - 特殊教育学院- 北京联合大学.doc...
- 如何让多个div横向排列而不换行
- STM32—驱动HC-SR04超声波测距模块
- EEG在注意力、记忆方面的原理与应用
- 极坐标格式算法(PFA)-SAR成像算法系列(六)
- 在php中加css_如何使用php脚本给html中引用的js和css路径打上版本号
- 2d 3d旋转和平移的矩阵分析
- gomod问题寻不到
- 2020 最新MySQL 安装及建议(小白操作)
- 新电脑重装系统好吗?电脑重装系统的好坏