python爬虫,记录一次字体反爬的过程

之前听说过这种比较厉害的手段,昨天算是领教到了,弄了大半天原理,寻找映射关系,看了好些个案例,有汽车之家,58同城,猫眼电影等案例。

其实,思路是大致一样的,寻找映射关系,总会有不变的地方。先看下网站源码和显示的区别。

在这里插入图片描述

每次刷新源码的数字都会变化,但是显示的数据是不变的。查看后发现是base64加密,自定义了字体,转换了数字,0-9,对应不一样的数字。下图就是自定义的字体的字符串,直接复制到最后括号")“之前,以”="号结束。

在这里插入图片描述

然后通过fonttools工具转换成字体文件(.ttf,woff)等文件形式。然后可以在百度字体编辑器打开查看(貌似打不开woff的文件ttf的不受影响)。
在这里插入图片描述

自定义了0-9的数字和英文的对应,在fonttools工具打开xml后是这样。看不懂没关系,可以多做一两个ttf文件打开做对比,看有什么不一样。
在这里插入图片描述
这里只发现了0-9位置是不变的,变化的就只有英文所对应的数字有变化。
在这里插入图片描述

到这里,我也没弄清楚,源代码的数字,怎么和以上的代码对应起来,有的字体文件的x,y坐标等都是有变化的。
在这里插入图片描述
我猜这应该是数字8的描述渲染了。那么对应的是哪一个数字?这里我还一头雾水,英文数字怎么和0-9对应的?我再打开了一个字体编辑做了对比。反反复复看了几个xml和字体编辑的字体。和网上大佬做过的案例怎么不太一样,后来我灵机一动,看了字体编辑,第一张和第二张图。

0–>five,0–>eight。1–>nine,1–>five,其他以此类推。

那么是不是意味着,0–>5或者0–>8对应?后来却是如我所想,那么只需要关注GlyphOrder,因为不同的ttf文件下,英文的one,等位置是变化的。这意味着。这里的顺序就是代表数字的对应。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值