大众点评数据信息获取——字体反爬
大众点评的字体反爬算是比较常见的,这次来学习一下相关字体反爬的技巧
以店铺的评论页面和店铺列表页面进行研究,分别对应了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会比较复杂一点,还需要进一步转化。
代码完成之后的结果是这样的:
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
来观察。
可以发现,对应的id-1就是我们需要的正确数值。
(可能是这样吧,其中还有一些规律需要处理,不想麻烦的待会直接去看代码吧)
代码完成的结果是这样子的:
3、最后
github:https://github.com/downdawn/dzdp
声明:博客内容不得用于商业用途,仅做学习交流,如果侵犯了您的利益和权益,请私聊联系我,我将删除该博客。
谢谢。