最近在写一个针对大众点评的爬虫框架。

本篇讨论大众点评搜索页的字体加密,相关代码也可以在github中找到。

首先查看加密:

请求回来后发现html源码为乱码。

所以我们的目标就是找到“乱码”和数字的映射,替换即可。

那么问题来了,哪来的这个映射呢?就是woff文件。

我们可以在查看器中观察到三个大众点评自带字体:

,我们根据链接下回来之后,使用fontcreater打开

我们获得了字体,把鼠标在字体上悬停就可以看到这个字体的代码了(因为悬停的悬浮窗截图没办法截到,就不展示了)。

那么怎么映射字体代码和上图中的代码呢(glyphxxx),这里使用了文字识别,将文字和代码识别出来,然后和文字编码进行匹配,最终获得了如下图这种映射:

这就解决了吗?好像并不是这么简单,在标签前还有一个class

而我们获取的文件也有三个woff文件,种种迹象表明,是有多种字体文件,最终我们找到了addredd shopNum、tagName三个字体文件,分别作了映射之后,运行程序。

发现并没有替换,大惊,什么情况?经过查看发现,大众点评的字体文件竟然是动态的——每次向客户端发送不一样的woff文件。

现在问题就又来了,怎样获得服务器向前端发送的不同woff文件?经过检查html源码,我们发现有一个带有图文混排css注释的css链接:

我们访问这个链接:

我们获得如下css:

@font - face

{font - family: "PingFangSC-Regular-shopNum";

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.eot");

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.eot?#iefix")

format("embedded-opentype"), url(

"//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.woff");}.shopNum

{font - family: 'PingFangSC-Regular-shopNum';}

@font - face

{font - family: "PingFangSC-Regular-reviewTag";

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/2c635423.eot");

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/2c635423.eot?#iefix")

format("embedded-opentype"), url(

"//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/2c635423.woff");}.reviewTag

{font - family: 'PingFangSC-Regular-reviewTag';}

@font - face

{font - family: "PingFangSC-Regular-address";

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/14e4766b.eot");

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/14e4766b.eot?#iefix")

format("embedded-opentype"), url(

"//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/14e4766b.woff");}.address

{font - family: 'PingFangSC-Regular-address';}

@font - face

{font - family: "PingFangSC-Regular-tagName";

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.eot");

src: url("//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.eot?#iefix")

format("embedded-opentype"), url(

"//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/67d9aaac.woff");}.tagName

{font - family: 'PingFangSC-Regular-tagName';}

我们可以发现,有4套链接,每一套中都有一个woff文件(也确实比我们之前找的3套要多,只不过reviewTag在这里面并没有使用)

那既然是动态发送,我们就需要动态解析了。

我们首先就是获取css链接,然后解析出woff文件,然后使用TTFont解析出xml文件,根据我们之前在fontCreator获得的映射,最终动态生成加密字体映射。

大众点评字体_【网络爬虫实战】解决大众点评搜索页面字体加密相关推荐

  1. python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...

    文章目录 实战背景 说到被翻拍最多的大概就是金庸先生的剧了,有华人的地方就会有金庸剧.而在他的多部小说中,翻拍次数最多的无疑就是<倚天屠龙记>了,而且次数已经高达十四次.最早的是1963香 ...

  2. Python3网络爬虫实战-38、动态渲染页面抓取:Splash的使用

    Splash 是一个 JavaScript 渲染服务,是一个带有 HTTP API 的轻量级浏览器,同时它对接了 Python 中的 Twisted和 QT 库,利用它我们同样可以实现动态渲染页面的抓 ...

  3. python爬虫实战一|大众点评网

    PS:如果不懂的可以看我的上一篇文章快速入门Python爬虫 阶段 类型 问题 需要做到 1 请求 网页数据在哪里? 发现网址url规律 2 请求 如何获取网页数据 先尝试使用requests成功访问 ...

  4. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  5. Python 网络爬虫实战:猫眼电影 38950 条评论数据告诉你《无名之辈》是否值得一看?

    11月16日,一部无流量明星.无大制作.无大IP的"三无"国产电影<无名之辈>上映后,竟然连续打败了超级英雄"毒液".会魔法的"神奇动物& ...

  6. Python 网络爬虫实战:去哪儿网旅游攻略图文爬取保存为 Markdown电子书

    接上回,<Python 网络爬虫实战:爬取<去哪儿>网数千篇旅游攻略数据>. 我们爬取到了数千篇的旅游攻略文章的数据. 但是事情还没有结束,对于大部分的人来讲,最希望得到的东西 ...

  7. python基础实例 韦玮 pdf_韦玮:Python网络爬虫实战解析

    2016年12月27日晚8点半,CSDN特邀IT专家.<Python系列实战教程>系列图书作者韦玮带来了主题为"Python网络爬虫反爬破解策略实战"的Chat交流.以 ...

  8. java爬取网页数据_Python网络爬虫实战(二)数据解析

    Python网络爬虫实战 (二)数据解析 本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站 ...

  9. python爬虫文件代码大全-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)...

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

  10. python代码大全p-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

最新文章

  1. python axis=0 axis=1的区别
  2. pytorch nms 放大缩小
  3. SQL数据库学习之路(五)
  4. windows bat脚本中调用Cygwin并执行命令
  5. sqlite 导入 mysql_SQLite 数据库的一些基本操作
  6. cad输入法自动切换_百度输入法 Linux 版本发布,支持 Ubuntu/Deepin
  7. 3 MIGO采购订单收货报错-表T169P,表目S001不存在
  8. poi导入excel日期处理_poi解析excel读取日期为数字的问题
  9. .Net程序测试阿里云OSS开放存储服务
  10. MapGIS Mobile开发
  11. android fastboot流程,FastBoot的使用步骤
  12. js 直接打开选择文件窗口_【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)...
  13. Vs code PIO一直loading
  14. 对象存储基本知识介绍
  15. 实话谈扶贫第一篇——教育扶贫
  16. 斯坦福的《机器学习》课程上线了
  17. 企业微信工作台集成CAS实现单点登录
  18. 服务器主板准系统怎么拆,主板准系统及电源装箱步骤完成_技嘉 GA-B85M-D3V_主板评测-中关村在线...
  19. 【2018.10.1】「JOI 2014 Final」年轮蛋糕
  20. 打工还是创业?思路决定出路!

热门文章

  1. proteus元件图片_proteus元件库
  2. mac下安装mysql 5.7.11卡住_Mac 安装mysql5.7 注意事项
  3. Python基础语法(if语句)
  4. 基于RV1126平台imx291分析 --- rkcif_mipi注册
  5. 毕业论文的6中降重方法
  6. 一千行代码铸造Terminal文本编辑器
  7. C语言猜数字游戏代码
  8. 牛客网剑指offer
  9. 公文中的六角括号怎么打?
  10. adsl密码查看器,宽带密码查看器,无广告,绿色版