大众点评数据信息获取——字体反爬

大众点评数据信息获取——字体反爬

大众点评的字体反爬算是比较常见的,这次来学习一下相关字体反爬的技巧

以店铺的评论页面和店铺列表页面进行研究,分别对应了css字体映射,woff字体加密的反爬虫手段。

1、店铺评论页——css字体映射(svg)

随便打开一个链接:http://www.dianping.com/shop/FU8Gnkledt9y1i4z/review_all

在这里插入图片描述
稍微观察一下,可以发现页面的地址、电话和评论信息都被加密了,对应的字体位置存在一些特殊占位符。

留意一下,<bb class="(.*?)"></bb> 包含的字符串和对应background的x和y,这是后面破解的关键。

打开background-image对应的svg的url:http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/eee044205859500312f0840923dd4c5f.svg

在这里插入图片描述
可以发现有个变化的y值和对应的字体列表,再和上面观察到的信息进行关联,思考一下。

嗯。。。这竟然变成了找规律。

很容易你可以发现,以“环”为例,background的x=98,y=115,svg页面的y值大于115的是130,“环”字就在这行的字体列表里,对应的索引位置为7(以0开始),而 x/字体宽度=98/14=7。好像对应上了,你可以多试几个。

类似的电话的svg,评论的svg都有类似的规律,其中评论的svg会比较复杂一点,还需要进一步转化。

电话的svg链接:http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/9f656bed3ded711077a8d01196a96a52.svg

评论的svg链接:http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/d2c16af28b455c50d1ebe852c633b65c.svg

代码完成之后的结果是这样的:

在这里插入图片描述

2、店铺列表页——woff字体加密

随便打开一个链接:http://www.dianping.com/xiamen/ch10/g112

在这里插入图片描述
观察一下,有个css跳转,点进去:http://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/49881bbea6acbfb62291c8bac193608b.css

在这里插入图片描述
我们要找的就是shopNum对应的woff链接,打开woff链接:http://s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/77b79df0.woff

发现这是一个下载链接,下载下来的woff文件拿去百度的在线字体编辑器打开:http://fontstore.baidu.com/static/editor/index.html

可能打不开,需要转化成ttf或者其他格式,也有很多在线的工具。

在这里插入图片描述
打开之后,可以发现每个字体对应的下标就是我们要找的class的text。网上有用图片识别库来识别出对应的字体字典列表,随便去百度一下吧。

但是,我们可以用fontTools库把woff转化为XML格式,然后来观察规律。

# 转化成xml文件
font = TTFont(filepath)  # 打开文件
font.saveXML(xml_path)  # 转换成 xml 文件并保存

源代码里对应数值3的文本为&#xe795,以xe795来观察。

可以发现,对应的id-1就是我们需要的正确数值。

(可能是这样吧,其中还有一些规律需要处理,不想麻烦的待会直接去看代码吧)

在这里插入图片描述
在这里插入图片描述
代码完成的结果是这样子的:

在这里插入图片描述

3、最后

github:https://github.com/downdawn/dzdp

声明:博客内容不得用于商业用途,仅做学习交流,如果侵犯了您的利益和权益,请私聊联系我,我将删除该博客。

谢谢。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值