V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
owen800q
V2EX  ›  程序员

Google 推出 Web Environment Integrity 极大争议性,会否影响 web 爬虫?

  •  3
     
  •   owen800q · 276 天前 · 3136 次点击
    这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    四名 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

    25 条回复    2023-09-03 16:38:45 +08:00
    bertonzh
        1
    bertonzh  
       276 天前
    看上去跟爬虫没有任何关系。一个网站能不能爬,取决于网站的服务端安全措施,而不是访问网站的客户端。
    爬虫 -> 客户端
    反爬虫 -> 服务端

    这个 API 是客户端( Chrome )引入的,关反爬虫什么事呢?
    bertonzh
        2
    bertonzh  
       276 天前
    我刚才再看了下,是我理解错了,sorry
    pocarisweat
        3
    pocarisweat  
       276 天前
    Mozilla 的反对声音从来都只能表个态,这么多次,Chromium 先斩后奏 Firefox 也只能跟了,反正也不会真有多少人迁移到 Firefox. Chrome 的用户粘性是比苹果高多了,认识的 iOS 开发几乎没有不骂苹果的,但前端开发真有不少人把谷歌当爹捏。
    bertonzh
        4
    bertonzh  
       276 天前
    尴尬了,v2ex 没办法删掉评论吗。。
    owen800q
        5
    owen800q  
    OP
       276 天前
    @bertonzh 现实是一大堆外国网站没有反爬,不少项目的爬虫都是依赖用 headless chrome 直接解析 Html 拿到的数据,至少我司接近 9 成的项目都是这样,不可能花时间逆向 API, headless 肯定是没法拿到 token 的,这就相当于原来没有反爬措施的网站多了一层天然屏障, 生产环境在跑的服务都会挂掉
    bertonzh
        6
    bertonzh  
       276 天前
    我又思考了一下,这个措辞会对爬虫造成一定的影响,但是并不是噩梦。
    简单说,Chrome 是开源的,爬虫方只要修改一下 Chrome ,把这个检测绕过(让服务端以为是安全环境)就行了,这个应该在很容易实现。

    争议的点应该是针对用户隐私方面的(大多数用户也不会安装修改版 Chrome ,除非 Edge 等去掉这个东西),我觉得。
    bertonzh
        7
    bertonzh  
       275 天前
    总之,我在一楼的结论是没问题的,网站反爬是服务端的需求,只能服务端来做。客户端能做的比较有限,尤其是开源产品。
    owen800q
        8
    owen800q  
    OP
       275 天前
    @bertonzh 我看了下草稿,token google 是建议由 CDN 方下发,类似 cloudflare, 通过环境验证后,CDN 下发 token, 同时在 CDN 会下发一个私钥后端,只有和后端的对得上,网站方才会返回数据, 就算自己编译 chrome, 去掉了环境检测,还是没办法绕过后端验证
    wushenlun
        9
    wushenlun  
       275 天前
    问题是这个 api 能不能被 hook ,如果能这么做除了干扰正常用户,几乎没有意义
    bertonzh
        10
    bertonzh  
       275 天前
    @owen800q
    但是 CDN 下发到哪里呢? Chrome
    环境验证是谁来做呢?还是 Chrome 吧,应该不可能是 CDN 来验证你的环境

    最简单的办法,你把 Chrome 里面环境验证的这部分代码改成始终 `return true`,不就绕过了吗?
    bertonzh
        11
    bertonzh  
       275 天前
    原来这个验证是远程的?
    bertonzh
        12
    bertonzh  
       275 天前
    那看来还是我理解的不对,这比我想的恶心很多啊。。。
    有点天网的感觉了
    bertonzh
        13
    bertonzh  
       275 天前
    不过,如果第三方 Attestation API 挂掉了会如何?而且国内访问国外的 Attestation API 肯定访问不了,那么到时候应该是国外有国外的 Attestation 服务,国内有国内的。。。那么 Attestation 的公正性和权威性是如何保证的呢?
    bertonzh
        14
    bertonzh  
       275 天前
    现在又感觉这个东西就是一个外挂版的 Cloudflare 防火墙。
    传统的 Cloudflare 防火墙是拦在用户和网站服务器之间的。
    这个东西,是在用户和服务器之外的第三方,形成了一个类似三角形的结构。

    相比之前,传统的 Cloudflare 防火墙是过滤了所有流量,网站的成本较高。
    而这个方案下,主流量还是用户和网站之间的,跟“外挂防火墙”之间只存在少量的联系,所以网站不需要支付对应的防火墙成本。防火能力也比较局限。
    owen800q
        15
    owen800q  
    OP
       275 天前 via iPhone
    @
    @bertonzh 感觉除非可以欺骗 Attestation 当前是正常环境。拿到 token 才能通过后端验证,这玩意是不是抄国内大𠂆的无感验证码啊,感觉有点像
    bertonzh
        16
    bertonzh  
       275 天前
    @owen800q 差不多是这个意思
    james122333
        17
    james122333  
       275 天前 via Android
    这太王八了 差不多要弃用了
    Jirajine
        18
    Jirajine  
       275 天前   ❤️ 1
    早说过让 Google 掌握 web 标准的后果,现在后果来了。
    以后银行、openai 、nf 等网站只能用 chrome/edge 打开,chromium 和各种 fork 修改版、或者装了不被允许的插件都通不过验证。当然也包括基于 headless 浏览器的爬虫。Firefox 反对那就 Firefox 也打不开,反正它又没有用户量。

    欧盟别在哪里纠结什么手机能不能换电池了,赶紧立法禁止一切 root of trust 不包括用户的 trusted computing 。
    whileFalse
        19
    whileFalse  
       275 天前 via Android
    @owen800q cdn 怎么检测你的环境的?
    mrtctl
        20
    mrtctl  
       275 天前
    @whileFalse 看了下有点类似于苹果的 Private Access Token ?由苹果验证 iOS 设备的真实性 & 访问频率,然后返回签名。浏览器带着签名去访问网页,服务器验证是苹果签发的再放行。

    Chrome 上不知道要怎么实现,不过安卓端谷歌可以控制( SafetyNet 之类的),Windows 端现在也强制 TPM 了,理论上似乎是可以 TPM -> Secure Boot -> 可信 Kernel -> 可信 App -> 签名一条龙。
    lizhenda
        21
    lizhenda  
       275 天前
    确实有点恶心了
    ww940521
        22
    ww940521  
       275 天前
    保护版权好事情啊。
    MrKrabs
        23
    MrKrabs  
       275 天前
    信谷狗早死早超生
    owen800q
        24
    owen800q  
    OP
       275 天前 via iPhone
    @ww940521 这对爬虫是致命性打击,到时候又一大堆人失业啊,至少我司 9 成 web 数据采集的项目绝对挂掉🥲
    zzzkkk
        25
    zzzkkk  
       237 天前 via Android
    @owen800q
    google 的爬虫不需要验证吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2492 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:47 · PVG 23:47 · LAX 08:47 · JFK 11:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.