我们上次说了如何建立反反爬

当时还新建一个简单的帅b网页

具体可以戳以下链接

现在你已经知道了对方是

如何自定义字体加密的了

你要想去反反爬

你就要先站在对方的角度去思考问题

有句话这么说来着

“知己知彼,才能那啥”

那么对于像猫眼电影、大众点评等等

那样的 css 自定义字体加密

应该怎么破呢?

接下来就是

学习 python 的正确姿势

有人说了

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

那就简单了啊

把每个字的编码找到

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

抓取分析的时候

直接替换不就得了

有道理是有道理

但是

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

你说死不死

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

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

正如你所看到的那样

这里也使用了字体加密

通过源代码我们可以看到

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

还是熟悉的配方

熟悉的味道~

不过小老弟

还是不要开心太早

刷新几次你就会发现

(盯着下图 2 秒钟)

看到没有

字体文件一直在变

woc!

玩呢?

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

# 把整个页面搞下来

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')

快打开打开看看

哇,这些玩意

有点眼熟啊

这不就是加密的 unicode 码么

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

没那么简单

就能找到聊得来的伴

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

总是....

不好意思

走错片场了

回到我们刚刚的 xml 文件

往下拉一下

可以看到这个

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

从各种 x y 坐标可以猜测

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

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

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

import matplotlib.pyplot as plt

import re

str = """"

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

"""

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

哈哈

妈的,uniEA78 就是 3 !

那么其它的编码也是这个道理了

还记得 python爬虫20 | 小帅b教你如何识别图片验证码 吗?

我们把那十个编码都画一遍

然后识别成数字

再封装成字典不就好了?

好像这样做效率不高耶

有没有别的什么办法呢

我们再请求一下猫眼的字体文件

这次返回的文件又不同了

打开你会发现

返回的编码都不一样了

咋整捏

还记得我们刚刚绘制的 3 么?

我们来搜一下新下载的文件

是不是绘制 3 的坐标也是一样的呢

嘿嘿

仔细看下上面两张图里面的坐标

居然一模一样

也就是说

虽然编码的名称不同

但是

它们对象里面对应的内容是一样的

对不对?

灵感来了

就是这里了

从这里下手

我们在第一次请求字体文件的时候

把编码对应的数字先给找出来

然后记下来

那么以后再请求到不同的字体文件的时候

虽然得到的编码不同

但是我们可以根据对象对应的内容进行判断

从而就可以得出

新的编码和旧的编码指向同一个内容

那么这两个编码对应的数字就是一样的

代码走起~

第一次请求获取一个字体文件

打开 xml 获取到 unicode 编码

接着你可以通过绘制图的方式

或者通过 fontCreator 软件打开字体文件

或者通过字符去比对每个 unicode 代表的数字

然后

你就可以得到相应的数字

把它写到字典里面去

因为每次请求得到的字体编码都不同

所以上面这个就要作为我们的判断依据

当我们再请求的时候

如果得到的是和我们一开始请求

得到的字体文件一样的话

那就直接返回我们刚刚的字典

不相同的话

我们就要把新的字体文件下载下来

然后对每个编码的对象跟旧的字体文件的每个编码的对象比较

如果对象是相同的话

就把旧的编码所对应的数字赋给新的编码

因为网页上显示的是 这样开头的

所以我们也要跟着换一下

这时候运行

就会得到新的编码和对应的数字了

爽啊

有了这个之后

我想爬取具体数据对你来说不在话下了吧

这里就随便获取一个电影的实时票房来举例

简单粗暴的使用下正则

爬取到编码的时候我们转化一下

就是当编码和字典列表里面的编码有相同的

就替换成数字

运行之后

看下网页

没毛病

再爬取下总票房试试

ok

依然没毛病

扫一扫

学习 Python 没烦恼

免责声明

以上内容仅为技术交流

请勿采集数据进行商用

否则后果自负

与帅b无关

下回见

peace

python爬虫反爬 css 知乎 专栏_python爬虫反反爬 | 像猫眼电影、大众点评等自定义 css 加密字体怎么破?...相关推荐

  1. python爬取知乎标题_python爬虫 爬取知乎文章标题及评论

    目的:学习笔记 2.首先我们试着爬取下来一篇文章的评论,通过搜索发现在 response里面我们并没有匹配到评论,说明评论是动态加载的. 3.此时我们清空请求,收起评论,再次打开评论 4.完成上面操作 ...

  2. python爬虫反爬 css 知乎 专栏_反反爬虫系列(四)

    过完年,好了,咱们接着更新反反爬虫系列 至于之前有朋友表示出一下1688呀,x宝的反反爬虫 说实在的,阿里系的反爬虫很厉害,我自愧不能搞定. 比如x宝的登录,用了selenium + chrome的朋 ...

  3. python爬虫知乎点赞_Python爬虫爬取知乎小结

    最近学习了一点网络爬虫,并实现了使用Python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出 ...

  4. python爬虫知乎图片_python爬虫(爬取知乎答案图片)

    python爬虫(爬取知乎答案图片) 1.⾸先,你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例. 安装完成后,打开你电脑的终端(T ...

  5. python爬虫知乎图片_Python爬虫入门教程 25-100 知乎文章图片爬取器之一

    1. 知乎文章图片爬取器之一写在前面 今天开始尝试爬取一下知乎,看一下这个网站都有什么好玩的内容可以爬取到,可能断断续续会写几篇文章,今天首先爬取最简单的,单一文章的所有回答,爬取这个没有什么难度. ...

  6. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说

    本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...

  7. python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息

    网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...

  8. python爬取链家新房_Python爬虫项目--爬取链家热门城市新房

    本次实战是利用爬虫爬取链家的新房(声明: 内容仅用于学习交流, 请勿用作商业用途) 环境 win8, python 3.7, pycharm 正文 1. 目标网站分析 通过分析, 找出相关url, 确 ...

  9. python爬取京东手机参数_python爬虫——分页爬取京东商城商品信息(手机为例)...

    1.最近刚开始学习python   写了个爬虫练习,感觉主要是得会用F12查询网站结构代码.还涉及到反爬虫,每个网站都不一样,拿到的解析出的json数据格式也不同.得有些Web知识的基础才行. htt ...

最新文章

  1. ITFriend站点内測公測感悟
  2. 浅析在网站优化工作中是如何优化网站流量的?
  3. .NET开发Windows服务
  4. c和java哪个好学_编程入门学习c++和Java哪个比较好
  5. tracepro杂散光分析例子_光学系统杂散光分析(1)
  6. Python之Numpy的基础及进阶函数(图文)
  7. Python自制日常办公辅助工具之:批量视频截图,子集固定尺寸截图+序列化命名
  8. 笔记本内置键盘的外接改造(上篇)
  9. 聊天机器人之知识图谱 Freebase 简介
  10. chromecast 协议_因此,您刚刚获得了Chromecast。 怎么办?
  11. Bugzilla一些权限设置(bug,项目的权限)
  12. 七年级计算机课计划,初中信息技术教学计划范文(通用5篇)
  13. C语言中.c文件与.h文件 的使用-2020-12-27
  14. EduCoder-程序设计技术R(第四部分循环结构程序设计1)- 第1关:小球自由落体运动
  15. 控制工程实践(5)——线性控制系统的稳态误差(之二)
  16. 版本不兼容 请检查计算机的系统,解决安装系统提示此文件的版本与正在运行的windows版本不兼容...
  17. 计算机软件卸载不了怎么办,软件卸载不了,教您软件卸载不了怎么办
  18. Surface pro 4 使用心得
  19. 【精】MySQL免安装版详细教程
  20. 中国色—在线的中国传统颜色集锦

热门文章

  1. python find() 和 index() 方法
  2. 格式: echo -e \033[字背景颜色 字体颜色m字符串\033[0m
  3. 基于PaddleSpeech搭建个人语音听写服务
  4. Angular 组件类测试
  5. Citavi、Endnote、Mendeley 功能大比拼!到底哪一款才是众望所归的终极文献管理软件?
  6. T-SQL: DBCC CHECKALLOC
  7. 转载:chatbot聊天机器人技术路线
  8. 20211219 小信号建模——状态空间法
  9. [数学公式]等差数列求和
  10. Tomcat 环境变量