中文起,Python 字体反爬实战案例,再一点 R22

举报
梦想橡皮擦 发表于 2022/05/25 11:15:06 2022/05/25
【摘要】 📢📢📢📢📢📢💗 你正在阅读 【梦想橡皮擦】 的博客👍 阅读完毕,可以点点小手赞一下🌻 发现错误,直接评论区中指正吧📆 橡皮擦的第 665 篇原创博客 ⛳️ 起点 实战场景本次采集的案例是点起文中,你可以随机打开一本目标xiaoshuo,检查一下网络请求中是否存在字体文件响应数据。Python脱敏处理.Python脱敏处理.Python脱敏处理/info/2952453/#...

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 665 篇原创博客

⛳️ 起点 实战场景

本次采集的案例是点起文中,你可以随机打开一本目标xiaoshuo,检查一下网络请求中是否存在字体文件响应数据。

Python脱敏处理.Python脱敏处理.Python脱敏处理/info/2952453/#Catalog

字体加密位置呈现的效果如下图所示。

编写网页爬取代码,查看其字体位置使用的编码。

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
    "Origin": 'https://Python脱敏处理.com',
    "referer": "https://Python脱敏处理.com"
}

response = requests.get(url='https://Python脱敏处理/info/2952453/',headers=headers)
response.encoding = 'utf-8'

print(response.text[:20000])

截取源码部分,查看编码内容。

同时下载本页面的字体文件,用工具打开之后,发现字体编码图形顺序没有什么变化,这对于后续我们解决反爬就变得非常简单了。

接下来读取和解构一下这个字体文件,在其中找到能用的数据。

from fontTools.ttLib import TTFont

import io

file_woff = './fonts/YOfzYtjr.woff'
with open(file_woff, 'rb') as font_file:
    font = TTFont(io.BytesIO(font_file.read()))  # 转换成字体对象
#字体映射关系
font_cmap = font['cmap'].getBestCmap()
print(font_cmap)

输出的信息为:

{100418: 'two', 100420: 'seven', 100421: 'five', 100422: 'nine', 100423: 'six', 100424: 'three', 100425: 'four', 100426: 'zero', 100427: 'one', 100428: 'period', 100429: 'eight'}

接下来在回头去看一下刚才字体反爬位置的特殊字符与字体编码。
网页特殊字符

𘞱𘞯𘞴𘞲𘞱𘞭

字体编码

{100269: 'nine', 100271: 'five', 100272: 'three', 100273: 'six', 100274: 'period', 100275: 'one', 100276: 'eight', 100277: 'two', 100278: 'four', 100279: 'seven', 100280: 'zero'}

得到最终的结果。

&#100273 -> 6

📣📣📣📣📣📣
右下角有个大拇指,点赞的漂亮加倍

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。