You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于特殊字体的HTML内容混淆原理及爬取绕过方案咨询

技术正式名称

这类反爬技术的正式名称为 Web字体混淆(Font Obfuscation),也常被称为动态字体映射反爬、字符字形替换反爬。

实现原理

你遇到的是这类混淆技术的典型实现,逻辑如下:

  • 网站后端会为每次请求动态生成独有的自定义字体文件:将需要展示的敏感内容(这里是比分数字)的字形,绑定到Unicode私有使用区(PUA)的无意义码位上,这些码位默认没有对应可显示的字符,直接抓取源码只会得到不可打印的畸形字符。
  • 页面返回的HTML内容中,比分位置直接填充上述私有区的乱码字符,同时动态生成对应@font-face CSS规则,关联本次生成的自定义字体文件,给比分元素绑定加载该字体的样式。
  • 浏览器渲染页面时,会加载对应自定义字体,用字体中定义的字形渲染乱码字符,人眼看到的就是正常的数字比分,但字符本身的编码仍是乱码,直接复制、抓取源码都无法得到有效内容。
  • 每次页面刷新后,字体ID、码位映射规则都会同步变更,避免爬虫通过固定映射表直接解析。

你示例中的代码就是这类实现的典型结构:动态类名.results-c-7kwd95ci绑定动态字体font-7kwd95ci,字体文件的ID和类名、字体名完全对应,每次刷新都会更换为新的随机串。

绕过方案

非浏览器自动化爬虫场景

完全可以绕过,步骤如下:

  1. 爬取页面时同步提取CSS中的@font-face规则,拿到当前页面对应的自定义字体文件下载地址,下载字体文件到本地。
  2. 使用fonttools等字体解析库解析字体文件,提取每个码位对应的字形轮廓特征。
  3. 提前准备好0-9十个数字的标准字形特征库,将下载字体中的每个字形和特征库做匹配,生成当前页面的乱码码位到真实数字的映射表。
  4. 用生成的映射表替换HTML中抓取到的乱码字符,即可得到真实的比分数据。

浏览器自动化场景

并非无法获取正确数据,有两类成熟方案可选:

  • 映射解析方案:和非自动化场景逻辑一致,在自动化脚本中同步提取字体文件生成映射表,替换源码中的乱码即可,效率远高于图像识别。
  • 轻量OCR方案:直接使用自动化工具截取比分元素的区域截图,针对规整的数字做轻量OCR识别,因为比分样式固定无干扰,识别准确率可以达到100%,实现成本更低。

内容的提问来源于stack exchange,提问作者RustedDart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:04