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

12 | 反爬虫概述(四):前后端都不合适的时候如何进行处理?

你好,我是 DS Hunter。
上一讲,我们谈到了无收益的前端是如何为反爬提供基础保障支持的。但是你应该是知道的,前端没有什么秘密可言。那么,那部分前端不能做的,后端不好做的,我们放在哪里处理呢?
是的,最终还是 BFF 扛下了所有。BFF 天生就是为了这些事情而生的。
在当前的浪潮下,大家似乎将 BFF 与 Node.js 划了等号,事实上并非如此。BFF:Backend For Frontend,服务于前端的后端,仅仅是一种设计思路,只不过 Node.js 在当前环境下是最优解而已。实际上,很多公司都会有一个 API 层来进行服务转发,这一层就相当于 BFF 层,它未必是 Node.js 站点。
这一讲,我们就来看一下 BFF 的主要功能以及实现方式。在学习的过程中,我也希望你能理解 BFF 存在的真正价值。我们先从 BFF 形成的第一步:选型,开始了解吧。

BFF 选型

关于 BFF 选型,理论上我们可以使用任何语言。但是实际上 90% 以上的公司,最终会选择 Node.js。

Node.js:Express

Node.js 可以承载常规 http 请求,并且因为与前端使用相同的编程语言:JavaScript,因此能很方便的让前端人员兼职掉 BFF 工作。这是常规公司选型的理由之一。对于反爬来说,我们有更进一步的选型原因:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了在处理反爬虫问题时,利用BFF(Backend For Frontend)及Node.js的重要性。作者首先介绍了BFF的概念及选型,并探讨了BFF的主要功能和实现方式。重点讨论了BFF的机器配置,针对高并发情况下的网络负载分类,提出了增加机器数和增加配置的选择依据。文章还详细讨论了关于key生成和验证的相关操作,以及针对版本问题产生的相对应的key验证问题。此外,还介绍了如何利用集群本身实现随机值处理,以及通过定制Express的Engine来实现BFF中转以及聚合的复杂操作。文章还介绍了Express的Engine定制方法,包括对Engine的混淆、效率和切片等方面的讨论。同时,还探讨了Engine下的成对加解密方法,以及BFF集成与解耦的附加价值。通过BFF的反爬任务,文章展示了如何保护后端,并指出了Node.js在高并发情况下的优势。整体而言,本文内容丰富,涵盖了反爬虫技术的多个方面,为读者提供了全面的技术视角和解决方案。

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

全部留言(3)

  • 最新
  • 精选
  • neohope
    你们的公司出于各种原因,BFF 没有选择 Node.js 技术栈。那么,你是硬着头皮在这种技术栈做反爬呢,还是想办法让 BFF 转 Node.js 呢?如果你认为不可能成功,那么理由是什么呢? 两个极端的团队难以引入新技术,一是技术信仰的洁癖,二是技术思想过于陈旧。 布道不成,那就变通一下呗,AST等用到JS解析器器的想办法调用Node处理,其他Java、CPP、PHP、Go、Lua什么的写写呗 Express 的官方自定义 Engine 的 demo 里面,会频繁读文件。虽然 Node.js 是异步的,但是也顶不住没完没了的读硬盘啊。如何提升性能呢? 自己改Express【硬件省人不省】 或 用好缓存【硬件省人不省】 或 更换高速硬盘设备【钱多人懒不在乎】 集群实现随机,你精心配置,终于实现了 79.4%。然后机器扩容,随机值又变了。那么,如何处理这个问题呢? 第一个念头是,写个小工具,贪婪算法出方案,人工看下没啥问题就上了 非要人工的话,可以用3~5台为一组,配置出需要的数值,每次都上或下一组

    作者回复: 都差不多,关于问题3,其实集群随机应该是临时方案,不应该存在太久。所以不应该持续到发布完。如果过久,可以临时舍弃这个根率。

    2022-03-15
  • peter
    请教老师几个问题: Q1: AST转换是指什么? Q2: 机器核数一般10核,那么2倍是20个连接。但tomcat需要创建500个连接? Q3: Node.js 天生是为单 CPU 设计的,而 Cluster 本身只是充分利用了多核 Q4:Node.js天生高并发,它的并发处理能力多大?比Nginx还强吗? Node比Java后端的并发能力强吗? 如果是的话,那岂不是要取代Java后端了? Q5:哪些毕业生会疯狂爬取数据啊?

    作者回复: 好多,手机不方便回一部分吧,node不见得能超过nginx,但是node写逻辑是写js,这一点nginx比不了。实际上很多node前面还放一个nginx。cluster用了多核,不过并不会有额外收益,所以宁可选择用docker分。ast 就是语法转换,webpack有专门的文档介绍可以参考,能改代码结构,我们用来做加密。

    2022-02-25
  • leslie
    均衡看似简单,实则如西天取经。 集群随机的问题聊聊自己的薄见,不知老师是和观点? 集群部分随机,如同兵法~实实虚虚,实则虚之,虚则实之;不过这又给均衡带来了难题-哪里均衡?

    作者回复: 都是踩钢丝行为,如履薄冰

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