《封号码罗》python爬虫之抖音分享页破解字体反爬虫进阶实战(六)

Python 爬虫实战:破解 woff2 字体加密的完整流程与双引擎识别策略 本文详细解析了Python爬虫应对网站字体加密的完整解决方案。针对常见的woff2字体加密,文章提供了从定位下载字体文件、使用fontTools库解析字形,到结合ddddocr与百度OCR双引擎进行高精度识别的全流程实战指南,并分享了结果融合与人工校验策略,最终构建可靠的映射字典以解密数据。 阅读详情

无敌免责声明:本文主要用于学习技术,切不可用于非法盈利目的,不可用于商业,不可攻击该服务器
先放出结果镇楼:

{
   
   'nickname': 'Dear-迪丽热巴', '抖音ID': '274110380', 'work': '演员', 'signature': '先定一个能达到的小目标,比方说来句签名', '关注数量': '0', 'fans': '5130.4w', 'zan': '17058.8w'}
list index out of range
{
   
   'nickname': '莉哥o3o', '抖音ID': 'kelly0711', 'work': '', 'signature': '无小号 承蒙厚爱 倍感珍惜????Babe们来围脖找我吧ฅ՞•ﻌ•՞ฅ:莉哥OvO', '关注数量': '26', 'fans': '3037.3w', 'zan': '26917.9w'}
{
   
   'nickname': '娄艺潇', '抖音ID': '142152200', 'work': '抖音音乐人', 'signature': '会跳舞的歌手里体育最好的演员。', '关注数量': '43', 'fans': '2114.4w', 'zan': '10023.6w'}

第一步:分析网页结构,确定抓取数据

在这里插入图片描述
页面的内容不多,主要获取昵称、抖音ID、工作、个性签名、关注数、粉丝数、获赞数等
观察页面,可以发现,显示数字的地方在Element里面显示的都是小方框,根据上一节的内容,不难判断是遇到了字体反爬虫,于是我们到Network里面查看网页的源代码
在这里插入图片描述
在Network里面,我们可以看到网页源码,数字被抖音ID: kelly<i class="icon iconfont ">&#xe60d;</i>代替了,例如&#xe60d;所代表的就是数字0,这就是字体反爬虫的一个手段之一

第二步:查看字体文件,构建自定义字典列表映射

注意:我这里所说的映射,不是下图所显示的数据
在这里插入图片描述
这种字典是治标不治本,我们要通过算法,让代码去实现映射,而不是单单的人为自定义字典影视
手动下载字体文件,可能你还并不清楚如何下载,选中字体文件,如下,然后右键,选择Open in new tab,之后文件就会自动下载,在浏览器左下角会有提示,然后我们把下载好的字体,放在项目目录里面
在这里插入图片描述

# 打开字体文件
xml_path = os.path.dirname(__file__)
font = TTFont(xml_path + "/font/iconfont_9eb9a50.woff")
# 另存为XML文件,方便查看,只保存一次就注释下面的这一行命令
font.saveXML(r"D:\gcw\learn_crawler\APP_data\spider_douyin\font\douyin.xml")

分析xml字体文件

# 查看douyin.xml文件,,字符到字形映射表<cmap>的内容,<map>标签中的code代表字符,name代表字形名称
# <map code="0xe602" name="num_"/><!-- ???? --> 代表的是1
# 分析发现,每一个数字都有不同的三个映射关系,如数字1
# <map code="0xe603" name="num_1"/><!-- ???? --> 代表的是0
# <map code="0xe60d" name="num_1"/><!-- ???? -->
# <map code="0xe616" name="num_1"/><!-- ???? -->

按照code的值和网页源码进行对比分析

# 经过分析,code和name的映射对应值如下:
"""
<map code="0xe602" name="num_"/><!-- ???? -->  1
<map code="0xe603" name="num_1"/><!-- ???? --> 0
<map code="0xe604" name="num_2"/><!-- ???? --> 3
<map code="0xe605" name="num_3"/><!-- ???? --> 2
<map code="0xe606" name="num_4"/><!-- ???? --> 4
<map code="0xe607" name="num_5"/><!-- ???? --> 5
<map code="0xe608" name="num_6"/><!-- ???? --> 6
<map code="0xe609" name="num_7"/><!-- ???? --> 9
<map code="0xe60a" name="num_8"/><!-- ???? --> 7
<map code="0xe60b" name="num_9"/><!-- ???? --> 8
......
"""

有一点必须要知道,就是code虽然有三种情况对应同一个数字,但是name的值是一个对应一个数字,那我们要做的就是,根据code去找到name,然后根据name确定对应的数字值,并且字形数据是唯一的,字形数据保存在表<glyf>中,且每个字形都是独立的

# 根据xml的原始数据,手动给出映射数据
# 读取字体文件
tree = ET.ElementTree(file=xml_path + "/font/douyin.xml")
# tree = ET.ElementTree(file="D:/gcw/learn_crawler/APP_data/spider_douyin" + "/font/douyin.xml")
# 定义两个空白字典,用于存储映射数据,然后遍历
s = {
   
   "name": "", "value": "", "hex": ""}    # 没有使用该字典,仅用来设计字典结构
ys = {
   
   "name": ""}
# 遍历XML的TTGlyph这个标签,用的是iter这个方法
for elem in tree.iter(tag="TTGlyph"):
    if len(elem.attrib["name"]) >= 4 and len(elem.attrib["name"]) < 6:
        ys["name"] = elem.attrib["name"]
        # print(ys)
# 注意:为了更好的观测数据,我用打印出来的ys数据,填充到来下面的这个字典,value值是通过网页对比获得
base_font = {
   
   
    "font": [{
   
   'name': 'num_', "value": "1", "hex": ""},
             {
   
   'name': 'num_1', "value": "0", "hex": ""},
             {
   
   'name': 'num_2', "value": "3", "hex": ""},
             {
   
   'name': 'num_3', "value": "2", "hex": ""},
             {
   
   'name': 'num_4', "value": "4", "hex": ""},
             {
   
   'name': 'num_5', "value": "5", "hex": ""},
             {
   
   'name': 'num_6', "value": "6", "hex": ""},
             {
   
   'name': 'num_7', "value": "9", "hex": ""},
             {
   
   'name': 'num_8', "value": "7", "hex": 
破解CSS反爬虫:Selenium实战绕过视觉偏移陷阱 在Web数据采集领域,反爬虫技术不断演进,其中基于CSS样式的位置偏移是一种巧妙的视觉干扰手段。其核心原理在于,浏览器渲染引擎会解析并应用CSS规则(如position、flex-order、transform等)对DOM元素进行视觉重排,而传统静态爬虫仅能获取原始HTML结构,无法计算样式,导致提取的文本顺序错乱。这种技术通过制造DOM顺序与视觉呈现的差异,有效抵御了requests+BeautifulSoup等常规爬虫组合。为了应对此类挑战,工程实践中常采用动态渲染方案,即通过Selenium、Pupp 阅读详情

相关推荐

转转反爬虫机制深度解析:从JS逆向到工程化爬虫系统构建

在Web数据采集领域,反爬虫机制是开发者必须面对的核心挑战。其基本原理是通过技术手段区分自动化脚本与真实用户访问,保护网站数据安全与服务器资源。从技术价值看,理解反爬机制不仅能提升数据采集效率,更是深入掌握现代Web应用架构、网络协议及安全策略的实践途径。常见的应用场景包括市场数据分析、价格监控和舆情监测等。本文聚焦转转平台这一典型案例,其反爬体系融合了动态令牌、请求签名、行为指纹检测及验证码等多层防御。其中,JavaScript逆向与自动化浏览器驱动是突破动态令牌的关键技术,而构建包含代理IP池、请求调度

weixin_33693070的博客 509

只要30行代码!7步教会你Python爬取网页抖音热门视频

前言 抖音短视频相信大家都听过,也不陌生对吧!可以看到海量的短视频,涵盖了各大行业。个人觉得抖音有毒,刷着刷着根本停不下来,一看时间就是凌晨3、4点。今天带大家爬取抖音网页版的视频数据!一睹为快吧 本篇文章内容: 1、系统分析网页性质 2、正则提取数据(难点) 3、海量音频数据保存 环境介绍: python 3.6 pycharm requests re 爬虫的一般思路 1、分析目标网页,确定爬取的url路径,headers参数 2、发送请求 -- requests 模拟浏览器发送请求,

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 8123

抖音视频爬虫实战:从反爬机制到高并发架构的完整解决方案

网络爬虫作为数据采集的核心技术,其核心原理是通过模拟客户端请求与解析响应来获取目标数据。在应对抖音这类强反爬平台时,传统的简单请求会因动态加密签名、行为检测和IP风控而迅速失效。其技术价值在于通过模块化设计实现稳定高效的数据管道,为内容分析、趋势研究提供基础。典型的应用场景包括短视频内容趋势分析、竞品数据监控和媒体资源归档。本文以实战项目为例,深入剖析了如何构建一个应对抖音反爬机制的爬虫框架,重点介绍了异步请求处理与代理IP池管理两大关键技术,通过分层架构将复杂的逆向工程问题转化为可维护的工程模块,为处理类

weixin_42561249的博客 1030

Halcon工业相机开发全流程:从SDK配置到实时图像采集(C++版)

本文详细介绍了使用C++进行Halcon工业相机开发的完整流程,从SDK配置到实时图像采集的实现。涵盖环境搭建、设备初始化、回调机制、参数控制等关键环节,并提供异常处理和实战案例,帮助开发者快速掌握工业视觉系统的开发技巧。

weixin_33728268的博客 512

Android Display Graphics #1 整体框架介绍一

手机屏上显示的内容,2D或3D ,如果是 3D 的,不管是 App 还是游戏,或者简单的图片界面,底层都是通过 GPU、 通过 OpenGL(ES)绘制出来的。是Java层的一个类,提供了一系列API,使用这些API可以实现各种的产品经理要求的效果。显示的不同阶段对这块内存的叫法不同,在上层可以是Window、ANnativeWindow、Surface、SurfaceView、layer、buffer,这些本质上没啥区别,可以广泛意义上理解为用于显示内容的那块内存,只不过各个阶段的操作接口不同。

oDwyane03的博客 1385

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1351

华为昇腾Atlas200DK. CANN模型推理——目标检测结果不对(无检测结果)的问题解决

目录前言问题描述问题排查1.后处理模块问题排查2.预处理模块问题排查3.模型问题排查4.算法bug问题排查5.AI板卡问题排查6.模型精度问题排查6.模型推理问题解决:模型输入数据与预处理不同后记 前言 上周我在华为昇腾Atlas200DK中部署nanodet和yolov5时,出现了目标检测结果不对(没有检测到任何物体),困扰了整整三天,最后找到原因并圆满解决,在这里记录一下debug过程。 以上测试均在python中完成。 问题描述 第一天上午,我首先将nanodet由pytorch的.pth模型转换为.

qq_41035283的博客 5604

立创开源Link Hub多功能USB扩展坞:CH339F主控+4层板设计,实测网口/存储性能

本文深度评测了立创开源Link Hub多功能USB扩展坞,其采用CH339F主控芯片与4层PCB板设计,并严格进行阻抗匹配。实测表明,该扩展坞的USB接口与microSD读卡器性能均接近USB 2.0理论极限,百兆以太网口转换效率高,性能损失极小。设计上注重电源保护与信号完整性,是一个兼顾稳定性与成本的高完成度开源硬件项目。

weixin_36173034的博客 155

ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例)

本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。

3a9bq4r8t2y的博客 253

用Python玩转共现分析:从NLTK到热力图可视化(附完整代码)

本文详细介绍了如何使用Python进行文本共现分析,从NLTK基础文本处理到构建共现矩阵,并实现热力图可视化。通过完整的代码示例,帮助数据分析师和开发者掌握这一揭示词语间关联网络的实用NLP技术,快速从文本中提取语义关系和主题结构。

weixin_29313817的博客 347

遗传算法(GA)全面解析:从生物基础到工程实践

本文全面解析了遗传算法(GA),从其生物基础到工程实践应用。遗传算法模拟自然进化过程,通过选择、交叉和变异等操作在解空间中高效搜索最优解。文章详细介绍了算法的生物学基础(达尔文进化论、孟德尔遗传定律)、基本概念(种群、个体、基因等)和核心思想。重点阐述了遗传算法的数学模型,包括编码机制、适应度函数设计、遗传算子(选择、交叉、变异)以及关键控制参数。最后提供了一个完整的Python实现示例,展示了遗传算法求解函数最大值问题的具体应用。该算法具有群体搜索、概率导向、无需梯度等特点,适用于各类复杂优化问题。

qq_42212808的博客 1175

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 记忆碎片之python爬虫APP数据爬取之UI Automator Viewer和Appium双剑合璧(五)
下一篇: 记忆碎片之python定位APP节点
Python  键盘上的舞者
博客等级 码龄8年 1037粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值