X点评,CSS字体加密问题

文章讲述了在进行网络爬虫时遇到的一种反爬策略,即关键信息被混淆在CSS样式中,通过Base64编码的字体文件来隐藏。作者详细描述了解密过程,包括找到混淆的样式,解码Base64字体文件,转换为ASCII,最终获取到页面的隐藏数据。文章使用C#语言进行了解密操作,并提到了Python中的TT_fonts库作为替代方案。
摘要由CSDN通过智能技术生成

最近做爬虫时候,遇到个比较头大的事儿,页面看到的信息,在源码内。。。是一坨坨不知道是什么东西的

。。。东西。。

在这里插入图片描述

也就是说,他把关键部分的信息。。不知道用什么原因混淆了。。

往常没有爬过这一类网站,所以算是第一次解决。

简单记录一下。。

  1. 既然它页面可以正常显示,那么肯定数据是拿到的,那么解析的方式不一样。。看一下元素样式,发现

在这里插入图片描述

这里一堆。。。secret 最像了。。加密嘛。当然如果不这么明显就挨个取消样式,看看去掉哪个后,界面不正常显示了,

那就找到了。。

  1. 既然是个样式,那么就去CSS里面搜一下,源码先找一找。。。

在这里插入图片描述

好家伙。。还挺看不起我,打个备注。。混淆。。字体文件被变成base64放在了页面里。当然也有些网站会放到CSS文件里面。或者引用 TTF 等字体文件。

  1. 接下来。。解密

在这里插入图片描述

base64 解密写入一个字体文件,验证下是不是我们需要的ttf文件

通过工具打开文件。。。我用多个是FontCreator
在这里插入图片描述

哦吼。。这一堆 9FA4 9EA3 的。。好像和我界面看到的还是不太一样。。看起来应该是被编码后的。。从源码贴出来,多试试几种编码,

发现是ASCII的。。。然后就差不多了。。

BinaryWriter bw;
try
{
    bw = new BinaryWriter(new FileStream("mydata1.ttf",
                    FileMode.Create));
}
catch (IOException e)
{
    Console.WriteLine(e.Message + "\n Cannot create file.");
    return;
}
bw.Write(decodedByteArray, 0, decodedByteArray.Length);
bw.Close();
 
 
var families = Fonts.GetFontFamilies(location: @"D:\WorkDir\worktest\DownloadTest\CodeEncrpy\bin\Debug\mydata1.ttf");
foreach (FontFamily item in families)
{
    var types = item.GetTypefaces();
    foreach (Typeface face in types)
    {
        GlyphTypeface glyph;
        face.TryGetGlyphTypeface(out glyph);
        IDictionary<int, ushort> dic = glyph.CharacterToGlyphMap;
        foreach (KeyValuePair<int, ushort> kp in dic)
        {
            Console.WriteLine(Ten2Hex(kp.Key.ToString()) + "        " + (kp.Value - 1));
        }
    }
}

这样输出了 ASCII码 和 值的对应关系。。然后。。就搞定了。这里用的是C# … PYTHON 里面好像直接用 TT_fonts 就好。挺牛B的

https://www.matools.com/code-convert-unicode 在线编码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值