如何知道网络请求是从浏览器发出的

2 天前
 leokun
用户模拟 js 的水平很高的情况下
8754 次点击
所在节点    浏览器
106 条回复
wangtian2020
1 天前
没有任何办法,一个东西他像用户,那他就是用户
liudewa
1 天前
@Ketteiron #78 好 知道了👍
anivie
1 天前
@artiga033 虚拟摄像头+AI 数字人了解一下,别说摇头晃脑眨眼睛了,当场给你摇一段都没问题
andforce
1 天前
cloudflare 验证码
可以识别是用户还是模拟,我至今没找到能破解的方法。

用无头浏览器也不行,还是你能识别是不是人类
qs
1 天前
@andforce 有些网站上强度了我每天都要手动点好几次

这把真人都拦下来了
hereIsChen
1 天前
以前听过一个方法,防无头浏览器,就是页面内弄一个隐藏的 a 标签,普通用户是看不到的;
如果这个标签被访问了,就肯定不是正常访问到的
Dora112233
1 天前
页面放个隐藏图片,没加载过图片的就是非浏览器访问。
ljl024
1 天前
直接开一套开放接口供外部平台接入,省得有人看上你的页面
realpg
1 天前
高级点的机器人检测都是公司最核心的知识产权价值...
为什么总有人觉得去论谈发个帖就能拿到...

这玩意给个思路的价值都很离谱
xiaojie668329
1 天前
我直接 CDP 操作浏览器,你如何应对
wjpauli
1 天前
你可以研究下指纹技术
ExplodingDragon
1 天前
playwright 搭配 chrome cdp 拦截掉暴露的接口几乎无解,任何用户操作均可模拟,做并发限制不把服务搞崩就行
oyama
1 天前
ja3 已经能绕了,虾皮就是用的 ja3 ,老好绕了
777777
1 天前
必须登录,然后验证手机号,增加攻击者成本,想爬的多就要加钱买账号
llsquaer
1 天前
生成一万个 js 不同 key 的加密脚本可以防脚本。但如果是模拟的话还是得增加前端逆向难度。不过高手基本能跑的过。就算这些都防住了。能防按键精灵之类的么?看来还是不得行。
kuanat
1 天前
这个话题属于懂行的不愿意讲(毕竟多数都会涉及黑灰产),而不懂的基本说不到重点的那种。我就简单总结下算是抛砖引玉了。

浏览器从来都不是可信环境,理论上没有任何办法可以稳定 100% 准确区分真人和机器。

对抗爬虫或者 bot 的基本思路就是提高攻击成本。比如登录之后才能看的,就有帐号成本,限制访问频率的,就有 ip 成本,甚至 cf 五秒盾也可以理解为采集时间成本。

想要提高攻击者的成本,那防御方也要付出代价,比如设想个极端场景,防御方要求所有请求都过一遍 recaptcha ,那防御方确实提高了攻击方的打码成本,但自己也付出了带宽成本,以及造成不便损失正常客户的成本。所以防御方更希望的是,有纯软件的方案,只付出开发成本和少量的运营成本,就能大幅提高攻击者成本的方法。于是就有了各种检测技术。

我这里随便列举一些常见的技术,以及攻击方的应对策略:

1. tls 指纹检测

因为浏览器和常见 python/go 等编程语言的底层 tls 库是不一样的,通过在流量入口做 ssl offloading 的时候,顺便检测一下请求中的 kex (密钥交互)配置,就能起到很好的筛选作用。

应对方式也比较简单,替换 tls 库或者伪装成特定的指纹配置即可。

2. 额外校验字段

同样是针对看请求直接构造接口数据的。在常规业务字段之外增加校验字段,一般由 js 代码执行后产生。

这种可以通过 cdp 控制浏览器或者跑无头等方式绕过。

3. 浏览器环境检测

基本上是前一种方法的增强版。既然攻击者能用真浏览器来伪装,那就检测那些不合理的参数,比如窗口 viewport 大小,一些特定的全局对象等等。到了这一步,基本上标配都是 js 混淆了。

对于水平不高的检测,有经验的攻击者大部分能根据调用栈定位到关键函数方法,绕开检测逻辑直接生成校验字段。

4. js vmp 混淆

基本上这就是最后的防线。把前面各种检测技术打包起来放到 js 中,然后用 js 代码写个虚拟机,再把原始的代码编译成虚拟机指令。这个对抗手段是针对人的,就是拉高对攻击者的技术门槛要求,逆向 vmp 类混淆是要比前面都难的。

从攻击者的角度来看,硬怼 vmp 还原 ast 指令也不是不行,就是累,而且没办法保证这次逆向出来了能用多久。毕竟防守方的策略是,换个混淆参数就是新虚拟机了。

所以多数情况下都是把 js 代码完整扒出来,把它当黑盒来调用。因为外部 js 环境和浏览器不一样,缺少浏览器的很多对象,所以有个专门的说法叫“补环境”,让 js 代码能正常运行。想要知道 js 代码都检测了哪些环境信息,又有一些插桩、自吐的应对策略。

就算实在搞不定,专门搞一个浏览器,就真实地跑校验字段生成,然后把结果给其他自动化的部分用也可以。


大致上就是这样了。对抗的路线最终都会转换成为“对抗成本”的问题。而且从技术原理上说,攻击方是永远可以看到代码的(尽管可能是混淆版本),所以根本藏不住。
streamrx
1 天前
这东西是非常复杂的一套方案
ragnaroks
1 天前
这个问题本质上是怎么在客户端做防御,看看网络游戏清一色上内核级反作弊就知道是不现实的了
lnbiuc
22 小时 24 分钟前
TLS 指纹 JA3 指纹 JA3S 指纹
y1y1
22 小时 19 分钟前
楼上大牛那么多,谁来教教我怎么过 cf 验证?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1161719

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX