1
jiuhuicinv 2 天前
UA?
|
![]() |
2
shuiduoduo 2 天前 via iPhone
无解
|
![]() |
3
leokun OP @jiuhuicinv 这是最容易模拟的
|
![]() |
4
shuiduoduo 2 天前 via iPhone ![]() 各种无头浏览器
|
5
pingdog 2 天前 via Android
买 ip 库,检测到 proxy/idc 跑 js PoW ,captcha 验证码,加 fingerprint 差不多了,再搞多就不化算,防的成本多于攻
|
6
fyq 2 天前
用户雇个大学生手动操作也就 3000 一个月
|
7
iOCZS 2 天前
不能,只能结合行为做上下文分析
|
![]() |
8
leokun OP 想到一个麻烦的办法,也是爬虫模拟与真实操作的本质区别
在访问网页时,真实的业务访问是连续的,间隔的,同一个用户在特定的业务中是不可能出现并发的,即使用户模拟 js 很厉害,但是在模拟业务次序,调整请求间隔上很难做到与真实用户一样 |
![]() |
9
wy315700 2 天前
|
10
longzhou6431 2 天前
可以考虑拒绝掉新建连接的第一个请求包,这样可以确保地址不被探活
|
11
Donahue 2 天前
浏览器 ja3 签名/浏览器指纹之类的
|
![]() |
12
MYDB 2 天前 via iPhone ![]() 这属于攻防了,对方水平很高,那建议花更多的钱请个高人或者找业内顶尖团队,否则记录日志就能挡住一些新手写的爬虫了
|
![]() |
13
nekoneko 2 天前
无解
最多是对前端请求做个摘要, 后端接到后进行验证, 这个只能提高门槛 另外就是加蜜罐, 这样能知道哪些用户是不正常的. |
![]() |
14
lambdaq 2 天前
用户模拟 js 的水平很高?
用户直接上无头浏览器! |
15
triptipstop 2 天前
调用 GPU 不给用的 直接怕黑
|
16
voidemoer 2 天前
比较有效的方法一是带上各种人机交互验证,二是监控用户鼠标轨迹
但是对抗情形下,都有破解的方法:第三方解码、多轨迹回放,只不过会大大增加攻击者的成本 |
17
deplives 2 天前
你说的这个无非就是反爬,没有最终的方案,都只是攻防而已
|
![]() |
19
yianing 2 天前 via Android
无解,人家用无头浏览器,ai 操作
|
![]() |
20
miyuki 2 天前
无非猫捉老鼠,后台搞个无头浏览器
|
![]() |
21
ejin 2 天前
油猴脚本,请求完全是浏览器发出和渲染,你怎么破,哈哈哈
|
22
laggage 2 天前
hmmm, 不能加验证码吗,请求前 js 弹出验证码框,验证通过才给请求?
|
![]() |
23
play78 2 天前
定时更新前端代码和后端接口及加密请求方式,业务流程。只要你改得足够快,模拟的人就跟不上。
很简单,你前后端稍微改一下业务流程,逆向的人,要花 10 倍的时间去梳理。只要成本与收益不匹配。就没人去做。 |
![]() |
24
duanxianze 2 天前
不可能的,只能用各种人机验证,验证码来预防
|
25
Rickkkkkkk 2 天前
用户直接手点浏览器你感觉能区分吗?
|
27
zachariahss 2 天前
单请求没办法,请求前的页面渲染状态,埋点,加载状态,鼠标轨迹,行为逻辑分析,一系列东西去判断,但是防不住真想和你做对抗的人....这东西都是一整个团队用上各种手段去尝试,对抗,没啥一劳永逸的办法
|
![]() |
28
akakidz 2 天前
本质上,这类问题没有绝对的防御手段。对抗方式往往是一个“试错博弈”的过程,如果用户的试错成本足够低,那么无论你做多少防护,他总能找到突破口。关键在于如何提高用户的试错成本,而不是通过技术手段杜绝爬虫
|
![]() |
29
Ketteiron 2 天前
这个问题等价于如何防止爬虫
答案是防不了 人机验证 通过接码平台解决 五秒挑战,参考 Cloudflare 5 秒盾,浏览器静默执行一段 js 脚本,识别当前是否是正常环境 通过无头浏览器解决 浏览器指纹验证 https://github.com/fingerprintjs/fingerprintjs 但它是开源的,攻击者依然可以想办法绕过 tls 指纹识别,cloudflare 等云厂商通过对所有开源请求库做特征库,能识别一个请求是否通过浏览器正常发送,甚至能识别无头浏览器 但可惜可以无头浏览器+伪造特征 再来就是老一套的混淆接口加解密 没啥用,5 分钟以内就能破 |
![]() |
30
MHPSY 2 天前
有一个 brightdata ,可以搜索一下
他们提供完整的无头浏览器远程的方案,包括自动过验证码,自动过 5 秒盾,几乎只需要写拿数据的业务逻辑就可以了,很方便。 很难爬的数据我就用这个搞,基本都能搞定 |
![]() |
31
Ketteiron 2 天前
人机验证算是最有效的防护手段了,双方硬拼钱包,但已经渐渐出现 AI 接码服务,攻击者成本会越来越低。
|
32
dddd1919 2 天前
也可以 RPA 操作浏览器,无解
|
36
AutumnVerse 2 天前 via iPhone
直接上 cf 盾,如果这都被破解,那就认了吧
|
![]() |
37
bzw875 2 天前
通通加上人机验证,图片验证码
|
![]() |
38
lavvrence 2 天前
https://lawrenceli.me/blog/cloudflare#client-hello---ja3
基于 TLS 的 JA3/JA4 指纹。 |
39
felixsama969 2 天前
被针对是无解的
|
![]() |
40
hahahalololo 2 天前
@Ketteiron 5 分钟!!大佬!!!我碰到 js 混淆加密,经常看半天都找不到破解方法
|
![]() |
41
kxg3030 2 天前
以前还有 tls 指纹的 现在 也是轻松过了 放弃吧
|
43
macaodoll 2 天前
我就是做爬虫的,无解
|
44
dode 2 天前
查看 UA ,操作系统,HTTP 请求头
|
45
dode 2 天前
统统随机人机验证验证码
|
![]() |
46
mightybruce 2 天前
|
47
DimensionalBoy 2 天前
你防住我的同时也会防住某些客户,然后客户:你的产品真难用
|
48
hnliuzesen 2 天前
TLS 握手指纹,不过可以模拟
|
![]() |
49
iorilu 2 天前
为什么要模拟 js
现在都是直接程序控制浏览器阿, 确实都是浏览器的访问 |
50
unused 2 天前
浏览器是啥
|
51
whp1473 2 天前
这个不能完全实现,但如果你希望是从自己的产品网页发出则是可以实现的,可以通过 js 代码记录全面的用户行为记录,然后发送行为记录数据,比如鼠标的移动、颤动、停顿、页面的切换等等,模拟成本无限拔高。
|
![]() |
52
Kinnice 2 天前 via Android
埋暗点,比如某几个.js/jpg 返回是 js/jpg 内容,但是实际是后端用来检测是不是爬虫的一个暗点
需要配合:别直接 ban 对方指纹,而是随机延迟返回,接口随机 50x 报错,假数据 只针对那种纯发包的爬虫场景,模拟浏览器的还要结合浏览器指纹/ip/一些 hack api ,随机的高级别验证码等 |
![]() |
53
KagurazakaNyaa 2 天前
https://github.com/TecharoHQ/anubis 上阿努比斯,每个请求都要计算,正常用户在一个设备上不会有很高频率的请求,爬虫才会
|
![]() |
56
cheng6563 2 天前
要求客户客户端挖个矿
|
![]() |
57
linxiaojialin 2 天前
@Ketteiron 你好,请教一下,假如需要长时间(例如 24 小时不间断地)爬取一个电商的页面,而它有 CF 盾,同时要和其他人抢购不定时刷新出来的秒杀商品,请问有办法确保不会被屏蔽并尽量抢购到商品吗?
|
![]() |
58
dosmlp 2 天前
无解,反正什么样的数据都可以伪装
|
![]() |
59
aino 2 天前 ![]() 好事,攻防对抗 无休无止 又可以让老板多投点资源进来了
|
61
artiga033 2 天前 via Android ![]() 要不人脸识别吧,也别管是人还是自动程序了,反正你就要求个人坐在摄像头前面
|
![]() |
62
byasm32 1 天前
29 楼总结的挺完整的了。
|
64
liudewa 1 天前
@Ketteiron #55 https://m.wandacinemas.com/login 大佬登录流程跑通
|
![]() |
66
EndlessMemory 1 天前
行为轨迹
|
![]() |
67
yb2313 1 天前
唯一的办法就是行为监测,但这很容易误伤正常用户,检测是否是人类的算法再完美也没用,到最后就是猛弹窗验证码,肥了打码平台,公开数据真那么重要还不如直接开放合理定价(不合理人家还是选择爬)的 pai 付费接口,钱捞到才是真的。
|
![]() |
68
viking602 1 天前
其实无解 你只能从用户行为上进行判断 比如短时间内获取了大量数据这种很大概率是有问题的
|
![]() |
70
Ketteiron 1 天前
@linxiaojialin #57 可以实现,js 逆向是基本功,摸清用户行为控制的级别和边界,看情况上分布式、退避算法、接入 AI 。
为了不给灰产送子弹,不会提供具体细节。 |
![]() |
71
Ketteiron 1 天前
@yb2313 #67 接入 AI+MCP 后行为监测也没用了,cloudflare 现在是用 AI 去识别用户是否是 AI ,识别率感人,喜欢用纯键盘(比如我)翻网页的人几乎被误伤到没法用了。
|
74
Huelse 1 天前
最简单的就是加验证码,有个验证码方案是 hash 算力检测,无头浏览器基本过不了,可以访问 openwrt.org 看看。
然后就是链接行为检测了,TLS 握手、指纹等等,这方面最擅长的是 GFW... |
![]() |
75
Ketteiron 1 天前
@liudewa #72 请求验证码接口 电话号码明文,得到 requestID
请求登录接口,也全是明文,然后直接就登进去了 后续看了下改地址、选电影院也没有什么问题 兄弟,你不会连构造 cookie 都不会吧,玩这套流程让我回到了二十年前。 |
79
yulon 1 天前
这个方向是错的,客户端 0 信任
|
![]() |
80
pocketz 1 天前
在互联网上,没人知道你是一条狗.jpg
|
![]() |
81
wangtian2020 1 天前
没有任何办法,一个东西他像用户,那他就是用户
|
![]() |
84
andforce 1 天前
cloudflare 验证码
可以识别是用户还是模拟,我至今没找到能破解的方法。 用无头浏览器也不行,还是你能识别是不是人类 |
![]() |
86
hereIsChen 1 天前
以前听过一个方法,防无头浏览器,就是页面内弄一个隐藏的 a 标签,普通用户是看不到的;
如果这个标签被访问了,就肯定不是正常访问到的 |
87
Dora112233 1 天前
页面放个隐藏图片,没加载过图片的就是非浏览器访问。
|
![]() |
88
ljl024 1 天前
|
![]() |
89
realpg PRO 高级点的机器人检测都是公司最核心的知识产权价值...
为什么总有人觉得去论谈发个帖就能拿到... 这玩意给个思路的价值都很离谱 |
90
xiaojie668329 1 天前
我直接 CDP 操作浏览器,你如何应对
|
![]() |
91
wjpauli 1 天前
你可以研究下指纹技术
|
92
ExplodingDragon 1 天前
playwright 搭配 chrome cdp 拦截掉暴露的接口几乎无解,任何用户操作均可模拟,做并发限制不把服务搞崩就行
|
![]() |
93
oyama 1 天前 via iPhone
ja3 已经能绕了,虾皮就是用的 ja3 ,老好绕了
|
![]() |
94
777777 1 天前
必须登录,然后验证手机号,增加攻击者成本,想爬的多就要加钱买账号
|
![]() |
95
llsquaer 1 天前
生成一万个 js 不同 key 的加密脚本可以防脚本。但如果是模拟的话还是得增加前端逆向难度。不过高手基本能跑的过。就算这些都防住了。能防按键精灵之类的么?看来还是不得行。
|
![]() |
96
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 代码都检测了哪些环境信息,又有一些插桩、自吐的应对策略。 就算实在搞不定,专门搞一个浏览器,就真实地跑校验字段生成,然后把结果给其他自动化的部分用也可以。 大致上就是这样了。对抗的路线最终都会转换成为“对抗成本”的问题。而且从技术原理上说,攻击方是永远可以看到代码的(尽管可能是混淆版本),所以根本藏不住。 |
97
streamrx 1 天前 via iPhone
这东西是非常复杂的一套方案
|
![]() |
98
ragnaroks 1 天前
这个问题本质上是怎么在客户端做防御,看看网络游戏清一色上内核级反作弊就知道是不现实的了
|
99
lnbiuc 1 天前
TLS 指纹 JA3 指纹 JA3S 指纹
|
![]() |
100
y1y1 1 天前 via iPhone
楼上大牛那么多,谁来教教我怎么过 cf 验证?
|