大众点评网站字体反爬解决方案

大众点评网站字体反爬解决方案

以赣州美食栏目为例 https://www.dianping.com/huizhou/ch10

通过查看页面元素,此处的评论条数、人均消费都是通过字体的形式进行转换的。我样查看源代码数字显示的是这种编码格式的。

UntitledImage

 

UntitledImage

通过相看页面元素相应的样式表,可以发现,上面数字对应的样式使用了字体。

UntitledImage

既然是字体的缘故,我们就把相应的woff下载下来,使用百度开源的字体编辑工具(fontEditor)查看

UntitledImage

通过与上方页面源代码中的数字代码与字体中的编码作比较,可以发现两者后四位是相同的。

大众点评网站中的字体虽然每次刷新的时候都会是新的字体文件,但有一点是不变的,就是字体中文字是固定的(如果后期改成非固定文字就难搞了)。

font_text = ["", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "店", "中", "美", "家", "馆", "小", "车", "大",
"市",
"公", "酒", "行", "国", "品", "发", "电", "金", "心", "业", "商", "司", "超", "生", "装", "园", "场", "食", "有",
"新",
"限", "天", "面", "工", "服", "海", "华", "水", "房", "饰", "城", "乐", "汽", "香", "部", "利", "子", "老", "艺",
"花",
"专", "东", "肉", "菜", "学", "福", "饭", "人", "百", "餐", "茶", "务", "通", "味", "所", "山", "区", "门", "药",
"银",
"农", "龙", "停", "尚", "安", "广", "鑫", "一", "容", "动", "南", "具", "源", "兴", "鲜", "记", "时", "机", "烤",
"文",
"康", "信", "果", "阳", "理", "锅", "宝", "达", "地", "儿", "衣", "特", "产", "西", "批", "坊", "州", "牛", "佳",
"化",
"五", "米", "修", "爱", "北", "养", "卖", "建", "材", "三", "会", "鸡", "室", "红", "站", "德", "王", "光", "名",
"丽",
"油", "院", "堂", "烧", "江", "社", "合", "星", "货", "型", "村", "自", "科", "快", "便", "日", "民", "营", "和",
"活",
"童", "明", "器", "烟", "育", "宾", "精", "屋", "经", "居", "庄", "石", "顺", "林", "尔", "县", "手", "厅", "销",
"用",
"好", "客", "火", "雅", "盛", "体", "旅", "之", "鞋", "辣", "作", "粉", "包", "楼", "校", "鱼", "平", "彩", "上",
"吧",
"保", "永", "万", "物", "教", "吃", "设", "医", "正", "造", "丰", "健", "点", "汤", "网", "庆", "技", "斯", "洗",
"料",
"配", "汇", "木", "缘", "加", "麻", "联", "卫", "川", "泰", "色", "世", "方", "寓", "风", "幼", "羊", "烫", "来",
"高",
"厂", "兰", "阿", "贝", "皮", "全", "女", "拉", "成", "云", "维", "贸", "道", "术", "运", "都", "口", "博", "河",
"瑞",
"宏", "京", "际", "路", "祥", "青", "镇", "厨", "培", "力", "惠", "连", "马", "鸿", "钢", "训", "影", "甲", "助",
"窗",
"布", "富", "牌", "头", "四", "多", "妆", "吉", "苑", "沙", "恒", "隆", "春", "干", "饼", "氏", "里", "二", "管",
"诚",
"制", "售", "嘉", "长", "轩", "杂", "副", "清", "计", "黄", "讯", "太", "鸭", "号", "街", "交", "与", "叉", "附",
"近",
"层", "旁", "对", "巷", "栋", "环", "省", "桥", "湖", "段", "乡", "厦", "府", "铺", "内", "侧", "元", "购", "前",
"幢",
"滨", "处", "向", "座", "下", "県", "凤", "港", "开", "关", "景", "泉", "塘", "放", "昌", "线", "湾", "政", "步",
"宁",
"解", "白", "田", "盯", "溪", "十", "八", "古", "双", "胜", "本", "单", "同", "九", "迎", "第", "台", "玉", "锦",
"底",
"后", "七", "斜", "期", "武", "岭", "松", "角", "纪", "朝", "峰", "六", "振", "珠", "局", "岗", "洲", "横", "边",
"济",
"井", "办", "汉", "代", "临", "弄", "团", "外", "塔", "杨", "铁", "浦", "字", "年", "岛", "陵", "原", "梅", "进",
"荣",
"友", "虹", "央", "桂", "沿", "事", "津", "凯", "莲", "丁", "秀", "柳", "集", "紫", "旗", "张", "谷", "的", "是",
"不",
"了", "很", "还", "个", "也", "这", "我", "就", "在", "以", "可", "到", "错", "没", "去", "过", "感", "次", "要",
"比",
"觉", "看", "得", "说", "常", "真", "们", "但", "最", "喜", "哈", "么", "别", "位", "能", "较", "境", "非", "为",
"欢",
"然", "他", "挺", "着", "价", "那", "意", "种", "想", "出", "员", "两", "推", "做", "排", "实", "分", "间", "甜",
"度",
"起", "满", "给", "热", "完", "格", "荐", "喝", "等", "其", "再", "几", "只", "现", "朋", "候", "样", "直", "而",
"买",
"于", "般", "豆", "量", "选", "奶", "打", "每", "评", "少", "算", "又", "因", "情", "找", "些", "份", "置", "适",
"什",
"蛋", "师", "气", "你", "姐", "棒", "试", "总", "定", "啊", "足", "级", "整", "带", "虾", "如", "态", "且", "尝",
"主",
"话", "强", "当", "更", "板", "知", "己", "无", "酸", "让", "入", "啦", "式", "笑", "赞", "片", "酱", "差", "像",
"提",
"队", "走", "嫩", "才", "刚", "午", "接", "重", "串", "回", "晚", "微", "周", "值", "费", "性", "桌", "拍", "跟",
"块", "调", "糕"]

我们就可以通过TTFont获取字体文件中的编码,然后将前三位(uni)替换为&#x,然后再根据字体编码与文字对应关系进行映射,这样就可以得到最终的数字了。

 

今天先写一下思路,改天整理一下代码。

posted @ 2021-11-20 21:25  逸乐太子  阅读(440)  评论(0编辑  收藏  举报