IP代理软件,http代理,API提取-黑洞HTTP

黑洞HTTP

您的位置: 首页 > 新闻资讯 > 国内代理 > 正文

使用Python爬取猫眼电影

发布时间:2019年02月26日 来源:http://http.hunbovps.com/News/getList/catid/9/id/74.html

大数据时代,海量数据的获取离不开爬虫技术。再加上代理IP的帮助,爬虫技术的应用也就越来越广泛。下面一起来看一下一个有趣的实例——字体反爬。


字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的。


现在貌似不少网站都有采用这种反爬机制,我们通过猫眼的实际情况来解释一下。


下图的是猫眼网页上的显示:


使用Python爬取猫眼电影

检查元素看一下


使用Python爬取猫眼电影

这是什么鬼,关键信息全是乱码。


熟悉 CSS 的同学会知道,CSS 中有一个 @font-face,它允许网页开发者为其网页指定在线字体。原本是用来消除对用户电脑字体的依赖,现在有了新作用——反爬。


汉字光常用字就有好几千,如果全部放到自定义的字体中,那么字体文件就会变得很大,必然影响网页的加载速度,因此一般网站会选取关键内容加以保护,如上图,知道了等于不知道。


这里的乱码是由于 unicode 编码导致的,查看源文件可以看到具体的编码信息。


使用Python爬取猫眼电影

搜索 stonefont,找到 @font-face 的定义:


使用Python爬取猫眼电影

这里的 .woff 文件就是字体文件,我们将其下载下来,利用 http://fontstore.baidu.com/static/editor/index.html 网页将其打开,显示如下:


使用Python爬取猫眼电影


网页源码中显示的  跟这里显示的是不是有点像?事实上确实如此,去掉开头的 &#x 和结尾的 ; 后,剩余的4个16进制显示的数字加上 uni 就是字体文件中的编码。所以  对应的就是数字“9”。


知道了原理,我们来看下如何实现。


处理字体文件,我们需要用到 FontTools 库。


先将字体文件转换为 xml 文件看下:


使用Python爬取猫眼电影

打开 xml 文件


使用Python爬取猫眼电影

开头显示的就是全部的编码,这里的 id 仅仅是编号而已,千万别当成是对应的真实值。实际上,整个字体文件中,没有任何地方是说明 EA0B 对应的真实值是啥的。


看到下面


使用Python爬取猫眼电影


这里就是每个字对应的字体信息,计算机显示的时候,根本不需要知道这个字是啥,只需要知道哪个像素是黑的,哪个像素是白的就可以了。


猫眼的字体文件是动态加载的,每次刷新都会变,虽然字体中定义的只有 0-9 这9个数字,但是编码和顺序都是会变的。就是说,这个字体文件中“EA0B”代表“9”,在别的文件中就不是了。


但是,有一样是不变的,就是这个字的形状,也就是上图中定义的这些点。


我们先随便下载一个字体文件,命名为 base.woff,然后利用 fontstore 网站查看编码和实际值的对应关系,手工做成字典并保存下来。爬虫爬取的时候,下载字体文件,根据网页源码中的编码,在字体文件中找到“字形”,再循环跟 base.woff 文件中的“字形”做比较,“字形”一样那就说明是同一个字了。在 base.woff 中找到“字形”后,获取“字形”的编码,而之前我们已经手工做好了编码跟值的映射表,由此就可以得到我们实际想要的值了。


这里的前提是每个字体文件中所定义的“字形”都是一样的(猫眼目前是这样的,以后也许还会更改策略),如果更复杂一点,每个字体中的“字形”都加一点点的随机形变,那这个方法就没有用了,只能祭出杀手锏“OCR”了。

相关文章内容简介

1 使用Python爬取猫眼电影

大数据时代,海量数据的获取离不开爬虫技术。再加上代理IP的帮助,爬虫技术的应用也就越来越广泛。下面一起来看一下一个有趣的实例——字体反爬。字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的。现在貌似不少网站都有采用这种反爬机制,我们通过猫眼的实际情况来解释一下。下图的是猫眼网页上的显示:检查元素看一下这是什么鬼,关键信息全是乱码。熟悉 CSS 的同学会知道,CSS 中有一个 @font-face,它允许网页开发者为其网页指定在线字体。原本是用来消除对用户电脑字体的依赖,现在有了新作用——反爬。汉字光常用字就有好几千,如果全部放到自定义的字体中,那么字体文件就会变得很大,必然影响网页的加载速度,因此一般网站会选取关键内容加以保护,如上图,知道了等于不知道。这里的乱码是由于 [阅读全文]

热门标签

最新标签

推荐阅读

  1. 04

    2018-12

    爬虫如何获取IP池?你选择花钱还是花时间?

    为了获取大量的数据,许多爬虫都需要突破反爬虫机制以获取数据,其中最基础的是IP限制。爬虫一般都绕不过IP这个问题,为什么呢,这是因为在网络爬虫抓取信息的过程中,抓取频率高...

  2. 12

    2019-06

    代理ip软件哪个便宜又好用?

    代理ip软件哪个便宜又好用?随着互联网的快速发展,用户对于ip代理服务的需求也越来越多。然而如今市场上的ip代理服务是非常少见的,很多用户虽然想要使用ip代理服务,却很难找寻到合适

  3. 23

    2019-08

    爬虫如何使用代理IP让图片自动下载?

    Python爬虫的问世,节省了很多机械性的工作,当大批量的信息需要被爬取的时候,爬虫能够自动的进行下载,很大层度上提升了工作效率。那么Python爬虫如何使用代理IP帮助进行图片自动下载?

  4. 14

    2019-02

    爬虫攻略:网站在哪些地方设置反爬虫

    自有网络以来,就一直存在爬虫和反爬虫,越是大网站,越是成熟的网站,其反爬虫机制越完善,最初的IP限制,验证码限制,还有其他的限制,今天小编跟大家一起去了解下网站在哪些地方设

  5. 25

    2019-02

    使用网络爬虫可以做什么?

    使用网络爬虫可以做什么?大家对于网络爬虫最初的印象可能是搜索引擎,可以快速的搜索到我们需要的资料,并且展示出来。而很多做SEO人员在初初优化网站时,要记得如何做好网络的优化,

  6. 15

    2019-01

    细数通用网络爬虫的大致结构

    通用网络爬虫的结构大致可以分为页面爬行模块 、页面分析模块、链接过滤模块、页面数据库、URL 队列、初始 URL 集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。