返回

反爬攻防实战:破解JS逆向字体反爬

后端

前言

在现代网站中,字体反爬是一种常见的防爬措施。通过修改字体文件,可以隐藏重要信息,从而阻碍爬虫获取页面内容。本篇文章将通过一个实际案例,向大家详细讲解字体反爬的破解方法。

字体反爬原理

字体反爬的原理很简单,就是将页面中使用的字体文件进行修改,加入自定义字符或特殊编码,使爬虫无法正确解析字体内容。例如,将数字字符修改为不同的形状或颜色,或者加入特殊编码,导致爬虫无法识别。

JS逆向破解

为了破解字体反爬,我们需要逆向分析网站的JS代码,找到字体文件的加载方式和解析方法。具体步骤如下:

  1. 打开目标网页,使用浏览器调试工具(如Chrome DevTools)查看网络请求。
  2. 找到加载字体文件的请求,通常是.woff.ttf文件。
  3. 在调试工具中设置断点,在加载字体文件时触发。
  4. 分析断点处的代码,找到字体文件加载和解析的逻辑。

实战案例

我们以某招聘网站的字体反爬为例,该网站使用了JS逆向字体反爬技术。通过逆向分析,我们发现字体文件被加载到一个名为fonts.js的JS脚本中。

function loadFonts() {
  var font = new FontFace('font', 'url(data:font/woff;charset=utf-8;base64,...)');
  document.fonts.add(font);
}

loadFonts()函数中,字体文件被作为base64编码的数据加载。为了破解这种反爬措施,我们需要解码base64数据并反编译字体文件。

反编译字体文件

可以使用TTFUnpack工具反编译字体文件。步骤如下:

  1. 下载TTFUnpack并将其解压。
  2. 将字体文件拖放到TTFUnpack窗口中。
  3. 点击"Extract"按钮提取字体文件内容。

反编译后的字体文件是一个XML文件,里面包含了字体的元数据和轮廓信息。

修改字体文件

修改字体文件的步骤如下:

  1. 在XML文件中找到包含数字字符的cmap表。
  2. 修改cmap表中数字字符的映射,将自定义字符映射回原来的数字字符。
  3. 保存修改后的XML文件。

重新编译字体文件

可以使用TTFCreator工具重新编译字体文件。步骤如下:

  1. 下载TTFCreator并将其解压。
  2. 将修改后的XML文件拖放到TTFCreator窗口中。
  3. 点击"Compile"按钮编译字体文件。

重新加载字体文件

最后,我们需要将编译后的字体文件重新加载到目标网页中。步骤如下:

  1. 打开目标网页的源代码。
  2. 找到加载字体文件的JS代码。
  3. 将base64编码的字体文件替换为编译后的字体文件。

验证破解效果

刷新目标网页后,即可看到字体反爬已被破解。爬虫可以正常解析页面内容,获取隐藏的信息。

总结

JS逆向字体反爬是一种常见的反爬措施,但可以通过逆向分析和修改字体文件来破解。通过学习本篇文章,大家可以掌握字体反爬的破解技巧,提升爬虫能力。