针对某眼电影加密字体的爬虫

  • 创作背景
  • 问题再现
  • 解决办法
  • 处理 woff 文件
  • 撸代码
  • 结尾

创作背景

  • 因为临近五一假期,涉及到外出游玩的事儿,本菜鸡就想去看一部好看的电影
  • 因为时间有限,只能看一部电影,导致我但迟迟无法决定看哪一部
  • 鉴于常在 某眼电影 上买票,所以就想去上边看看电影的数据,更好的比对一下性价比高的电影
  • 于是我就重拾手艺,给爷爬!!!

问题再现

  • 如图所示
  • 本来在页面上显示的是数字 8.3 ,可到了源码中就成了加密字符
  • 怎么解决呢?这是个好问题

解决办法

  • 首先我们得知道这是 用的什么方法 加密的
  • 看这里
  • 用的是这个 stonefont 字体样式
  • 那这个样式到底是个什么样的呢?
  • 我们可以通过下图圈圈地方的链接下载下来字体文件
  • 也就是这个字体文件
  • 这时候小伙伴们可能就会说,有了字体文件那要 怎么用 啊,有了这个文件,不会用也不行
  • 通过 这篇文章 我学到了 如何处理 woff 文件

处理 woff 文件

  • 因为python 生态 的强大,有各种各样的库可供我们直接使用,这次我们使用的是 fontTools 这个库
  1. 首先,我们要打开字体文件
from fontTools.ttLib import TTFont
font = TTFont("字体文件.woff")
  • 这时候,相同目录下会生成一个 '【文件名】.xml' 文件(文件名与字体文件名相吻合),也可通过 font.saveXML() 指定生成文件的文件名
  1. 其次,我们要获得 "uni" 字符列表
print(font.getGlyphOrder())


  1. 再次,获得 十六进制字符"uni" 字符的对应关系
print(font['cmap'].getBestCmap())
# cmap 包含了 十六进制字符 与 "uni" 字符的对应关系


  1. 然后,获得每个 "uni" 字符对应 绘制实际数字的各个点的坐标 (以字符 "uniF848" 为例)
print(font['glyf']['uniF848'].coordinates)


  1. 最后,十六进制实际显示的数字 映射关系是
{"0xe137": 8, "0xe343": 1, "0xe5e2": 4, "0xe7a1": 9, "0xe8cd": 5, "0xf19b": 2, "0xf489": 0, "0xf4ef": 6, "0xf848": 3, "0xf88a": 7}
  • (因为小生不才,所以我用 turtle 将这些点画出来,然后观看其图像判断实际数字,如果各位有什么更为简便的方法,可以自行尝试)

撸代码

  • 那么,万事俱备,只欠代码
  • 下面,上代码!!!
from fontTools.ttLib import TTFont
import jsonfont = TTFont("字体文件.woff")
r = {}
# 获得映射关系以后按照顺序设定数字字符串
nc = '6379180425'
# 获得 uni 字符与 数字 的对应关系
for i, c in enumerate(font.getGlyphOrder()[2:]):r[c] = int(nc[i])
# 获得 uni 字符与 十六进制字符串 的对应关系
mapping = font['cmap'].getBestCmap()
result = {}
for k in mapping:try:result[hex(k)] = r[mapping[k]]except:continue
def font_trans(unicode_str):s = ''for i in range(len(unicode_str)):# 是 unicode 字符串就转化为 16 进制,并获得对应的数字try:s += str(result[hex(ord(unicode_str[i]))])# 不是 unicode 字符串就直接添加except:s += unicode_str[i]return s
print(font_trans('\ue137.\uf848'))
  • 运行结果如下
  • 成功识别!!!



结尾

以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。

针对某眼电影加密字体的爬虫相关推荐

  1. Python3 爬虫实战 — 58同城武汉出租房【加密字体对抗】

    爬取时间:2019-10-21 爬取难度:★★★☆☆☆ 请求链接:https://wh.58.com/chuzu/ 爬取目标:58同城武汉出租房的所有信息 涉及知识:网站加密字体的攻克.请求库 req ...

  2. web爬虫——某电影网站字体反爬

    某电影网站字体反爬 爱好学习及分享,若文章侵权,优先联系本人删帖处理. 几个关键点 base字体文件分析 打开目标网页,找到woff文件链接 下载该woff文件,并在字体编辑器里打开 记录下数字与字符 ...

  3. 猫眼电影加密数字破解(爬取评分票房票价)

    title: 猫眼电影加密数字破解(爬取评分票房票价) toc: true date: 2018-07-01 22:05:27 categories: methods tags: 爬虫 Python ...

  4. Python 爬虫工程师必看,深入解读字体反爬虫

    字体反爬虫开篇概述 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这 ...

  5. pythonttf字体反爬虫_利用Python采集起点中文网小说,并解决字体反爬的问题

    个人比较喜欢看小说,于是乎想利用Python爬取小说网站--起点中文网,在Python编程爬取定位过程中遇到了Python反爬虫,咨询了我旁边的前端大神,说下方法 当前页面接口返回的html源码 当前 ...

  6. 快手字体反爬虫?请给我10分钟,让我破了他

    文章目录 前景摘要 字体反爬虫 突破字体反爬虫思路的探索 最终突破快手反爬虫代码 前景摘要 最近一个朋友问我,字体反爬虫的事,他发给我一个快手网站,我由于比较忙没回他,于是后来他说解决不了就要上scr ...

  7. 2020-10-17 教你如何破解猫眼(美团)的加密字体stonefont

    教你如何破解猫眼(美团)的加密字体stonefont 今天小编试图去爬取猫眼的电影信息,其中包括评分,票房以及有多少人打分等数据,但当我打开查看猫眼网页的源代码时,发现评分和我们在网页上所看到完全不一 ...

  8. Eclipse详细设置护眼背景色和字体颜色并导出

    Eclipse详细设置护眼背景色和字体颜色并导出 Eclipse是一款码农们喜闻乐见的集成开发平台,但是其默认的主题和惨白的背景色实在是太刺激眼球了.下面,将给大家详细介绍如何设置成护眼主题的方法,也 ...

  9. 深入细枝末节,Python的字体反爬虫到底怎么一回事

    内容选自 即将出版 的<Python3 反爬虫原理与绕过实战>,本次公开书稿范围为第 6 章--文本混淆反爬虫.本篇为第 6 章中的第 4 小节,其余小节将 逐步放送 . 字体反爬虫开篇概 ...

最新文章

  1. 嵌入式CGI开发之旅——CGI环境变量
  2. AJAX:Getting Started
  3. 嵌入式Linux学习问题解决记录
  4. php禁用cookie后session设置方法分析
  5. oracle的function的语法,Oracle function语法
  6. 2018.8.26 Spring自学如门
  7. v380怎么设置云存储_计算机网络云计算技术在应用中的不足及缺陷
  8. 查看本机的用户 net user
  9. [转载] Python 字典(Dictionary) get()方法
  10. 2019工程伦理慕课答案(2019秋)习题及期末答案
  11. 激光导航AGV最常见的控制算法有哪些?
  12. ipad pro能用python编程吗_涨知识!iPad还可以运行Python代码
  13. java小球落体问题_小球落体 -- 算法Java
  14. 中国最好的职业TOP10
  15. 磁盘一把锁一个感叹号_电脑C盘出现一把锁和黄色感叹号是什么原因,求大神赐教。...
  16. 【产品分析】曹操出行
  17. 【Django】开发日报_3_Day:员工管理系统-创建项目
  18. 应用GL823芯片自制的读卡器
  19. 湖北武汉机械员报考铁路机大型机械的管理建筑七大员报考
  20. 人脸识别实例-颜值打分系统简易版

热门文章

  1. Windows添加网络位置向导(即我的电脑中添加网络盘符)
  2. Python 接入飞书端口API - 实现共享空间的Excel更新
  3. 免费svn服务器,百度云开发者教程
  4. [Excel函数] AVERAGE函数 | AVERAGEIF函数 | AVERAGEIFS函数
  5. 玖月:如果真的能够穿越回到过去,我可能只会给自己一个微笑
  6. iA Writer for Mac(mac好用的写作软件)
  7. 树与图在索引上的区别
  8. 马耳他新规要求所有房产租赁合同在区块链上登记
  9. ACCESS备件管理数据库分类出入库改进
  10. 论接口自动化测试方法