在一些关键接口增加前端加密,加密代码由服务端返回,代码混淆人类无法正常读取。这时候制作爬虫的一般会选择采用 eval 执行来获取加密后的参数,可以尝试在这段加密的代码中投毒,包括但先不限于删库等操作

恭喜你重新发明了木马

你说你要投毒, 你怎么区分正常用户和爬虫? 还是说你正常用户也投毒?另外 JavaScript 虚拟机的一大优势就是 sandbox 隔离, 你说的投毒, 其实基本不太可能能成功

确实是个攻防手段。不过魔也可以高一丈,sandbox 你这段代码就行了

想太多了,专业的爬虫团队都是上 AST 直接分析语法树提取算法,根本不可能执行你的代码

没有用 只要逆向的收益足够大 就 100%会被破解。没有任何方法能预防 各种手段都只是增加逆向的难度罢了

我知道 sandbox 可解,但只要成功一次就足以恶心到人算法是由服务端返回的,目的就是诱导爬虫使用 eval 执行代码,绝大多数爬虫是不会每天分析你的算法的

我自建的一个 RSS 源就是直接 eval 了__NUXT__全局变量来获取数据,确实担心过安全风险。不过是大公司的网站,应该没问题……的吧?

恶不恶心爬虫我不知道,但我知道万一检测组件出 bug 导致翻车会恶心到普通用户,还会有机会触发一个叫入侵计算机系统罪的口袋。与其花大成本折腾自己可能找个靠谱的律所到处发函更实在……

我也是这么干的(笑)

想像里什么都有,动态加密+动态混淆+各种环境检测+代码量大到人类无法正常读取,基本都是知名的专业安全团队才能做到。

反爬没有一劳永逸的办法。你不管怎么做,如果有足够的利益,人肉爬数据你怎么防?

我只是随便提了一种方法,使用沙盒就能处理这个方案,标题也没写“一劳永逸防爬虫”

没屁用 防一防脚本小子

无头浏览器直接取页面上显示的不就行了

我也没说这个方法不行啊。。。爬虫和反爬虫是互相对抗的,能不能防住,得上了才知道,你哪知道别人在用什么技术爬你的网站。就算今天能防住,可能明天又防不住了

知乎使用特殊字体反爬虫,眼睛看的内容是正常的,爬下来的文本是乱序的,使用特殊字体控制能正常渲染。

控制浏览器 + OCR (结构识别),怎么对付?

css 漂移?

你这个方案更狠,我想了一下好像无解!!!😂

逻辑炸弹 2.0 版本?如果检测组件出 bug 导致翻车会恶心到普通用户,起码会被曝光:“安全警告:xxxx 网页挂病毒木马,大家不要访问"。等等

采集上报全部鼠标键盘触摸传感器数据,ai 模型分析,不通过就故意拖慢响应或者 ban JA3 指纹 1 天akamai bot manager 就是这么做的,仍然一堆服务能打码

Deno:?

另外 akamai 已经能精准识别 curl_cffi 了,20 个请求内 100%封,要用魔改版本的 tls_client ,原版 tlsclient 也不行

youtube 就是,那个视频签名算法是写在 js 里的,挺复杂,我也看不懂,用 eval 来调用求解。算法经常变,我都有收集官方一大堆 js 代码了。

这种想法还比较初级,现在都用 VMP 混淆代码,后台服务器更新操作位;依然被破解;

你说的这种做法叫投毒/埋坑,属于早就被玩烂的操作了。常见的操作有比如先获取一些浏览器环境中获取不到的信息,用于检测是否是真实浏览器,然后如果不正常就在生成的 sign 里打上特殊标记,或者是发个网络请求直接上报具体的环境信息,或者是打日志警告,或者是执行一些计算量超出正常水平的东西再执行原始逻辑之类的。玩法一堆,而且远比“删库”能恶心人。“删库”这种极端操作的成功概率基本为 0 ,你也无法保证你不会影响到普通用户,再加上大点的安全厂商都会有做自动化的安全审计,检测到你搞骚操作就直接就给你标记风险了,毕竟谁知道你是想做防护还是想搞普通用户呢?另外,你以为这种操作很无解,代码混淆了没人仔细分析就看不懂,但其实解析成 AST 之后处理一下冗余内容,代码结构是很清晰的。再加上现在的大语言模型上下文长度已经足够长了,能力完全够将清理后的逻辑部分代码还原出大致的原始状态,或者是直接按要求对代码进行自动化处理。无论是剥离出实际需要的部分,还是察觉出你整活,都极其简单,门槛极低。以前还得专门训练模型,现在花点小钱随便就能搞。所以可以说在当下,在中低程度混淆处理的代码层面投毒/埋坑的意义已经不大了,代码层面的对抗主要还是在让别人无法正常分析代码上,比如几年前比较先进的技术是套一层“虚拟机”,逻辑完全按人家自己的来,后面发展出了基于 WASM 直接跑加壳后的编译后程序,再后面就是像楼上说的结合动态变化的处理方式高频更新。但是这些操作终究是前端代码层面做的事情,大不了别人完全虚拟一套环境搞,只要级别比你高,你代码里做再多操作也看不出毛病。如果你平时有了解一些相关安全厂商做的事情的话,你会发现其实他们现在都在往行为风控方向发展。以前他们都会吹自己的验证码、WAF 之类的产品有多难被破解,代码加密、动态更新、高强度壳啥的。现在吹的都是通过识别客户端各方面的操作是否像真人发出的,然后进行分级风控,比如疑似风险客户端就必须要进行计算后才能走正常逻辑,通过大幅加高攻击方成本的方式来解决问题。

还有像前面 说的采集上报各种传感器数据做识别这种做法,理解不了的话可以去看看字节跳动的产品,抓包会看到大量向 mcs.zijieapi.com/list 这个地址上报的数据,内容细致到可以跟录屏一样完全回放你在使用时的整个操作过程和你操作时应该看到的状态。这种程度的数据用在防护上,想要精准识别出是人还是机器操作,又或者是直接只请求了特定接口搞事情,都是很容易做到的,就看想不想管而已。

学到了

参考这个帖子 www.hesudu.com/t/1025454?p=4#reply308

没用。你压根就没理解安全攻防的本质。就是资源的对抗。说白了就是比谁更菜。搞安全和打电竞一样,菜就是原罪。你了解你的对手吗?你防的是谁?他们的能力是什么样的?你的业务数据值得对方投入多大的资源?他们有这样的资源吗?你能投入多少开发资源去做防护?从开发视角、技术视角出发去搞安全,最后迎接你的就是领导一句,你搞这些没用的玩意干啥?干嘛不花钱找外包干?你干的就比别人好了?

知乎现在搞字体混淆了??