用户模拟 js 的水平很高的情况下

UA?

无解

这是最容易模拟的

各种无头浏览器

买 ip 库,检测到 proxy/idc 跑 js PoW ,captcha 验证码,加 fingerprint 差不多了,再搞多就不化算,防的成本多于攻

用户雇个大学生手动操作也就 3000 一个月

不能,只能结合行为做上下文分析

想到一个麻烦的办法,也是爬虫模拟与真实操作的本质区别
在访问网页时,真实的业务访问是连续的,间隔的,同一个用户在特定的业务中是不可能出现并发的,即使用户模拟 js 很厉害,但是在模拟业务次序,调整请求间隔上很难做到与真实用户一样

#8
检测请求间隔
人的请求间隔是不稳定的,无规律的。
而大部分爬虫往往使用 sleep(random(x,y))的方法模拟间隔,这种均匀分布有很明显的特征

可以考虑拒绝掉新建连接的第一个请求包,这样可以确保地址不被探活

浏览器 ja3 签名/浏览器指纹之类的

这属于攻防了,对方水平很高,那建议花更多的钱请个高人或者找业内顶尖团队,否则记录日志就能挡住一些新手写的爬虫了

无解
最多是对前端请求做个摘要, 后端接到后进行验证, 这个只能提高门槛
另外就是加蜜罐, 这样能知道哪些用户是不正常的.

用户模拟 js 的水平很高?

用户直接上无头浏览器!

调用 GPU 不给用的 直接怕黑

比较有效的方法一是带上各种人机交互验证,二是监控用户鼠标轨迹
但是对抗情形下,都有破解的方法:第三方解码、多轨迹回放,只不过会大大增加攻击者的成本

你说的这个无非就是反爬,没有最终的方案,都只是攻防而已

#8 这是个蠢办法,你怎么确定,你不会 ban 掉真实的用户?

无解,人家用无头浏览器,ai 操作

无非猫捉老鼠,后台搞个无头浏览器

油猴脚本,请求完全是浏览器发出和渲染,你怎么破,哈哈哈

hmmm, 不能加验证码吗,请求前 js 弹出验证码框,验证通过才给请求?

定时更新前端代码和后端接口及加密请求方式,业务流程。只要你改得足够快,模拟的人就跟不上。
很简单,你前后端稍微改一下业务流程,逆向的人,要花 10 倍的时间去梳理。只要成本与收益不匹配。就没人去做。

不可能的,只能用各种人机验证,验证码来预防

用户直接手点浏览器你感觉能区分吗?

#8 请不要重新发明 cloudflare waf ,免费的

单请求没办法,请求前的页面渲染状态,埋点,加载状态,鼠标轨迹,行为逻辑分析,一系列东西去判断,但是防不住真想和你做对抗的人....这东西都是一整个团队用上各种手段去尝试,对抗,没啥一劳永逸的办法

本质上,这类问题没有绝对的防御手段。对抗方式往往是一个“试错博弈”的过程,如果用户的试错成本足够低,那么无论你做多少防护,他总能找到突破口。关键在于如何提高用户的试错成本,而不是通过技术手段杜绝爬虫

这个问题等价于如何防止爬虫
答案是防不了

人机验证
通过接码平台解决

五秒挑战,参考 Cloudflare 5 秒盾,浏览器静默执行一段 js 脚本,识别当前是否是正常环境
通过无头浏览器解决

浏览器指纹验证
github.com/fingerprintjs/fingerprintjs
但它是开源的,攻击者依然可以想办法绕过

tls 指纹识别,cloudflare 等云厂商通过对所有开源请求库做特征库,能识别一个请求是否通过浏览器正常发送,甚至能识别无头浏览器
但可惜可以无头浏览器+伪造特征

再来就是老一套的混淆接口加解密
没啥用,5 分钟以内就能破

有一个 brightdata ,可以搜索一下

他们提供完整的无头浏览器远程的方案,包括自动过验证码,自动过 5 秒盾,几乎只需要写拿数据的业务逻辑就可以了,很方便。

很难爬的数据我就用这个搞,基本都能搞定

人机验证算是最有效的防护手段了,双方硬拼钱包,但已经渐渐出现 AI 接码服务,攻击者成本会越来越低。

也可以 RPA 操作浏览器,无解

如果加解密的过程是动态生成或编译的,攻击者采用模拟手段应该会更加困难

现在的打码平台便宜到你怀疑人生,百万级以下上打码平台都不带眨眼的

没用,一般都是用无头去爬

直接上 cf 盾,如果这都被破解,那就认了吧

通通加上人机验证,图片验证码

lawrenceli.me/blog/cloudflare#client-hello---ja3
基于 TLS 的 JA3/JA4 指纹。

被针对是无解的

5 分钟!!大佬!!!我碰到 js 混淆加密,经常看半天都找不到破解方法

以前还有 tls 指纹的 现在 也是轻松过了 放弃吧

不会是广告吧