字体(@font-face)防爬-学习记录


解析步骤

更新:2021-3-10 08:57:01

  1. 下载、加载woff文件
  2. 按百度字体编辑器解析结果,截图识别出汉字,按顺序复制出汉字列表
font = TTFont(woff_path)
base_word= list('这里是按顺序复制出的汉字')
  1. 提取uniname列表,结合2中的汉字列表,构成uni->汉字的映射
base_uniname = font.getGlyphOrder()[2:]
base_uniname_map_word = dict(zip(base_uniname, base_word))
  1. 提取$E->uni的映射
base_hex_map_uniname = font.getBestCmap()
  1. 由4,5构成$E->汉字的映射
dict_hex_map_word = {}
for k, v in base_hex_map_uniname.items():if not str(v).startswith('uni'):continuebase_hex_map_uniname[k] = base_uniname_map_word.get(v, '')str_k = hex(k)str_k1 = "<em class='iconfont'>&#x{};</em>".format(str_k[2:])# print(str_k1)dict_hex_map_word[str_k1] = base_uniname_map_word.get(v, '')



原网址:【http://www.dianping.com/shop/124413166】 ,对应位置数字和文字被加密

参考

1、针对@font-face反爬
2、第五章(上):诡异的字体

搜索关键字 “font-face

@font-face {font-family: <fontFamily>; /* 自定义的字体名称; */src: <source> [<format>][,<source> [<format>]]*;  /* 自定义的字体的存放路径、格式; */[font-weight: <weight>]; /*  是否为粗体 */ [font-style: <style>]; /*  定义字体样式,如斜体 */
}

在源码中没有找到, 那就打开开发者调试工具, 在Network中搜索 font 字体, 找到字体的url地址, 进行下载, url太长,使用md5压缩

dataBase64 = r'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'#我这里拿到的自定义字体是采用js使用base64硬编码在网页里面的
import base64
from fontTools.ttLib import TTFont
import iodata = base64.b64decode(s)
fonts = TTFont(io.BytesIO(data))
#从解析出来的xml找到对应字体编码的结构并读取出来
fonts.saveXML("text.xml")
print(fonts.getBestCmap())

download as 7260090a.woff
将图中url里面的内容复制,在浏览器新标签页面打开,会直接下载一个文件。使用FontCreator字体查看工具 ,可以看到隐藏字符都有一个对应的编码

在原地址页面中观察目标内容

观察完毕,代码解析

# pip3 install fonttoolsfrom fontTools.ttLib import TTFont# 解析字体文件,获取字体映射关系
def parse_font():font1 = TTFont(r"E:\workspace\20191029_zhaopin\7260090a.woff")keys, values = [], []for k, v in font1.getBestCmap().items():if v.startswith('uni'):keys.append(eval("u'\\u{:x}".format(k) + "'"))values.append(chr(int(v[3:], 16)))else:keys.append("&#x{:x}".format(k))values.append(v)
#     font1.saveXML('temp.xml')return dict(zip(keys, values))

截止到目前,并没有解决大众点评的解析,

参考1、 听说你爬回来的都是乱码?三个案例教你破解字体加密,这个说要建立2个列表:汉字列表和编码列表,然而这2个列表好像需要手动构建,持续搜索别的方法。是不是可以使用 ==> 网上搜到字典列表,可以用。
参考2、 反爬终极方案总结—字体反爬
参考2、 用matplotlib,画出坐标
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

2019-12-11 17:15:21-解决办法:

参考大众点评 数据爬取 (字体反爬)

1、获取woff(2个address.woff and num.woff)

通过观察,页面每次加载的css是同一个,意味着address和num的woff文件是仅有一套
手动下载woff文件,此处以address.woff 为例

2、加载woff文件,获取编码

addrFont = TTFont('address.woff') # 加载woff文件
addrFont.saveXML('addrFont.xml') # 转为xml文件,方便对比

3、构造目标字典

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

4、目标字典

numDict = {'&#xe3b1': '0', '&#xf4cb': '1', '&#xe211': '2', '&#xf72e': '3', '&#xf87b': '4', '&#xf57d': '5', '&#xebb3': '6', '&#xf2e0': '7', '&#xe7c3': '8', '&#xec91': '9'}
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
addrDict = {'&#xedbf': '店', '&#xe8bd': '中', '&#xe9fc': '美', '&#xf66c': '家', '&#xe2d4': '馆', '&#xf577': '小', '&#xea8f': '车', '&#xec62': '大', '&#xe968': '市', '&#xe6cf': '公', '&#xe47a': '酒', '&#xf898': '行', '&#xe7d7': '国', '&#xeded': '品', '&#xee0e': '发', '&#xf520': '电', '&#xea32': '金', '&#xf387': '心', '&#xe058': '业', '&#xe7ff': '商', '&#xe843': '司', '&#xf3c1': '超', '&#xec5c': '生', '&#xf8f1': '装', '&#xe0a7': '园', '&#xf188': '场', '&#xe72e': '食', '&#xe0a5': '有', '&#xf0e2': '新', '&#xec45': '限', '&#xe6aa': '天', '&#xf7dd': '面', '&#xeae6': '工', '&#xe8f0': '服', '&#xe0cd': '海', '&#xf515': '华', '&#xebc8': '水', '&#xea9c': '房', '&#xebaa': '饰', '&#xf54d': '城', '&#xecbc': '乐', '&#xed22': '汽', '&#xf0aa': '香', '&#xf8cc': '部', '&#xf6bc': '利', '&#xe1f3': '子', '&#xed97': '老', '&#xef7f': '艺', '&#xf0f0': '花', '&#xf34b': '专', '&#xf7af': '东', '&#xe8e3': '肉', '&#xf075': '菜', '&#xf0a8': '学', '&#xe937': '福', '&#xeae1': '饭', '&#xe4ad': '人', '&#xf46f': '百', '&#xeb2a': '餐', '&#xf6ba': '茶', '&#xf895': '务', '&#xeaac': '通', '&#xe211': '味', '&#xf13e': '所', '&#xe6ce': '山', '&#xe452': '区', '&#xf3ee': '门', '&#xeb41': '药', '&#xe5f4': '银', '&#xf8a4': '农', '&#xe195': '龙', '&#xeb37': '停', '&#xe37f': '尚', '&#xf49d': '安', '&#xf210': '广', '&#xf329': '鑫', '&#xf5bb': '一', '&#xea7a': '容', '&#xe578': '动', '&#xf7ed': '南', '&#xef9c': '具', '&#xeead': '源', '&#xe2bf': '兴', '&#xe622': '鲜', '&#xf513': '记', '&#xe9c7': '时', '&#xf8c6': '机', '&#xebe0': '烤', '&#xe3f6': '文', '&#xe317': '康', '&#xecd4': '信', '&#xed01': '果', '&#xf66a': '阳', '&#xe29d': '理', '&#xec1a': '锅', '&#xf0f9': '宝', '&#xec99': '达', '&#xe7c7': '地', '&#xec3f': '儿', '&#xf081': '衣', '&#xe448': '特', '&#xe3bc': '产', '&#xeb6c': '西', '&#xe44d': '批', '&#xf4f3': '坊', '&#xe303': '州', '&#xefbf': '牛', '&#xe92f': '佳', '&#xe455': '化', '&#xf75b': '五', '&#xe675': '米', '&#xeef5': '修', '&#xebf1': '爱', '&#xe01c': '北', '&#xe514': '养', '&#xe173': '卖', '&#xeca2': '建', '&#xe8cd': '材', '&#xeb4f': '三', '&#xe71a': '会', '&#xe150': '鸡', '&#xf309': '室', '&#xf3d3': '红', '&#xeac2': '站', '&#xebe8': '德', '&#xee97': '王', '&#xe6bc': '光', '&#xe236': '名', '&#xf822': '丽', '&#xf63c': '油', '&#xebfe': '院', '&#xe512': '堂', '&#xe7ab': '烧', '&#xec7c': '江', '&#xf6aa': '社', '&#xe389': '合', '&#xf55f': '星', '&#xf893': '货', '&#xeb53': '型', '&#xeb14': '村', '&#xe9f2': '自', '&#xf337': '科', '&#xf055': '快', '&#xeb95': '便', '&#xe3b9': '日', '&#xe7be': '民', '&#xe4bb': '营', '&#xf6e9': '和', '&#xe52a': '活', '&#xed67': '童', '&#xf1c6': '明', '&#xea6d': '器', '&#xe9ba': '烟', '&#xe11f': '育', '&#xe756': '宾', '&#xef6a': '精', '&#xe327': '屋', '&#xf1b7': '经', '&#xebc9': '居', '&#xeaf0': '庄', '&#xe000': '石', '&#xf1f7': '顺', '&#xed1a': '林', '&#xf128': '尔', '&#xe8b9': '县', '&#xe929': '手', '&#xe956': '厅', '&#xf66b': '销', '&#xe748': '用', '&#xf625': '好', '&#xedb1': '客', '&#xe3e7': '火', '&#xe9bc': '雅', '&#xe297': '盛', '&#xf1b2': '体', '&#xf899': '旅', '&#xe396': '之', '&#xe750': '鞋', '&#xe574': '辣', '&#xf06d': '作', '&#xf79a': '粉', '&#xf369': '包', '&#xf2fe': '楼', '&#xf56f': '校', '&#xefba': '鱼', '&#xe001': '平', '&#xe3d6': '彩', '&#xe515': '上', '&#xeff3': '吧', '&#xebd9': '保', '&#xeb45': '永', '&#xe651': '万', '&#xe3a0': '物', '&#xf779': '教', '&#xea6a': '吃', '&#xe550': '设', '&#xe42a': '医', '&#xe28a': '正', '&#xec33': '造', '&#xf517': '丰', '&#xf38f': '健', '&#xec5a': '点', '&#xe016': '汤', '&#xf5b4': '网', '&#xeb91': '庆', '&#xf55e': '技', '&#xe985': '斯', '&#xe6ec': '洗', '&#xefb3': '料', '&#xec86': '配', '&#xee3e': '汇', '&#xeb82': '木', '&#xf720': '缘', '&#xf89d': '加', '&#xf2f1': '麻', '&#xf4a6': '联', '&#xe360': '卫', '&#xf1b0': '川', '&#xf1fa': '泰', '&#xf733': '色', '&#xeb71': '世', '&#xf093': '方', '&#xe465': '寓', '&#xe7c3': '风', '&#xe49b': '幼', '&#xf5b8': '羊', '&#xebda': '烫', '&#xe0bc': '来', '&#xf841': '高', '&#xf8b6': '厂', '&#xf1c5': '兰', '&#xf8e3': '阿', '&#xf51d': '贝', '&#xf8f8': '皮', '&#xf7e7': '全', '&#xe8ef': '女', '&#xe0a8': '拉', '&#xf372': '成', '&#xe2a4': '云', '&#xe72a': '维', '&#xf707': '贸', '&#xf403': '道', '&#xe46b': '术', '&#xe92b': '运', '&#xe35d': '都', '&#xe284': '口', '&#xe464': '博', '&#xf25c': '河', '&#xea7b': '瑞', '&#xe68b': '宏', '&#xf342': '京', '&#xe0ee': '际', '&#xef1d': '路', '&#xf224': '祥', '&#xeabb': '青', '&#xeb7e': '镇', '&#xe358': '厨', '&#xe217': '培', '&#xe096': '力', '&#xe032': '惠', '&#xf573': '连', '&#xef3b': '马', '&#xf76b': '鸿', '&#xf32b': '钢', '&#xe8c6': '训', '&#xf61e': '影', '&#xf57f': '甲', '&#xef0f': '助', '&#xe50e': '窗', '&#xee2a': '布', '&#xea41': '富', '&#xe5fb': '牌', '&#xe9f5': '头', '&#xee98': '四', '&#xe685': '多', '&#xe468': '妆', '&#xebac': '吉', '&#xed9a': '苑', '&#xe90c': '沙', '&#xf5c5': '恒', '&#xe0fe': '隆', '&#xf3f6': '春', '&#xf46c': '干', '&#xf7c3': '饼', '&#xe7d0': '氏', '&#xf0e8': '里', '&#xe4aa': '二', '&#xf359': '管', '&#xe820': '诚', '&#xf1e6': '制', '&#xf085': '售', '&#xf850': '嘉', '&#xe8cb': '长', '&#xf776': '轩', '&#xe895': '杂', '&#xe8f9': '副', '&#xe1c1': '清', '&#xf7c6': '计', '&#xf112': '黄', '&#xe83d': '讯', '&#xeebe': '太', '&#xed62': '鸭', '&#xeb18': '号', '&#xf3a6': '街', '&#xe30e': '交', '&#xee4c': '与', '&#xec32': '叉', '&#xeda2': '附', '&#xf80f': '近', '&#xe9e8': '层', '&#xf407': '旁', '&#xeadd': '对', '&#xe792': '巷', '&#xf8bc': '栋', '&#xf03d': '环', '&#xe503': '省', '&#xe603': '桥', '&#xee10': '湖', '&#xebde': '段', '&#xf1c3': '乡', '&#xf443': '厦', '&#xf21c': '府', '&#xe2fc': '铺', '&#xf3cd': '内', '&#xf1f1': '侧', '&#xe9d7': '元', '&#xe439': '购', '&#xef9f': '前', '&#xe370': '幢', '&#xe266': '滨', '&#xe64a': '处', '&#xe291': '向', '&#xf2ee': '座', '&#xedd7': '下', '&#xf14b': '県', '&#xf327': '凤', '&#xedf4': '港', '&#xf69b': '开', '&#xf531': '关', '&#xe49e': '景', '&#xe099': '泉', '&#xe419': '塘', '&#xeb5a': '放', '&#xf1d2': '昌', '&#xf358': '线', '&#xe376': '湾', '&#xe2cb': '政', '&#xe7ae': '步', '&#xe0df': '宁', '&#xefc3': '解', '&#xf11c': '白', '&#xed15': '田', '&#xf396': '町', '&#xeeeb': '溪', '&#xefec': '十', '&#xec4f': '八', '&#xf08d': '古', '&#xf856': '双', '&#xf35f': '胜', '&#xeed6': '本', '&#xec47': '单', '&#xf008': '同', '&#xf2a9': '九', '&#xed04': '迎', '&#xe48a': '第', '&#xf39f': '台', '&#xe1f8': '玉', '&#xf67c': '锦', '&#xe476': '底', '&#xee48': '后', '&#xf4a1': '七', '&#xe416': '斜', '&#xf1f0': '期', '&#xe04c': '武', '&#xf7d6': '岭', '&#xe533': '松', '&#xe1ec': '角', '&#xf812': '纪', '&#xe2e8': '朝', '&#xe225': '峰', '&#xecb6': '六', '&#xf6de': '振', '&#xf09d': '珠', '&#xf1db': '局', '&#xe068': '岗', '&#xee29': '洲', '&#xf123': '横', '&#xf097': '边', '&#xe99d': '济', '&#xefe3': '井', '&#xe9df': '办', '&#xf610': '汉', '&#xe1bd': '代', '&#xec0f': '临', '&#xeca3': '弄', '&#xf4d4': '团', '&#xec10': '外', '&#xe7d1': '塔', '&#xe4de': '杨', '&#xe6d5': '铁', '&#xe55c': '浦', '&#xf7b1': '字', '&#xe269': '年', '&#xe187': '岛', '&#xee47': '陵', '&#xed78': '原', '&#xeb9e': '梅', '&#xf7f3': '进', '&#xf773': '荣', '&#xf2ff': '友', '&#xe061': '虹', '&#xf75c': '央', '&#xf7b0': '桂', '&#xe336': '沿', '&#xe11a': '事', '&#xec6f': '津', '&#xebf3': '凯', '&#xed58': '莲', '&#xf5b1': '丁', '&#xf214': '秀', '&#xf40e': '柳', '&#xef60': '集', '&#xed79': '紫', '&#xf658': '旗', '&#xed23': '张', '&#xeb7f': '谷', '&#xef2d': '的', '&#xeaca': '是', '&#xee5b': '不', '&#xeba0': '了', '&#xf2f2': '很', '&#xee87': '还', '&#xea7c': '个', '&#xf20c': '也', '&#xeeb7': '这', '&#xf67b': '我', '&#xf3b5': '就', '&#xf0de': '在', '&#xf371': '以', '&#xf697': '可', '&#xe1cd': '到', '&#xf18c': '错', '&#xea3a': '没', '&#xe995': '去', '&#xe00d': '过', '&#xf8f4': '感', '&#xe0f6': '次', '&#xe67d': '要', '&#xea5b': '比', '&#xf63f': '觉', '&#xe62c': '看', '&#xe3ef': '得', '&#xe6fa': '说', '&#xe870': '常', '&#xf78e': '真', '&#xf42f': '们', '&#xeca4': '但', '&#xe693': '最', '&#xea9a': '喜', '&#xeeff': '哈', '&#xf37a': '么', '&#xf553': '别', '&#xef4f': '位', '&#xf4f4': '能', '&#xef7b': '较', '&#xecb7': '境', '&#xe6f0': '非', '&#xe667': '为', '&#xf6a8': '欢', '&#xe207': '然', '&#xedd0': '他', '&#xe981': '挺', '&#xe836': '着', '&#xe8a2': '价', '&#xe74b': '那', '&#xf52c': '意', '&#xe0ad': '种', '&#xf609': '想', '&#xedde': '出', '&#xf580': '员', '&#xf4d3': '两', '&#xece2': '推', '&#xf795': '做', '&#xf4e5': '排', '&#xf43f': '实', '&#xe7dd': '分', '&#xe5ed': '间', '&#xe095': '甜', '&#xf458': '度', '&#xe2d5': '起', '&#xf3e7': '满', '&#xf1e0': '给', '&#xe14b': '热', '&#xe11c': '完', '&#xf722': '格', '&#xeed5': '荐', '&#xe87f': '喝', '&#xe6c9': '等', '&#xf263': '其', '&#xebc2': '再', '&#xecc3': '几', '&#xec17': '只', '&#xf01d': '现', '&#xe033': '朋', '&#xeb90': '候', '&#xf6d5': '样', '&#xf192': '直', '&#xe354': '而', '&#xf69d': '买', '&#xf85d': '于', '&#xeb94': '般', '&#xe813': '豆', '&#xefeb': '量', '&#xf72b': '选', '&#xec42': '奶', '&#xe136': '打', '&#xe846': '每', '&#xf0bb': '评', '&#xeeb1': '少', '&#xedec': '算', '&#xf03c': '又', '&#xec9d': '因', '&#xf6f3': '情', '&#xeb2c': '找', '&#xe610': '些', '&#xe2e0': '份', '&#xe0c5': '置', '&#xe1f0': '适', '&#xf8e8': '什', '&#xf2ed': '蛋', '&#xf7b3': '师', '&#xe56e': '气', '&#xf2a3': '你', '&#xea76': '姐', '&#xf814': '棒', '&#xe17c': '试', '&#xed6b': '总', '&#xe72b': '定', '&#xe531': '啊', '&#xf858': '足', '&#xf58e': '级', '&#xf876': '整', '&#xf653': '带', '&#xf0c3': '虾', '&#xe377': '如', '&#xf6a6': '态', '&#xe5aa': '且', '&#xf0fc': '尝', '&#xe49c': '主', '&#xe95a': '话', '&#xe340': '强', '&#xf16b': '当', '&#xf590': '更', '&#xf3f1': '板', '&#xee28': '知', '&#xe3fc': '己', '&#xe8e6': '无', '&#xf42b': '酸', '&#xf526': '让', '&#xe43a': '入', '&#xf525': '啦', '&#xeb11': '式', '&#xec77': '笑', '&#xf5ba': '赞', '&#xe1e0': '片', '&#xf2d4': '酱', '&#xf84b': '差', '&#xe63e': '像', '&#xf4a4': '提', '&#xea22': '队', '&#xed8f': '走', '&#xe352': '嫩', '&#xe080': '才', '&#xe443': '刚', '&#xefd0': '午', '&#xea17': '接', '&#xe43b': '重', '&#xeb55': '串', '&#xf1c0': '回', '&#xf333': '晚', '&#xe6eb': '微', '&#xe2ab': '周', '&#xf874': '值', '&#xf5d5': '费', '&#xeeb3': '性', '&#xeb1a': '桌', '&#xede5': '拍', '&#xebbd': '跟', '&#xf206': '块', '&#xe167': '调', '&#xecee': '糕'}

5、替换规则

def parseHtmlToGetCSSUrl2(companyInfoHtmlText=None):parseHtml = r"parseHtml.html"with open(parseHtml, 'r', encoding='utf-8') as f:fReadLines = f.readlines()companyInfoHtmlText = ''.join([text for text in fReadLines])assert companyInfoHtmlText, "html must is not None"companyInfoHtmlText = re.sub(r'[\n|\t]?', '', companyInfoHtmlText)# 替换 Numfor key in numDict:strReplace1 = "class=\"num\">{};".format(key)strReplace2 = "class=\"num\">{}".format(numDict[key])companyInfoHtmlText = companyInfoHtmlText.replace(strReplace1, strReplace2)# 替换 addressfor key in addrDict:strReplace1 = "class=\"address\">{};".format(key)strReplace2 = "class=\"address\">{}".format(addrDict[key])companyInfoHtmlText = companyInfoHtmlText.replace(strReplace1, strReplace2)

字体加密woff(@font-face)防爬-学习记录相关推荐

  1. Solidity学习记录——第二章

    Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...

  2. Solidity学习记录——第四章

    Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...

  3. 前端学习记录13-CSS-(滑动门技术,微信导航栏实现,淘宝轮播图实现,图标字体实现,过渡效果,获得焦点元素)

    前端学习记录13-CSS-滑动门技术,微信导航栏实现,淘宝轮播图实现,图标字体实现,过渡效果,获得焦点元素 滑动门技术 微信导航栏实现 静态轮播图实现 网上引用的图标字体设置 过渡效果(transit ...

  4. modelandview 可以返回html么_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...

    你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 "知己知彼,才能那啥" 那么对于像猫眼电影.大众点评等等 那样的 c ...

  5. python爬虫反爬对抗_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...

    你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 "知己知彼,才能那啥" 那么对于像猫眼电影.大众点评等等 那样的 c ...

  6. Python爬取58同城租房数据,破解字体加密

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于CSDN,作者:TRHX • 鲍勃 刚接触Python的新手.小白,可以复制下面的链 ...

  7. 爬取58同城,解决反爬字体加密解析问题

    [导语]我们在爬取数据中,会遇到字体乱码的下,其实是字体加密,本篇文章主要解决字体解密这种反爬方式. 1.在浏览器打开58同城网址进入北京租房 2.点击检查,找到房租价格对应位置,发现源码中价格部分是 ...

  8. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...

    (源码在上传的压缩包"[java学习记录]11.多线程实现阶乘计算(Thread类和Runnable接口)"中可看到,该压缩包可下载)java * 采用Thread类的子类实现线程 ...

  9. Python爬取58同城租房数据,完美解决字体加密

    前言 在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里 ...

  10. 爬虫入门到放弃系列07:js混淆、eval加密、字体加密三大反爬技术

    前言 如果再说IP请求次数检测.验证码这种最常见的反爬虫技术,可能大家听得耳朵都出茧子了.当然,也有的同学写了了几天的爬虫,觉得爬虫太简单.没有啥挑战性.所以特地找了三个有一定难度的网站,希望可以有兴 ...

最新文章

  1. XShell连接Deepin
  2. boost::python模块实现使用内置 python 数据类型创建 ndarrays 的示例,并提取成员变量的类型和值测试程序
  3. Android之adb jdwp获取debug版本app的进程Id
  4. Java Web-面试题
  5. bzoj3110树套树
  6. 体检异常率98%?数据分析告诉你如今的90后身体状况到底有多差?
  7. Entity Framework 4.1 Code First学习之路(二)
  8. VS2017(64位) Win32_Interop.lib ws2_32.lib 函数重定义
  9. Flutter自定义iconfont字体图标
  10. leo_物业收费管理系统
  11. python 将目录下的文件和子目录复制到指定文件夹
  12. Java 引用变量和实体变量
  13. 蓝牙相关学习:3.BLE协议物理层
  14. Jackson,Gson,Fastjson 的对比
  15. mp3格式如何转换为ogg
  16. 游戏建模基本流程(讲解建模经验)
  17. www.wolframalpha.com
  18. Windows找不到文件‘gpedit.msc‘。请确定文件名是否正确后,再试一次。
  19. ArcGIS10.2中文版下载与安装教程
  20. 新鲜出炉!最新CKA备考指南!!

热门文章

  1. 四川省内二本计算机公立好的大学排名,盘点四川省最好的几所二本大学
  2. STM32CubeMX+Keil+Proteus实现LED接电源跑马灯
  3. 什么是AHP 层次分析法?
  4. java实现开根号:牛顿迭代法
  5. 利用imageai做一个物体检测系统
  6. C语言入门--状态机编程
  7. python Only timezones from the pytz library are supported
  8. UE4蓝图 绑定输入
  9. UE激活(亲测有效,通过注册机激活)
  10. 当代移动通信发展四个阶段