本文仅供学习。
还没有解过css加密,今天就来试一次,虽然也看过其他文章,但是自己动手解一遍熟悉的更快一些。

首先打开链接 http://www.dianping.com/shijiazhuang/ch10
刷新网页后分析页面,结果是加密的。既然知道了是css映射,那就直接把字体文件下载下来。这个总共有三个字体文件,对应三种标签,shopnum,tagname,address,如图

找到css文件(css文件名字会变,大概率就在前几个,名字是一堆英文字母加数字的,点开后看preview就一目了然) 看到每个分类后边都有一个woff文件,直接下载下来,并记好哪个文件对应哪个分类。

下载一个这个工具可以打开woff文件,链接 https://www.high-logic.com/FontCreatorSetup-x64.exe(这个是64位的)

然后随便打开一个woff文件,是这样的(文件名字我已经改成了对应的,方便记)

我先发一个对应好的
可以看到 在shopnum里边e61e 对应的是 4 ; e139 对应的是3。

然后按照流程:
1.请求到html
2.匹配所有的标签和加密字符 类似这样()
3.根据class选择是哪个woff里的字体 ,然后修改为解密后的字体
4.然后替换掉原来的html里的标签就可以

最后上代码:

#-*-coding:utf-8-*-
from fontTools.ttLib import TTFont
import requests,redef get_fond():count_font = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '店', '中', '美', '家','馆', '小', '车', '大', '市', '公', '酒', '行', '国', '品', '发', '电', '金','心', '业', '商', '司', '超', '生', '装', '园', '场', '食', '有', '新', '限','天', '面', '工', '服', '海', '华', '水', '房', '饰', '城', '乐', '汽', '香','部', '利', '子', '老', '艺', '花', '专', '东', '肉', '菜', '学', '福', '饭','人', '百', '餐', '茶', '务', '通', '味', '所', '山', '区', '门', '药', '银','农', '龙', '停', '尚', '安', '广', '鑫', '一', '容', '动', '南', '具', '源','兴', '鲜', '记', '时', '机', '烤', '文', '康', '信', '果', '阳', '理', '锅','宝', '达', '地', '儿', '衣', '特', '产', '西', '批', '坊', '州', '牛', '佳','化', '五', '米', '修', '爱', '北', '养', '卖', '建', '材', '三', '会', '鸡','室', '红', '站', '德', '王', '光', '名', '丽', '油', '院', '堂', '烧', '江','社', '合', '星', '货', '型', '村', '自', '科', '快', '便', '日', '民', '营','和', '活', '童', '明', '器', '烟', '育', '宾', '精', '屋', '经', '居', '庄','石', '顺', '林', '尔', '县', '手', '厅', '销', '用', '好', '客', '火', '雅','盛', '体', '旅', '之', '鞋', '辣', '作', '粉', '包', '楼', '校', '鱼', '平','彩', '上', '吧', '保', '永', '万', '物', '教', '吃', '设', '医', '正', '造','丰', '健', '点', '汤', '网', '庆', '技', '斯', '洗', '料', '配', '汇', '木','缘', '加', '麻', '联', '卫', '川', '泰', '色', '世', '方', '寓', '风', '幼','羊', '烫', '来', '高', '厂', '兰', '阿', '贝', '皮', '全', '女', '拉', '成','云', '维', '贸', '道', '术', '运', '都', '口', '博', '河', '瑞', '宏', '京','际', '路', '祥', '青', '镇', '厨', '培', '力', '惠', '连', '马', '鸿', '钢','训', '影', '甲', '助', '窗', '布', '富', '牌', '头', '四', '多', '状', '吉','苑', '沙', '恒', '隆', '春', '干', '饼', '氏', '里', '二', '管', '诚', '制','售', '嘉', '长', '轩', '杂', '副', '清', '计', '黄', '讯', '太', '鸭', '号','街', '交', '与', '叉', '附', '近', '层', '旁', '对', '巷', '栋', '环', '省','桥', '湖', '段', '乡', '厦', '府', '铺', '内', '侧', '元', '购', '前', '幢','滨', '处', '向', '座', '下', '県', '凤', '港', '开', '关', '景', '泉', '塘','放', '昌', '线', '湾', '政', '步', '宁', '解', '白', '田', '町', '溪', '十','八', '古', '双', '胜', '本', '单', '同', '九', '迎', '第', '台', '玉', '锦','底', '后', '七', '斜', '期', '武', '岭', '松', '角', '纪', '朝', '峰', '六','振', '珠', '局', '岗', '洲', '横', '边', '济', '井', '办', '汉', '代', '临','弄', '团', '外', '塔', '杨', '铁', '浦', '字', '年', '岛', '陵', '原', '梅','进', '荣', '友', '虹', '央', '桂', '沿', '事', '津', '凯', '莲', '丁', '秀','柳', '集', '紫', '旗', '张', '谷', '的', '是', '不', '了', '很', '还', '个','也', '这', '我', '就', '在', '以', '可', '到', '错', '没', '去', '过', '感','次', '要', '比', '觉', '看', '得', '说', '常', '真', '们', '但', '最', '喜','哈', '么', '别', '位', '能', '较', '境', '非', '为', '欢', '然', '他', '挺','着', '价', '那', '意', '种', '想', '出', '员', '两', '推', '做', '排', '实','分', '间', '甜', '度', '起', '满', '给', '热', '完', '格', '荐', '喝', '等','其', '再', '几', '只', '现', '朋', '候', '样', '直', '而', '买', '于', '般','豆', '量', '选', '奶', '打', '每', '评', '少', '算', '又', '因', '情', '找','些', '份', '置', '适', '什', '蛋', '师', '气', '你', '姐', '棒', '试', '总','定', '啊', '足', '级', '整', '带', '虾', '如', '态', '且', '尝', '主', '话','强', '当', '更', '板', '知', '己', '无', '酸', '让', '入', '啦', '式', '笑','赞', '片', '酱', '差', '像', '提', '队', '走', '嫩', '才', '刚', '午', '接','重', '串', '回', '晚', '微', '周', '值', '费', '性', '桌', '拍', '跟', '块','调', '糕']#评分shopnum_list = TTFont('shopnum_2a20.woff').getGlyphOrder()[2:]#标签tagname_list = TTFont('tagname_464f.woff').getGlyphOrder()[2:]#地址address_list = TTFont('address_09e4.woff').getGlyphOrder()[2:]for f_index,f_value in enumerate(count_font):shopnum_dict[shopnum_list[f_index].replace('uni','&#x') + ';'] = f_valuetagname_dict[tagname_list[f_index].replace('uni','&#x') + ';'] = f_valueaddress_dict[address_list[f_index].replace('uni','&#x') + ';'] = f_valuedef main():headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "max-age=0","Connection": "keep-alive","Cookie": "fspop=test; cy=24; cye=shijiazhuang; _lxsdk_cuid=1780fd116f7c8-0ec7a3b8d0b363-53e356a-1fa400-1780fd116f7c8; _lxsdk=1780fd116f7c8-0ec7a3b8d0b363-53e356a-1fa400-1780fd116f7c8; _hc.v=2acaf8e3-7981-fe66-af37-d4e3b3f417fa.1615173065; s_ViewType=10; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; Hm_lvt_602b80cf8079ae6591966cc70a3940e7=1615173065,1615251712; Hm_lpvt_602b80cf8079ae6591966cc70a3940e7=1615252991; _lxsdk_s=1781589955a-823-3a6-f0%7C%7C2","Host": "www.dianping.com","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"}url = 'http://www.dianping.com/shijiazhuang/ch10'response = requests.get(url,headers = headers).text#匹配出所有映射标签svgmtsi_lists = re.compile('(<svgmtsi class=".*?">.*?</svgmtsi>)').findall(response)#循环所有标签并替换为正常字体for svgmtsi_tag in svgmtsi_lists:svg_name = re.compile('<svgmtsi class="(.*?)">').findall(svgmtsi_tag)[0]font_key = re.compile('>(.*?)<').findall(svgmtsi_tag)[0]if svg_name == 'shopNum':  font_value = shopnum_dict[font_key]response = response.replace(svgmtsi_tag,'<svgmtsi class="shopNum">' + font_value + '</svgmtsi>')elif svg_name == 'tagName':font_value = tagname_dict[font_key]response = response.replace(svgmtsi_tag, '<svgmtsi class="tagName">' + font_value + '</svgmtsi>')elif svg_name == 'address':font_value = address_dict[font_key]response = response.replace(svgmtsi_tag, '<svgmtsi class="address">' + font_value + '</svgmtsi>')#最后匹配需要的数据就行了divs = re.compile('(<div class="txt">.*?<span class="comment-list">.*?</div>)',re.S).findall(response)for div in divs:title = re.compile('<h4>(.*?)</h4>').findall(div)[0]sorce = re.compile('<div class=".*?star_score_sml">(.*?)</div>').findall(div)[0]street = re.compile('<a href = ".*?" data-click-name="shop_tag_region_click" data-shopid=".*?".*?>(.*?)</a>').findall(div)[0]detail_address = re.compile('<span class="addr">(.*?)</span>').findall(div)[0]print(title)print(sorce)print(re.sub('<.*?>','',street))print(re.sub('<.*?>', '', detail_address))print('-------------------------------------')if __name__ == '__main__':shopnum_dict = {}tagname_dict = {}address_dict = {}#对应好字体get_fond()print('shopnum_dict',shopnum_dict)print('tagname_dict', tagname_dict)print('address_dict', address_dict)#抓取并替换main()

抓取结果:

破解大众点评 css加密相关推荐

  1. 一文搞定大众点评字体加密

    大众点评字体加密类型 数字加密 店铺类型加密 店铺地址加密 店铺电话加密 店铺评论加密 以上这些加密都是对以下这些字体进行加密 1234567890店中美家馆小车大市公酒行国品发电金心业商司超生装园场 ...

  2. Python爬虫大众点评字体加密评论采集!听说这个网站很难?

    前序 最近在研究反爬虫策略,写了一个大众点评评论采集的程序,途中遇到了一些坑有感而发分享给大家, 大众点评是基于css机制实现的字体加密技术来阻碍我的进行准确数据的抓取 正文 图1 根据图1我们可以看 ...

  3. 大众点评文字加密反爬Python

    本文将 大众点评字体反爬方法及完整程序进行注释讲解,亲测有效!!! 以下是将网页字体库使用forcontent字体软件制作 woff_list = '1234567890店中美家馆小车大市公酒行国品发 ...

  4. 破解大众点评token

    {"id":0,"name":"极炙·台灣精致炭火烤肉","branchName":""," ...

  5. 大众点评封ip,还字体加密?我直呼,就这啊!

    像旧巷子里的猫,我很自由,但没有归宿 假如csdn有创作激励该多好,那样就可以天天"水"博客了! 哈喽,大家好,上期给大家伙分享了一期微博数据的爬取 Python爬取微博评论数据, ...

  6. [586]使用requests来爬取大众点评

    看完本文,你可以: 1.了解大众点评的CSS反爬虫机制 2.破解反爬虫机制 3.使用requests即可正确获取到评论数,平均价格,服务,味道,环境数据,评论文本数据: 1.前言 在工作生活中,发现越 ...

  7. 大众点评评论抓取-CSS加密破解

    前言: 大众点评的评论信息做了前端字体加密,在PC端的展示数据是通过CSS来控制的,从网页上看不出来太大的区别,但是用普通的脚本取获取时,会发现数据是获取不到的,具体的源代码是下面这样的: 部分字体被 ...

  8. python爬取大众点评(破解加密--css加密)

    1.分析 接下来再看一种加密,css加密,以大众点评为例. 访问网址https://www.dianping.com/,搜索关键词比如洗浴,得到如下: 这里的url复制出来之后是这样的:https:/ ...

  9. 爬虫入门经典(二十一) | 破解CSS加密之爬取大众点评

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

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

    我们上次说了如何建立反反爬 当时还新建一个简单的帅b网页 具体可以戳以下链接 现在你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 &qu ...

最新文章

  1. 如何一眼就分辨出本科、硕士和博士?
  2. 运维工具SaltStack
  3. 也来谈谈RNN的梯度消失/爆炸问题
  4. Oracle第三课之PLSQL
  5. final关键字的深入理解
  6. mysql回滚与错误提示_对mysql事务提交、回滚的错误理解 – jae – 博客园
  7. Leetcode--174. 地下城游戏
  8. matlab编写文件格式,MATLAB程序设计教程(4)——MATLAB文件操作
  9. javaweb实训第四天上午——员工管理系统-JavaBeanELJSTLMVC思想
  10. hdu 2069 1 5 10 25 50 这几种硬币 一共100个(母函数)
  11. 数字图像相关基础知识
  12. python3安装详细教程
  13. matlab反激变换器仿真模型,基于MATLAB的反激变换器分析与设计-毕业设计.docx
  14. 计算机毕业设计JAVA家庭饮用水监测系统mybatis+源码+调试部署+系统+数据库+lw
  15. jbuilder的set!方法重构接口
  16. 公众号支付成功后执行ajax,真香,微信公众号支付完整流程案例
  17. GC8418 数字光纤音频解码芯片 光纤解码芯片 MS8412替代
  18. html z-index不显示,CSS3关于z-index不生效问题的解决
  19. java菜鸟2:java指令
  20. 动态路由id会拼接到地址栏中,如何获取这个id

热门文章

  1. 网站性能优化的10种方法
  2. 会员数据化运营应用场景与分析模型
  3. 华尔街持续唱多美股市场,微美全息发布VR设备领涨科技股
  4. 运行c程序的步骤及方法
  5. 隧道管廊UWB定位系统解决方案
  6. SPSS如何验证是否符合正态分布
  7. Android中获取并设置屏幕亮度
  8. PCA降维-原理(一)
  9. Can‘t update has no tracked branch
  10. 深入浅出的讲解傅里叶变换(原文作者 韩昊)