首页 编程 软件学院 查看内容

python爬虫反爬,是怎样丧心病狂的 通过css加密让你爬不到的?

2019-10-20 10:05 |来自: 互联网 2330 0

摘要: 这次我们来说点爬虫稍微进阶一点的,关于如何破解 css 加密后的数据。别急,我们先站在对方的角度想一想,假如我们现在有一个网站、这个网站有些关键的数据信息、不想给别人那么轻易的爬取到,你会怎么做呢?(文末p ...
关键词: 字体 加密 就是 文件 数字 网站 大众 时候 路径

这次我们来说点爬虫稍微进阶一点的,关于如何破解 css 加密后的数据。

别急,我们先站在对方的角度想一想,假如我们现在有一个网站、这个网站有些关键的数据信息、不想给别人那么轻易的爬取到,你会怎么做呢?

(文末python全套视频教程赠送、建议看完 别走开)

一个可执行的方法,就是将关键数据通过 css 加密

这样的话,当别人通过 requests 来请求我们的网站的时候,返回的 HTML 里面就得不到关键的数据了

举个例子,简单写一个帅b的页面

这时候我们通过 requests 去请求

在这里请求的是本地的网页,所以需要挂载一下 FileAdapter

接着会得到这样的源代码

(应该这样写:

问题来了,怎么把帅b的个人信息搞一下、让返回的 HTML 里面拿不到呢、可以通过添加 css 来打乱顺序,就以「姓名」为例,来定义一个 css 的类元素

这里定义了两个属性,一个是用来将它移除屏幕,一个就是不要占了行高,反正就是用来隐藏我们的干扰信息,接着 HTML 就可以这样写

再来定义一个 css 属性

意思就是说:在 EFG 选择器的这个标签后追加内容,所以我们真正的代码就是这样

那么这时候普通用户看到的网页,是可以看到关键信息的

而这个时候,你来爬取得到的却是这样的

得到的结果是不是、可以让你懵逼一会了?

一些没耐心的人、看到这里应该就不打算爬下去了、哈哈哈...

当然了、这只是 css 一种反爬的思路,实际运用到项目中,还是有点复杂的,比如大众点评网站...那么接下来就是

来看看大众点评的广州按摩店,

假设你想爬取这些数据,你开兴冲冲的看它的源码

结果发现,我去,怎么数字变成一个方块?我们来看看它的 css

这里定义了一个 PingFangSC-Regular 的字体,猫腻应该就出在这里了!

我们去掉 css 定义的字体,可以看到数字也跟着消失

这个是时候你是不是好像发现了什么?来看看这个页面的源代码文件

每个数字都是变成了,开头的神秘代码。这个时候你是不是又好像发现了什么?

这其实就是一种 css 的加密方式!

加密自定义字体,让你爬取的时候拿不到关键的数据!

还是得先站在对方的角度,想想这种丧尽天良的方式,到底是怎么做到的呢?这就要从前端的开发说起了,下面请开始:

在我们的电脑里面,都有一些字体库,比如什么宋体啊,黑体啊等等,,,

所以你在上网的时候,看到的网页的字体都差不多,没有什么千差万别的情况,

但是有些公司想要自家的、网页上的文字更加炫酷一点,就是想要不一样、就是要显得牛逼。

比如苹果的官网,就整了一些自定义的字体

而要实现这种方式,在 css3 中定义字体和字体文件路径就可以使用了


@font-face {

font-family: "自定义字体的名称";

src: "自定义字体的路径"

}

接下来

就在一开始的帅b页面中

实现一下像大众点评这样的反爬吧

可以在以下链接下载苹方字体

https://github.com/zongren/font/raw/master/PingFang-SC-Regular.ttf

我们要对字体的数字加密,可以使用 fonttools 来提取数字


pip install fonttools

安装好了之后就可以使用,如下命令来提取了


pyftsubset /home/shuaib/Desktop/PingFang-SC-Regular.ttf --text="1234567890" --output-file="PingFang-Num.tty"

这里的

/home/shuaib/Desktop/PingFang-SC-Regular.ttf

是你下载的字体文件路径

--text="1234567890"

是你要提取的内容

--output-file="PingFang-Num.tty"

定义你提取后的字体文件

运行之后你在该路径下,就会生成一个新的字体文件了

打开看就都是数字啦

有了数字字体文件之后,接下来就是对字体加密了,以下这个网站可以对字体加密

http://fontello.com/

不过这个网站仅支持 svg 格式的

所以我们可以把 ttf 转化成 svg 格式

发现这个网站不错

https://convertio.co/zh/ttf-svg/

那就转化一波呗

下载下来之后,再回到 fontello、把 svg 拖进去

然后就变成这个样子

选中要加密的字

然后点击

Customize Codes

这时候就可以对字加密啦!接着点击右上角,下载加密后的字体文件

  • 那么现在
  • 我们就有了所需要的文件了

赶紧在帅b的页面试试看吧、首先定义一下,

我们自定义文件的路径和名称,比如这里我们的字体就叫帅b

接着我们就可以使用刚刚加密的 code 了

打开网页

可以看到数字正常显示

而源码

变成了方块了,字体也指向了shuaib

是不是和大众点评的一模一样了

现在你已经知道了对方的套路了,那么现在让你去爬取这样的网站,你知道怎么爬取吗?

本文就分享到这里了、让大家观看这么久也不容易,所以奉上些福利给大家

只转发并关注,私信小编“资料”即可免费获取Python的全套资料!

本文出处: https://www.toutiao.com/a6749320445327049224/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部