返回
反爬攻防实战:破解JS逆向字体反爬
后端
2023-10-13 22:39:15
前言
在现代网站中,字体反爬是一种常见的防爬措施。通过修改字体文件,可以隐藏重要信息,从而阻碍爬虫获取页面内容。本篇文章将通过一个实际案例,向大家详细讲解字体反爬的破解方法。
字体反爬原理
字体反爬的原理很简单,就是将页面中使用的字体文件进行修改,加入自定义字符或特殊编码,使爬虫无法正确解析字体内容。例如,将数字字符修改为不同的形状或颜色,或者加入特殊编码,导致爬虫无法识别。
JS逆向破解
为了破解字体反爬,我们需要逆向分析网站的JS代码,找到字体文件的加载方式和解析方法。具体步骤如下:
- 打开目标网页,使用浏览器调试工具(如Chrome DevTools)查看网络请求。
- 找到加载字体文件的请求,通常是
.woff
或.ttf
文件。 - 在调试工具中设置断点,在加载字体文件时触发。
- 分析断点处的代码,找到字体文件加载和解析的逻辑。
实战案例
我们以某招聘网站的字体反爬为例,该网站使用了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工具反编译字体文件。步骤如下:
- 下载TTFUnpack并将其解压。
- 将字体文件拖放到TTFUnpack窗口中。
- 点击"Extract"按钮提取字体文件内容。
反编译后的字体文件是一个XML文件,里面包含了字体的元数据和轮廓信息。
修改字体文件
修改字体文件的步骤如下:
- 在XML文件中找到包含数字字符的
cmap
表。 - 修改
cmap
表中数字字符的映射,将自定义字符映射回原来的数字字符。 - 保存修改后的XML文件。
重新编译字体文件
可以使用TTFCreator工具重新编译字体文件。步骤如下:
- 下载TTFCreator并将其解压。
- 将修改后的XML文件拖放到TTFCreator窗口中。
- 点击"Compile"按钮编译字体文件。
重新加载字体文件
最后,我们需要将编译后的字体文件重新加载到目标网页中。步骤如下:
- 打开目标网页的源代码。
- 找到加载字体文件的JS代码。
- 将base64编码的字体文件替换为编译后的字体文件。
验证破解效果
刷新目标网页后,即可看到字体反爬已被破解。爬虫可以正常解析页面内容,获取隐藏的信息。
总结
JS逆向字体反爬是一种常见的反爬措施,但可以通过逆向分析和修改字体文件来破解。通过学习本篇文章,大家可以掌握字体反爬的破解技巧,提升爬虫能力。