反爬虫兵法演绎 20 讲
DS Hunter
反爬虫专家,前某公司研发总监
4905 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
特别放送 (1讲)
反爬虫兵法演绎 20 讲
15
15
1.0x
00:00/00:00
登录|注册

10 | 反爬虫概述(二):无收益的前端是怎么进行key处理的呢?

你好,我是 DS Hunter。
上一讲,我们提到了高收益的后端为了保护自己,进行了大量的反爬支持。但是反爬的主战场,依然是前端。
众所周知,做反爬,对于前端来说是没什么收益的,因此动力会差很多。如何解决动力问题,我们会在进阶篇深入探讨。我们目前亟待明确的,是前端在帮助后端进行反爬的时候,具体能够做些什么。
在反爬虫工作里,前端主要的作用是 key 加密。除此之外,还有一些杂活,比如收集信息、埋点统计等等。最后我们会把这一切聚集到规则引擎中统一收口。今天我们就先来探讨前端反爬虫的主力部分——key 的加密。至于其它的辅助以及收尾工作,我会在下节课跟你一起探讨。
在 09 讲中,我们已经明确过了,服务端的 key 是加密后下发的。那么客户端必然需要解密方法。不过,解密方法的基础框架是什么呢?除此之外,基础框架内有什么可以用到的代码保护方式呢?我们先从第一个问题开始分析。

放置方式:成对加解密

这里特意发明了一个新词,叫成对加解密,和“对称加解密”这种加密方式不是一件事。我们所熟知的对称加解密是一个加解密的方式,或者说过程,而成对加解密是一个存储方式
加密这件事在服务端,也就是后端已经直接执行掉了,而解密操作是发到客户端让客户端去做的。通常来说,解密操作是如何进行的呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了前端反爬虫的技术细节,主要集中在对key的加密上。文章首先介绍了成对加解密的存储方式,通过服务端生成的key进行加密,并在客户端进行解密操作,以此来保护数据安全。其次,文章提到了代码保护方式,包括变量名混淆、eval和虚拟机等方法,用于增加破解难度。作者强调了成对加解密作为隐藏一切的基石,以及在代码保护方面的重要性。此外,还介绍了虚拟机技术和自定义Node.js的engine实现方式。总体而言,本文为读者提供了对前端反爬虫工作的深入了解,强调了对key加密的重视,并提供了多种技术细节和实现方式,为读者提供了全面的反爬虫技术知识。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《反爬虫兵法演绎 20 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 王雪
    置顶
    便贴集赞:backend for frontend ,BFF

    编辑回复: 哈哈是的!夸夸你!

    2022-02-18
    2
  • neohope
    1、所有的加解密都是执行 js,那么如果对方使用浏览器直接运行 js,是否意味着所有的加解密都形同虚设? 如果不是,那原因是什么? 如果直接调用JS,页面元素可以做一些验证。比如:鼠标与页面元素的相对位置可能有问题,在解密时,如果将屏幕区域划分为几个格子,不同格子触发的路径不一样,是否能做为间的的防护手段呢。调用时间间隔,可能也能做一些防护。 2、成对加解密本身就存在拦截概率了,因为对方可能匹配到熟悉的题目,也可能匹配不到。那么,我们如果有意放过爬虫,要计算条件概率吗? 如何计算呢? 是否可以这样,将加密算法分成几个Bucket,根据加解密难度及系统埋点得知的爬虫方破解情况,将算法放入到不同Bucket中,不同Bucket评分不同。在roll算法的时候,做一个分值计算,对于要放过的爬虫,只Roll难度低的Bucket中的算法。 3、成对加解密 roll 出来之后要做一次洗牌,如果不做会有什么问题吗? 这个是防止伪随机数生成时,容易生成相同队列的问题吗?这样的话,多个加密方法,就可以被看作一个大加密方法了

    作者回复: 除了2都没问题。2问的时候有个陷阱,“怎么做”,会让人误以为要算(上学常用解题技巧),实际上不用,因为随机放过发生在拦截后,也就是检测到爬虫后放过多少,而不是总爬虫放过多少。因此无需计算。

    2022-03-11
  • peter
    Q1:key加解密是说服务端把加解密方法告诉前端, 由前端进行加解密吗? key是用来做什么的? Q2:代码处理,也是针对前端代码吗?

    作者回复: 1 是的,前端解密,但是解密是为了藏检测,检测才是目的。 2 代码处理指的是?如果说是engine那没错,把前端代码搅浑。

    2022-02-18
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部