现在的网站,处处都是反爬,我们这些爬虫的经常需要和他们斗智斗勇,就看谁更厉害。这不,就连字体也弄成了反爬,而且还不止一个网站,常见的就有猫眼和汽车之家。不过,字体反爬也没有用,毕竟我们会破!哈哈。
抖音的字体反爬是在一个分享个人主页的链接中,别的链接暂时没有测试,不过破了一个其他的也就破了。
分享主页可以这样获得:
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 个抖音大号的部分爬取代码:
上面的就是我需要存储的内容。
由于篇幅问题,其他的就不放出来了,想要源码的关注公众号进行获取
「以下内容,本人仅供学习交流,切勿用于商业用途」
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。