字体反爬,Python爬虫练习网站闪职网字体反爬练手解析!

字体反爬应该是比较常见的反爬手段了,常见于招聘网站平台,相信很多不少人都遇到过,特征比较明显,而且限制难度愈发增加,比如随机替换字体库。

字体反爬最关键的是确定字体库(前提),找到映射关系(关键),然后直接替换即可!

在学习实践lideSky字体反爬(第三题好像放弃了)的过程中找到一个替代的练手网站,闪职网,字体反爬比较简单,适合本渣渣这种新手练习学习使用。

efbd0f90ff7894326821ef9ca38098d2.png

练手网站:http://shanzhi.spbeen.com/

感谢作者提供练手网站平台!

特征:关键数字信息网页前端显示和网页源码显示不一致,网页源码显示一定规律的乱码特征

b5d4ba365ca6f183a6ab106c5079e7d3.png

需要说明的是该网站还有无限断点调试反爬,直接在该处永不断点解决!

e4bf1dbd26ce81d065116339247947be.png

2a658550c5dd3e8b2e9c4b8d0cb57369.png

为什么说这个字体反爬网站比较简单适合练手:

1.字体文件比较明显,就在网页开头的样式表中,而且字体文件单一,没有字体库,会随着网页刷新更换字体文件;

1475109bc314fe201d51001f093963d6.png

2.字体文件中字体映射关系一目了然,打开即可看到相应的映射关系,一目了然。

5f2462f3351afda4717a4a21b3d689f5.png

这里简单说下,字体文件打开及分享工具:

  1. 在线字体编辑器 :https://font.qqe2.com/

  2. 字体编辑软件 :FontCreator

  3. 如果需要通过python去读取识别字体文件里面的内容 :pip install fontTools ‐i  https://pypi.tuna.tsinghua.edu.cn/simple

最后在简单分享一个几个代码片段:

字体获取:

import requests
from fontTools.ttLib import TTFont


def get_ttf():
    url="http://shanzhi.spbeen.com/static/fonts/szec.ttf"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
    }
    response = requests.get(url=url, headers=headers, timeout=6)
    with open("szec.ttf",'wb') as f:
        f.write(response.content)

    print("保存字体文件成功!")

def get_xml():
    font = TTFont('szec.ttf')
    font.saveXML('szec.xml')

字体映射:

#映射
number_map = {
    "9F92":0,
    "9EA3":1,
    "993C":2,
    "958F":3,
    "9FA4":4,
    "9476":5,
    "9A4B":6,
    "9F64":7,
    "9FA5":8,
    "9E3A":9
}

月薪转换:

#转换月薪
def get_people_salarys(salarys):
    people_salarys=[]
    for salary in salarys:
        salary=salary.split(";")
        salary=salary[:-1]
        nums=""
        for key in salary:
            key=key[-4:]
            key = key.upper()
            num=number_map[key]
            print(key,num)
            nums=f'{nums}{num}'
        print(nums)
        people_salarys.append(f'{nums}¥/月')

    print(people_salarys)
    return people_salarys

招聘人数转换:

#转换招聘人数
def get_people_numbers(peoples):
    people_numbers=[]
    for people in peoples:
        key=re.findall(r' 招聘&#x(.+?);人',people)[0]
        key =key.upper()
        people_number=number_map[key]
        print(key,people_number)
        people_numbers.append(f'招聘{people_number}人')
    print(people_numbers)

    return people_numbers

以上仅供参考!

完整代码获取 

请关注本渣渣公众号

b861eaf0418b8a4122f39e918c32d3f9.jpeg

后台回复“闪职”

声明 

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系立即删除!

参考来源:

JS的字体反爬-依恋、阳光

https://blog.csdn.net/qq_51179608/article/details/126690599

Python爬虫之字体反爬解析-程序员梓羽同学

https://zhuanlan.zhihu.com/p/629637678?utm_id=0

Python高阶爬虫之字体反扒(GlideSky字体解密)-Code皮皮虾

https://blog.csdn.net/llllllkkkkkooooo/article/details/108808881

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

8adb255be47a07c49011360b1e55ed5d.jpeg

6bb54bea45d6cbe0ddc6750bc76a5d37.png

关注我的都变秃了

说错了,都变强了!

不信你试试

c59daab313e71ce6a0c49eb8fa94dd76.jpeg

扫码关注最新动态

公众号ID:eryeji

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值