四名 Google 开发者——其中至少一人是隐私沙盒( Privacy Sandbox )团队成员——提出了一个新的 Web 标准 Web Environment Integrity API 。该 API 在功能上类似苹果的 App Attest 和 Android 的 Play Integrity API ,以 Play Integrity API 为例,如果它检测到 Android 设备获得了 root 访问权限,不管是用户做的还是恶意程序做的,那么特定应用程序如银行或钱包应用将会拒绝运行。换句话说,Google 想要在 Web 上创造某种 DRM 。这一提议引发了广泛争议。浏览器 Firefox 的开发商 Mozilla 已经表达了反对意见,
相关实现已 commit 到 chromium
https://github.com/chromium/chromium/commit/6f47a22906b2899412e79a2727355efa9cc8f5bd
对这个 API 设计不太了解,没理解错的话,只有通过运行环境验证,网话会下发一个 token ,后续所有访问,包括 API 请求要有这个 token ,才会允许返回数据. 业界应该不少数据采集项目,这对 web 爬虫界是噩梦吗
參考: https://interpeer.io/blog/2023/07/google-vs-the-open-web/ https://news.ycombinator.com/item?id=36875226 https://news.ycombinator.com/item?id=36817305 https://news.ycombinator.com/item?id=36778999 https://news.ycombinator.com/item?id=36785516
1
bertonzh 2023-07-26 23:30:49 +08:00
看上去跟爬虫没有任何关系。一个网站能不能爬,取决于网站的服务端安全措施,而不是访问网站的客户端。
爬虫 -> 客户端 反爬虫 -> 服务端 这个 API 是客户端( Chrome )引入的,关反爬虫什么事呢? |
2
bertonzh 2023-07-26 23:35:21 +08:00
我刚才再看了下,是我理解错了,sorry
|
3
pocarisweat 2023-07-26 23:35:37 +08:00
Mozilla 的反对声音从来都只能表个态,这么多次,Chromium 先斩后奏 Firefox 也只能跟了,反正也不会真有多少人迁移到 Firefox. Chrome 的用户粘性是比苹果高多了,认识的 iOS 开发几乎没有不骂苹果的,但前端开发真有不少人把谷歌当爹捏。
|
4
bertonzh 2023-07-26 23:37:44 +08:00
尴尬了,v2ex 没办法删掉评论吗。。
|
5
owen800q OP @bertonzh 现实是一大堆外国网站没有反爬,不少项目的爬虫都是依赖用 headless chrome 直接解析 Html 拿到的数据,至少我司接近 9 成的项目都是这样,不可能花时间逆向 API, headless 肯定是没法拿到 token 的,这就相当于原来没有反爬措施的网站多了一层天然屏障, 生产环境在跑的服务都会挂掉
|
6
bertonzh 2023-07-26 23:42:21 +08:00
我又思考了一下,这个措辞会对爬虫造成一定的影响,但是并不是噩梦。
简单说,Chrome 是开源的,爬虫方只要修改一下 Chrome ,把这个检测绕过(让服务端以为是安全环境)就行了,这个应该在很容易实现。 争议的点应该是针对用户隐私方面的(大多数用户也不会安装修改版 Chrome ,除非 Edge 等去掉这个东西),我觉得。 |
7
bertonzh 2023-07-26 23:48:01 +08:00
总之,我在一楼的结论是没问题的,网站反爬是服务端的需求,只能服务端来做。客户端能做的比较有限,尤其是开源产品。
|
8
owen800q OP @bertonzh 我看了下草稿,token google 是建议由 CDN 方下发,类似 cloudflare, 通过环境验证后,CDN 下发 token, 同时在 CDN 会下发一个私钥后端,只有和后端的对得上,网站方才会返回数据, 就算自己编译 chrome, 去掉了环境检测,还是没办法绕过后端验证
|
9
wushenlun 2023-07-26 23:52:15 +08:00
问题是这个 api 能不能被 hook ,如果能这么做除了干扰正常用户,几乎没有意义
|
10
bertonzh 2023-07-26 23:53:26 +08:00
@owen800q
但是 CDN 下发到哪里呢? Chrome 环境验证是谁来做呢?还是 Chrome 吧,应该不可能是 CDN 来验证你的环境 最简单的办法,你把 Chrome 里面环境验证的这部分代码改成始终 `return true`,不就绕过了吗? |
11
bertonzh 2023-07-26 23:57:52 +08:00
原来这个验证是远程的?
|
12
bertonzh 2023-07-26 23:59:06 +08:00
那看来还是我理解的不对,这比我想的恶心很多啊。。。
有点天网的感觉了 |
13
bertonzh 2023-07-27 00:05:30 +08:00
不过,如果第三方 Attestation API 挂掉了会如何?而且国内访问国外的 Attestation API 肯定访问不了,那么到时候应该是国外有国外的 Attestation 服务,国内有国内的。。。那么 Attestation 的公正性和权威性是如何保证的呢?
|
14
bertonzh 2023-07-27 00:13:16 +08:00
现在又感觉这个东西就是一个外挂版的 Cloudflare 防火墙。
传统的 Cloudflare 防火墙是拦在用户和网站服务器之间的。 这个东西,是在用户和服务器之外的第三方,形成了一个类似三角形的结构。 相比之前,传统的 Cloudflare 防火墙是过滤了所有流量,网站的成本较高。 而这个方案下,主流量还是用户和网站之间的,跟“外挂防火墙”之间只存在少量的联系,所以网站不需要支付对应的防火墙成本。防火能力也比较局限。 |
15
owen800q OP @
@bertonzh 感觉除非可以欺骗 Attestation 当前是正常环境。拿到 token 才能通过后端验证,这玩意是不是抄国内大𠂆的无感验证码啊,感觉有点像 |
17
james122333 2023-07-27 01:28:41 +08:00 via Android
这太王八了 差不多要弃用了
|
18
Jirajine 2023-07-27 06:04:43 +08:00 1
早说过让 Google 掌握 web 标准的后果,现在后果来了。
以后银行、openai 、nf 等网站只能用 chrome/edge 打开,chromium 和各种 fork 修改版、或者装了不被允许的插件都通不过验证。当然也包括基于 headless 浏览器的爬虫。Firefox 反对那就 Firefox 也打不开,反正它又没有用户量。 欧盟别在哪里纠结什么手机能不能换电池了,赶紧立法禁止一切 root of trust 不包括用户的 trusted computing 。 |
19
whileFalse 2023-07-27 06:22:22 +08:00 via Android
@owen800q cdn 怎么检测你的环境的?
|
20
mrtctl 2023-07-27 07:32:26 +08:00
@whileFalse 看了下有点类似于苹果的 Private Access Token ?由苹果验证 iOS 设备的真实性 & 访问频率,然后返回签名。浏览器带着签名去访问网页,服务器验证是苹果签发的再放行。
Chrome 上不知道要怎么实现,不过安卓端谷歌可以控制( SafetyNet 之类的),Windows 端现在也强制 TPM 了,理论上似乎是可以 TPM -> Secure Boot -> 可信 Kernel -> 可信 App -> 签名一条龙。 |
21
lizhenda 2023-07-27 09:17:15 +08:00
确实有点恶心了
|
22
ww940521 2023-07-27 10:03:51 +08:00
保护版权好事情啊。
|
23
MrKrabs 2023-07-27 10:07:42 +08:00
信谷狗早死早超生
|