数据防护总结(PC)

简介: 数据防护总结(PC)

为什么需要数据防护?


当今如今大数据时代,数据重要不言而喻,网页和 App 作为主流的数据载体,如果其数据没有任何的保护措施,在爬虫工程师解决了一些基本的反爬如User-Agent、cookies、验证码等的防护措施之后,那么数据依旧可被轻易的获取。


数据防护主要体现在何处?


数据防护可简略的划分为请求防护、数据内容防护、验证码


请求防护


  • User-Agent


  • Cookie


  • 签名验证


  • 握手验证


  • 协议


  • 。。。


数据内容防护


  • CSS字体偏移


  • SVG字体映射


  • 图片数据


  • 。。。


验证码


个人总结为以下几种类型,具体体现不在过多赘述。(注,几者之间无明显的分割标准,在此以侧重点划分)


  • 识别点选或输入型


  • 滑轨、滑块型


  • 短信或语音验证型



实现这一切的一切,这些究竟是基于什么实现的?这一切绝可能是凭空出现!!!

其实无论是ajax,User-Agent、还是Cookie等等大部分都是基于Javascript实现。而且由于JavaScript在客户端中为完全透明,用户可以随意的查看与调试,这无异于代码裸奔。虽然以上的反爬虫虽然不错,但如果仔细分析的,这难度也仅是“工作量”的问题。


Javascript防护分类


完全透明的JS代码,虽然可以有效的防止。但这还不够,其根本原因还是JavaScript为明文。而这一切的一切都是“治标不治本”,虽然可以但还不够。也正因为对JavaScript的各种防护,所以才让这些加密“动”起来,无法轻易的分析。对JavaScript“加密”可分为如下几种大类


代码压缩


JavaScript 压缩是指去除 JavaScript 代码中的不必要的空格、换行等内容,或者将一些可能公用的代码进行处理实现共享,最后输出的结果都被压缩为几行内容,代码可读性变差,提高分析难度同时也能提高网站加载速度。


整体来说,压缩技术只能在很小的程度上起到防护作用,要想真正提高防护效果还得依靠混淆与加密技术。


代码混淆


代码混淆是增加分析难度而牺牲部分性能的一种方案,此方案大部分是体现在通过逻辑转换换等方式将代码转化为难以分析的代码。难以分析是混淆的目的,等价转换是需要确保混淆前后的代码需不影响运行的功能。对于混淆可以又分为如下四种:布局混淆、数据混淆、控制混淆、预防混淆


布局混淆


布局混淆指在源代码中删除原有无用代码,处理常量名、变量名函数名等标识符,加对于代码的阅读与分析。


无用代码:注释、调试信息、缩进、换行、无用函数与数据等


处理常量名、变量名函数名等标识符:


  • 标识重命名:将原有代码重命名为无具体意义的字符,例如 将name 重命名为a

注意点:


  • 作用域内标识符碰撞情况


小结


布局混淆并不会影响执行的过程、内存开销,甚至代码体积反而减少了。


数据混淆


JS拥有常见的7种数据类型,number、string、boolean、unfined、null、Object


数字混淆


数据混淆有常见:进制转换、数字分治、其他


  • 进制转换


将十进制转化为二进制、八进制、十六进制等,从而达到“混淆”的目的


  • 数学分治


简而言之就是将数拆开,例如 2 = 1 + 1,辅以数学公式等


  • 其他


重新赋值等


字符串混淆


字符串混淆常见的有编码转换、加密。常见的有hash、base64、md5等


boolean


我们都知道Boolean值为True、False。根据对boolean的处理,变成难以显示阅读的代码。例如![] = False, !![] = True.


控制混淆


控制混淆是指对程序的控制流进行转换变化,常见的方式有插入僵尸代码、控制流平坦化


插入僵尸代码:插入僵尸代码即插入无用的代码,增强调试难度


控制流平坦化:控制流平坦化,将原本的的执行流程平坦化。具体可自行搜索


预防混淆


主要体现在 提高反混淆的难度或检测现有混淆器中的漏洞设计


代码混淆总结


万变不离其宗,无论是代码压缩、代码混淆都离不开一个宗旨,在不改变原有的结果情况下对代码(这里指JS)进行处理。处理的方式包含但不限于,等值转换、运算分割。


设备指纹防护


设备指纹通过收集客户端设备的特征信息对用户与“机器人”进行甄别。web设备指纹主要包含:


浏览器端环境检测


浏览器设别标识


特征识别Hook


JS特征识别


做爬虫的朋友一定使用过NodeJs,这个工具。也时常借用与Nodejs来模拟JS,但Nodejs的api和指纹浏览器有不一样。如果服务端获取到客户端,那么就可以对指纹不一致的机器人,进行防范。


正如你我所知的那般,知道的越多,不知道的越多。


推荐阅读与了解


风控要略:互联网业务反欺诈之路


Jsfuck(github):https://github.com/aemkei/jsfuck


基于控制混淆和布局混淆的代码混淆系统-王岩(论文)


目录
相关文章
|
Linux 数据安全/隐私保护
百度搜索:蓝易云【Centos7系统中找不到yum及安装方法。】
综上所述,如果你在CentOS 7系统中找不到 `yum`命令,可以通过重新安装 `yum`来解决问题。
1508 0
|
5月前
|
存储 监控 Java
吃透线程池核心原理:从参数设计、拒绝策略到高并发场景终极选型
本文深入剖析Java线程池底层原理,涵盖核心架构、生命周期、7大参数设计逻辑、执行流程及4种拒绝策略;结合CPU/IO密集型等场景给出生产级配置方案,并提供自定义线程工厂、监控、失败任务持久化等完整实战代码,助你规避OOM、雪崩等高频风险。
485 1
|
8月前
|
人工智能 自然语言处理 数据可视化
从形象到资产:数字人如何在IP、虚拟偶像与电商领域重塑商业价值
数字人正从技术演示迈向规模化商用,成为IP打造、虚拟偶像、电商转化的核心引擎。依托AI驱动与成本降低,其形象生成与内容输出实现高效自动化,广泛应用于知识付费、跨境直播等场景,推动个人品牌与企业营销的数字化升级,逐步演变为可运营的“数字员工”和新型商业基础设施。
|
9月前
|
人工智能 自然语言处理 搜索推荐
AI数字人解锁数字展厅的“智慧大脑”,展厅互动体验焕新升级
在数字化转型浪潮中,波塔AI数字人系统以AI技术重塑展厅体验,破解传统展厅人力成本高、交互单一等痛点。支持24小时智能讲解、多模态互动、个性化推荐、多语种服务,并联动灯光、大屏等设备打造沉浸式空间。兼具品牌代言人、智能导览员与数据分析师多重角色,助力企业实现从“展示”到“服务”的智慧升级,开启展厅新时代。
374 0
|
机器学习/深度学习 人工智能 资源调度
AI大模型训练管理工具:千亿参数时代的指挥中枢
本内容揭示了大模型训练中三大核心挑战:实验复现难、资源利用率低、合规风险高,并提出“三维控制塔”解决方案,涵盖实验管理、资源调度与合规追踪。推荐Immuta + 板栗看板等工具组合助力不同规模团队实现高效、合规、低成本的AI训练。
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
1606 31
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
弹性计算 供应链 并行计算
阿里云ECS服务器五种计费模式有啥区别?包年包月、按量付费、抢占式实例、节省计划和预留实例券
阿里云服务器计费多样化:包年包月适合长期稳定服务,如Web网站;按量付费适合短期或波动需求,如测试、扩展;抢占式实例享折扣但可能被释放,适合无状态任务;预留实例券抵扣按量付费账单;节省计划提供资源使用承诺的折扣,适用于用量稳定的业务。
818 7
|
缓存 运维 Linux
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
深入解析:一步步掌握 CentOS 7 安装全流程及运维实战技巧
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
YOLOv8改进 | 2023 | FocalModulation替换SPPF(精度更高的空间金字塔池化)
899 2