现在的网站,处处都是反爬,我们这些爬虫的经常需要和他们斗智斗勇,就看谁更厉害。这不,就连字体也弄成了反爬,而且还不止一个网站,常见的就有猫眼和汽车之家。不过,字体反爬也没有用,毕竟我们会破!哈哈。

抖音的字体反爬是在一个分享个人主页的链接中,别的链接暂时没有测试,不过破了一个其他的也就破了。

分享主页可以这样获得:

1). 点击迪丽热巴个人主页

2).点击左上角

3).再点击左上角分享以链接方式复制

做完之后你就可以获得这样一条链接:http://v.douyin.com/NT5Nck/

在浏览器打开可以看到:

链接编程了这样:https://www.iesdouyin.com/sha...

根据经验很容易知道前面的参数就是用户的 id 号,后面的就是时间戳,可以去掉的。

有了这个页面之后怎么将个人主页的名称、粉丝、点赞量等爬下来呢?接下来就是教你这个,请继续往下看!

1. 分析破解反爬字体

打开开发者调试工具,很容易就可以看到数据所在的请求的链接

点击我们需要获取的粉丝数,你可以看到:

可以看到,字体都变成了正方形,很明显这个做了反爬。那我们再看看请求返回来的 html 信息。

可以看到一堆编码,而且都是数字变成了这样,所有抖音将这些数字的数据都做了字体进行映射,用了他们自己的字体,那我们可以看看开发者工具的 network 查看他所用的字体,一般都是 wolf 或者 ttf 结尾的,可以看到:

https://s3.bytecdn.cn/ies/res..._falcon/static/font/iconfont_9eb9a50.woff

在浏览器输入上面地址就可以下载该字体了。

下载完之后我们可以用 Python 的一个工具包 fontTools 来查看字体映射。

如果你没有这个包的话,可在命令行输入下面代码进行下载工具包:

pip install fontTools

使用 fontTools 将字体文件转为 XML 文件,下面为代码:

转换之后查看文件,你就可以看到之间的映射了,如下:

code 为我们在请求中显示的编码,name为映射,到我们需要找的是数字,num_ 代表的又是哪些数字呢?,如果你再找找,你会发现这个:

是不是感觉已经找到了,恭喜你,你被坑了,这个并不是,如果你第一次遇到的话,估计都会被它坑一次,这个并不是刚才的什么数字映射,只是一些 id 名字罢了。

这时就需要我们另借助一个字体软件了:FontCreator, 软件百度官网下载安装即可。

用这个软件打开字体,可以看到新大陆:

这个就是我们需要找的映射,配合上面在 XML 文件中找的映射,一起用,这个就破解了。

2.代码实现

用 Python 代码只需要把它们之间的映射搞清楚就行了,所以我们可以使用字典来保存这些数据。

这个就是在软件上看到的映射关系,再来弄弄在 XML 中的编码对应关系

通过一行一行地读取 XML 文件的内容,找出映射并存储在相应的字典中,这就可以了,大功告成。

3.其他数据的获取

我打算爬的是抖音的用户数据,先找了 1000 个抖音大号来爬取,接着会通过他们的粉丝列表再来爬取别的用户,这样就差不多能够把抖音的大多数用户获取了,具体怎样爬取粉丝列表,下篇文章告诉你!期待的就点个「好看」支持下?

下面是 1000 个抖音大号的部分爬取代码:

上面的就是我需要存储的内容。

由于篇幅问题,其他的就不放出来了,想要源码的关注公众号进行获取

「以下内容,本人仅供学习交流,切勿用于商业用途」


sergiojune
112 声望16 粉丝