本文主要帮助解决字体加密的反爬虫策略
一 需求
https://www.china.cn/buy/4432149572.html
二 分析请求
页面展示
显然是字体进行了加密,然后打开字体和其他看看有没有加载字体的资源文件,发现没有。
看响应内容
可以发现一个base64的字体文件。
三 实操
首先把base64转成文件
//BASE64解码成File文件
public static void base64ToFile(String destPath,String base64, String fileName) {
File file = null;
//创建文件目录
String filePath=destPath;
File dir=new File(filePath);
if (!dir.exists() && !dir.isDirectory()) {
dir.mkdirs();
}
BufferedOutputStream bos = null;
java.io.FileOutputStream fos = null;
try {
byte[] bytes = Base64.getDecoder().decode(base64);
file=new File(filePath+"/"+fileName);
fos = new java.io.FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
转成一个ttf字体文件
然后安装一个软件
打开可以看到
转义一下
<h2><span class=" secret">𐂧𐂨𐂥𐂦</span></h2>
<h2><span class=" secret">采购腰包</span></h2>
四 总结
整个流程大致分析了字体加密的解析方法。字体文件格式有多种可能需要转换格式,还有每个页面都有不一定字体文件,不能统一替换,需要对字体文件进行代码解析然后替换。