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

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

畅销专栏,打折促销中~
⭐️ 《Python 爬虫 120》⭐️

⛳️ 起点 实战场景

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

[En]

The case collected this time is click Chinese. You can open a target book at random and check whether there is font file response data in the network request.

https://book.qidian.com/info/2952453/#Catalog

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

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

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

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://book.qidian.com',
    "referer": "https://book.qidian.com"
}

response = requests.get(url='https://book.qidian.com/info/2952453/',headers=headers)
response.encoding = 'utf-8'

print(response.text[:20000])

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

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

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

[En]

At the same time, download the font file of this page, open it with the tool, and find that there is no change in the order of font coding graphics, which is very easy for us to solve anti-crawling later.

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

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

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'}

得到最终的结果。

𘞱 -> 6

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

欢迎大家订阅专栏:
⭐️ ⭐️ 《Python 爬虫 120》⭐️ ⭐️

Original: https://www.cnblogs.com/happymeng/p/16291861.html
Author: 梦想橡皮擦
Title: 中文起点,Python 字体反爬实战案例,再一篇~

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/116680/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部