python爬虫加密空间_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...

接下来就是

学习 python 的正确姿势

bb019fa61ca81831bd4d71f72b3a99e1.png

有人说了

不就是把字体通过 unicode 编码吗?

9106ec1365e34883bb1484374fdde61d.png

那就简单了啊

把每个字的编码找到

然后使用字典把编码和对应的字对应起来

抓取分析的时候

直接替换不就得了

46345e1de4df6a31faca27ca31e8b545.gif

有道理是有道理

但是

如果我每次返回给你的编码都不一样呢?

你说死不死

e90000eedaaab766668adefd4312539b.png

好了好了,先别哭得那么舒服

我们来看看天猫电影票房榜单的页面

https://maoyan.com/board/1

97f5ab7542e1ac3efaa66c8d87645326.png

d1ccdb42a9e5270cd255851a2c3d8938.png

正如你所看到的那样

这里也使用了字体加密

通过源代码我们可以看到

font-face这里制定了字体文件路径

00dd1f0815dc6084ed6c2223f8f235ec.png

还是熟悉的配方

熟悉的味道~

3cf304d05dfb05bc988c0b596329ab93.png

不过小老弟

还是不要开心太早

刷新几次你就会发现

(盯着下图 2 秒钟)

29ec9d7e10ab2c1aef35439bcf970bb0.gif

看到没有

字体文件一直在变

woc!

玩呢?

804f6bb5ad58d41754733467199e7a15.png

c477665c7a697c7697789bc0995b356e.png

我们先把字体文件下载下来

# 把整个页面搞下来

url = 'https://maoyan.com/board/1'

html = download_html(url).decode('utf-8')

用正则把字体文件名拿一下

font_file_name = re.findall(r'//vfile.meituan.net/colorstone/(w+.woff)', html)[0]

拿到了文件名之后就构建一下url

然后把字体文件下载下来

url = 'http://vfile.meituan.net/colorstone/' + font_file_name

font_file = download_html(url)

接着把字体文件写到本地文件中

with open('fonts/' + font_file, 'wb') as f:

f.write(new_file)

使用 fontTools 来获取字体

如果你之前没安装的话要安装才能用

接着我们把字体文件保存为 xml

font = TTFont('fonts/' + font_file)

font.saveXML('./'+font_file+'.xml')

ea46962c24235cbe704e6f797fc32898.png

快打开打开看看

330c0f00f40f18901ccc84e6f32539be.png

哇,这些玩意

有点眼熟啊

这不就是加密的 unicode 码么

左边的 id 难道就是对应的数字?

cb501e81e5ca9a2e353ce619fdceb9e6.png

恩没那么简单

就能找到聊得来的伴

尤其是在看过了那么多背叛

总是....

26fdb7a54f645cccd33c492c1e985c7a.png

不好意思

走错片场了

回到我们刚刚的 xml 文件

往下拉一下

可以看到这个

09441450fedec8d05737f08b23f49ed9.png

这里每一个编码都对应一个 TTGlyph 对象

从各种 x y 坐标可以猜测

它应该是用来绘制一个字的

我们把任意一个对象复制一下

然后用 matplotlib 根据坐标画个图试试看

import matplotlib.pyplot as plt

import re

str = """"

.....此处省略一点代码

"""

x = [int(i) for i in re.findall(r'

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值