diff --git a/2023/07/05/zhihu-aac-old/index.html b/2023/07/05/zhihu-aac-old/index.html index 7fab5e1..dcfc9c8 100644 --- a/2023/07/05/zhihu-aac-old/index.html +++ b/2023/07/05/zhihu-aac-old/index.html @@ -30,7 +30,7 @@ - + @@ -336,9 +336,7 @@
最近,知乎上线了针对专栏[1]中盐选文章的反爬系统,随后该系统也被运用在知乎回答页面中的盐选文章上。具体表现为爬取的文章内容中出现大量的错乱词汇。而在本篇文章中,我们将一步步带领各位解开这些乱码。在这个过程中,我们将对字体反爬有更深入的认识,并学到运用字体反爬时需要注意的问题。
来自知乎回答不被爱是一种什么样的感受? - 知乎
-- -
+
如图所示,在页面源码中出现了大量乱码,例如(原字,错字):[2]
观察上述现象,页面源码中的字,在被显示到页面后,居然变成了正确的字。因此我们初步推断知乎在该页面运用了字体反爬。
接下来我们打开 F12 -> Network 页面,选择 Font,观察知乎加载的字体。
-- -
+右键选择 Open in new tab 将字体保存下来。
-- -
+将字体后缀名改为 .ttf [3] 并打开。
-与正常字体对比,我们下载的字体明显替换了部分字体,这便是知乎用于反爬的字体了。接下来我们将分析这个字体并给出应对方案。
字体反爬的根本原理是替换原本的字为一个新字,再用字体将新字渲染为原字,这样对程序而言就只见到新字而不是旧字了,而用户看到的还是原本的内容。因此只要找到新字与原字间的对应关系便可解决该反爬。而要找到这个对应关系,抓住字体中各个字形的特征是必不可少的一环。
我们打开 FontDrop! 加载字体,向下翻,观察字形的特征。
-- -
+我们发现字形的 Glyph 为 uni662F 而 Unicode 为 65F6,接下来我们试着查询这两个十六进制数对应的字:
1 |
|